X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=cde%2Fprograms%2Fdtlogin%2Fdm.c;h=87fab04cc8ab78eb9f9f419780729d38e5229418;hb=aa470d2e3adede4d625a843a14ab663587645c1a;hp=52bcb902f5accb81a6c62f528a248bc48bdea8fd;hpb=89e76b2e9bfe4375ecbedf8464906f08b4493b56;p=oweals%2Fcde.git diff --git a/cde/programs/dtlogin/dm.c b/cde/programs/dtlogin/dm.c index 52bcb902..87fab04c 100644 --- a/cde/programs/dtlogin/dm.c +++ b/cde/programs/dtlogin/dm.c @@ -53,7 +53,7 @@ # include # include -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && OSMAJORVERSION > 8 # include #else # include @@ -122,7 +122,7 @@ static long StorePid( void ) ; static void TerminateProcess( int pid, int sig) ; static void UnlockPidFile( void ) ; static void dtMakeDefaultDir( void ); -static void dtmkdir(char *dir, mode_t dir_mode); +static void dtmkdir(char *dir, mode_t dir_mode, int force); @@ -1697,8 +1697,13 @@ GettyMessage( struct display *d, int msgnum ) int GettyRunning( struct display *d ) { +#if defined(__FreeBSD__) && OSMAJORVERSION > 8 + struct utmpx utmp; /* local struct for new entry */ + struct utmpx *u; /* pointer to entry in utmp file */ +#else struct utmp utmp; /* local struct for new entry */ struct utmp *u; /* pointer to entry in utmp file */ +#endif int rvalue; /* return value (TRUE or FALSE) */ char buf[32]; @@ -1717,7 +1722,11 @@ GettyRunning( struct display *d ) return FALSE; +#if defined(__FreeBSD__) && OSMAJORVERSION > 8 + bzero(&utmp, sizeof(struct utmpx)); +#else bzero(&utmp, sizeof(struct utmp)); +#endif #ifdef _AIX if (!strcmp(d->gettyLine,"console")) { @@ -1868,15 +1877,15 @@ MarkShutdownTime( void ) static void dtMakeDefaultDir( void ) { - dtmkdir("/var", 0775); - dtmkdir("/var/dt", 0755); - dtmkdir("/var/dt/tmp", 0755); - dtmkdir("/var/dt/appconfig", 0755); - dtmkdir("/var/dt/appconfig/appmanager", 0755); + dtmkdir("/var", 0755, 0); + dtmkdir("/var/dt", 0755, 1); + dtmkdir("/var/dt/tmp", 0755, 1); + dtmkdir("/var/dt/appconfig", 0755, 1); + dtmkdir("/var/dt/appconfig/appmanager", 0755, 1); } static void -dtmkdir(char *dir, mode_t dir_mode) +dtmkdir(char *dir, mode_t dir_mode, int force) { struct stat file_status; @@ -1889,7 +1898,7 @@ dtmkdir(char *dir, mode_t dir_mode) LogError((unsigned char *)"Unable to create dir %s\n", dir); } } else { - if ( (file_status.st_mode & dir_mode) != dir_mode) { + if ( force && (file_status.st_mode & dir_mode) != dir_mode) { /** try to set correct permissions **/ if ( chmod(dir, file_status.st_mode | dir_mode) == 0) { Debug("Set permissions on %s\n", dir);