Ethereal-dev: [Ethereal-dev] RFC: .ethereal location on Windows

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: "Mark Clayton" <mark@xxxxxxxxxxxxxxxxx>
Date: Tue, 11 Dec 2001 14:48:24 -0800
I would like to propose adding %HOME% as a possible location for
the .ethereal directory on Windows.  For me and my co-workers, 
the directory %HOMEDRIVE%%HOMEPATH% is write protected.  I've
included a patch below if no one has any objections.  Please note
that I am not setup to build ethereal so this patch has not been
compiled or tested.  Also, my Mailer is wrapping the lines of the
patch.  I apologize for this in advance.

Thanks,
Mark



C:\home\claytom>diff -Naurd origfilesystem.c filesystem.c
--- origfilesystem.c    Tue Dec 11 17:14:13 2001
+++ filesystem.c        Tue Dec 11 17:31:46 2001
@@ -286,48 +286,49 @@
        /* Return the cached value, if available */
        if (home)
                return home;
-#ifdef WIN32
-       /*
-        * XXX - should we use USERPROFILE anywhere in this process?
-        * Is there a chance that it might be set but one or more of
-        * HOMEDRIVE or HOMEPATH isn't set?
-        */
-       homedrive = getenv("HOMEDRIVE");
-       if (homedrive != NULL) {
-               homepath = getenv("HOMEPATH");
-               if (homepath != NULL) {
-                       /*
-                        * This is cached, so we don't need to worry 
about
-                        * allocating multiple ones of them.
-                        */
-                       homestring =
-                           g_malloc(strlen(homedrive) + strlen
(homepath) + 1);
-                       strcpy(homestring, homedrive);
-                       strcat(homestring, homepath);

-                       /*
-                        * Trim off any trailing slash or backslash.
-                        */
-                       lastsep = find_last_pathname_separator
(homestring);
-                       if (lastsep != NULL && *(lastsep + 1) == '\0') {
-                               /*
-                                * Last separator is the last character
-                                * in the string.  Nuke it.
-                                */
-                               *lastsep = '\0';
-                       }
-                       home = homestring;
-               } else
-                       home = homedrive;
-       } else {
-               /*
-                * Try using "windir?
-                */
-               home = "C:";
-       }
-#else
        home = getenv("HOME");
        if (home == NULL) {
+#ifdef WIN32
+                /*
+                 * XXX - should we use USERPROFILE anywhere in this 
process?
+                 * Is there a chance that it might be set but one or 
more of
+                 * HOMEDRIVE or HOMEPATH isn't set?
+                 */
+                homedrive = getenv("HOMEDRIVE");
+                if (homedrive != NULL) {
+                        homepath = getenv("HOMEPATH");
+                        if (homepath != NULL) {
+                                /*
+                                 * This is cached, so we don't need to 
worry ab
out
+                                 * allocating multiple ones of them.
+                                 */
+                                homestring =
+                                    g_malloc(strlen(homedrive) + strlen
(homepat
h) + 1);
+                                strcpy(homestring, homedrive);
+                                strcat(homestring, homepath);
+
+                                /*
+                                 * Trim off any trailing slash or 
backslash.
+                                 */
+                                lastsep = find_last_pathname_separator
(homestri
ng);
+                                if (lastsep != NULL && *(lastsep + 1) 
== '\0')
{
+                                        /*
+                                         * Last separator is the last 
character

+                                         * in the string.  Nuke it.
+                                         */
+                                        *lastsep = '\0';
+                                }
+                                home = homestring;
+                        } else
+                                home = homedrive;
+                } else {
+                        /*
+                         * Try using "windir?
+                         */
+                        home = "C:";
+                }
+#else
                /*
                 * Get their home directory from the password file.
                 * If we can't even find a password file entry for them,
@@ -342,8 +343,8 @@
                        home = g_strdup(pwd->pw_dir);
                } else
                        home = "/tmp";
-       }
 #endif
+       }

        return home;
 }

--
Mark Clayton
S/V Brown Pelican
http://www.brown-pelican.com