Adapt dtlogin/config/_common.ksh.src for OpenBSD:
[oweals/cde.git] / cde / programs / dtlogin / dm.c
index 52bcb902f5accb81a6c62f528a248bc48bdea8fd..87fab04cc8ab78eb9f9f419780729d38e5229418 100644 (file)
@@ -53,7 +53,7 @@
 
 # include      <sys/signal.h>
 # include      <sys/stat.h>
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) && OSMAJORVERSION > 8
 # include      <utmpx.h>
 #else
 # include      <utmp.h>
@@ -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);