Update and add copyright.
[gnulib.git] / lib / getusershell.c
index 2607535..d3158d3 100644 (file)
 /* Written by David MacKenzie <djm@gnu.ai.mit.edu> */
 
 #ifdef HAVE_CONFIG_H
-#if defined (CONFIG_BROKETS)
-/* We use <config.h> instead of "config.h" so that a compilation
-   using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h
-   (which it would do because it found this file in $srcdir).  */
 #include <config.h>
-#else
-#include "config.h"
-#endif
 #endif
 
 #ifndef SHELLS_FILE
@@ -43,6 +36,8 @@ char *malloc ();
 char *realloc ();
 #endif
 
+char *xstrdup ();
+
 static int readname ();
 
 /* List of shells to use if the shells file is missing. */
@@ -65,6 +60,8 @@ static char *line = NULL;
 static int line_size = 0;
 \f
 /* Return an entry from the shells file, ignoring comment lines.
+   If the file doesn't exist, use the list in DEFAULT_SHELLS (above).
+   In any case, the returned string is in memory allocated through malloc.
    Return NULL if there are no more entries.  */
 
 char *
@@ -74,7 +71,7 @@ getusershell ()
     {
       if (default_shells[default_index])
        /* Not at the end of the list yet.  */
-       return default_shells[default_index++];
+       return xstrdup (default_shells[default_index++]);
       return NULL;
     }
 
@@ -85,7 +82,7 @@ getusershell ()
        {
          /* No shells file.  Use the default list.  */
          default_index = 1;
-         return default_shells[0];
+         return xstrdup (default_shells[0]);
        }
     }