[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Another possible slink goal (multipackages users profile)



On Mon, 27 Jul 1998 20:47:23 -0400 Raul Miller wrote:
> Also, note that window managers started up by xdm don't start up
> login shells.  I presume that that means that xdm would have to have a
> similar script?
FWIW, I've hacked my local xdm to read /etc/environment as login and ssh
already do (I forgot wether I got this solution from this mailing list or
wether I did it myself [the idea was surely from a discussion on 
debian-devel]).

David
--- verify.c.orig	Tue May 27 08:22:28 1997
+++ verify.c	Sat Feb 28 02:34:09 1998
@@ -87,6 +87,9 @@
     char	**envvar;
     char	*str;
     extern char **defaultEnv (), **setEnv ();
+    FILE *     fd;
+    char       buffer[1024], buffer2[1024];
+    char	*mail, *maildir;
     
     env = defaultEnv ();
     env = setEnv (env, "DISPLAY", d->name);
@@ -101,6 +104,72 @@
 	if (str)
 	    env = setEnv (env, *envvar, str);
     }
+
+#if defined(linux)
+#if defined(USESHADOW)
+    if (fd = fopen("/etc/login.defs","r"))
+    {
+       while (fgets(buffer,sizeof(buffer),fd)==buffer)
+       {
+	   if (buffer[0] != '#') 
+	   {
+               char *cp;
+	       int hz;
+
+	       if (sscanf(buffer, "MAIL_DIR %s\n", buffer2) == 1)
+	       {
+		   maildir=strdup(buffer2);
+	       }
+	       else if (sscanf(buffer, "ENV_HZ HZ=%d\n", &hz) == 1)
+	       {
+		   char hzstr[10]; /* XXX */
+
+		   sprintf(hzstr,"%d", hz);
+                   env = setEnv(env, "HZ", hzstr);
+	       }
+	   }
+       }
+       fclose(fd);
+    }
+#else
+#define MAILSPOOL "/var/spool/mail"
+    maildir=MAILSPOOL;
+#endif
+
+    mail=malloc(strlen(maildir)+1+strlen(user)+1);
+    if (mail == NULL) 
+      perror("out of memory");
+
+    sprintf(mail,"%s/%s",maildir,user);
+    env = setEnv (env, "MAIL", mail);
+    free(mail);
+#if defined(USESHADOW)
+    free(maildir);
+#endif
+#endif
+
+    if (fd = fopen("/etc/environment","r"))
+    {
+       while (fgets(buffer,sizeof(buffer),fd)==buffer)
+       {
+	   if (buffer[0] != '#') 
+	   {
+               char *cp;
+
+               cp = strchr(buffer, '\n');
+               if (!cp) break;
+                *cp = '\0';
+               cp = strchr(buffer,'=');
+               if (cp)
+               {
+                   *cp=0;
+                   env = setEnv(env, buffer, ++cp);
+               }
+	   }
+       }
+       fclose(fd);
+    }
+
     return env;
 } 
David Frey (B98D36A9) = 51F35923114FC864 7D05FF173C61EFDE
Those who do not understand Unix are condemned to reinvent it, poorly.
  -- Henry Spencer

Reply to: