Hi,
this is an enhancement patch to fish to use /tmp/user
in case $HOME is not available.

-- ChangeLog --

* fish/src/fi-util.c: get_home_directory () creates and returns
  /tmp/user in case pwent->pw_dir is not present/writable

--

regards,
avati

-- 
Anand V. Avati
Index: fish/src/fi-utils.c
===================================================================
RCS file: /cvsroot/freeipmi/freeipmi/fish/src/fi-utils.c,v
retrieving revision 1.6
diff -p -u -r1.6 fi-utils.c
--- fish/src/fi-utils.c 6 Oct 2005 10:41:09 -0000       1.6
+++ fish/src/fi-utils.c 6 Dec 2005 06:50:06 -0000
@@ -138,12 +138,23 @@ get_home_directory (void)
   uid_t user_id;
   setpwent ();
   user_id = getuid ();
+  char * username = "unknownuser";
+  char * dir;
+
   while ((current_passwd = getpwent ()))
     {
-      if (current_passwd->pw_uid == user_id)
-       return current_passwd->pw_dir;
+      if (current_passwd->pw_uid == user_id) {
+       username = current_passwd->pw_name ? current_passwd->pw_name :
+         username;
+       if (access (current_passwd->pw_dir, R_OK|W_OK|X_OK)) 
+         break;
+       else
+         return current_passwd->pwd_dir;
+      } 
     }
-  return NULL;
+  dir = calloc (strlen ("/tmp") + 1 + strlen (username) + 1, 1);
+  sprintf (dir, "/tmp/%s", username);
+  return mkdir (dir, 0755) ? NULL : dir;
 }
 
 char *
_______________________________________________
Freeipmi-devel mailing list
Freeipmi-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/freeipmi-devel

Reply via email to