/* Written by David MacKenzie <djm@gnu.ai.mit.edu> */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#ifndef SHELLS_FILE
/* File containing a list of nonrestricted shells, one per line. */
#define SHELLS_FILE "/etc/shells"
char *realloc ();
#endif
+char *xstrdup ();
+
static int readname ();
/* List of shells to use if the shells file is missing. */
-static char *default_shells[] =
+static char const* const default_shells[] =
{
"/bin/sh", "/bin/csh", "/usr/bin/sh", "/usr/bin/csh", 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 *
{
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;
}
{
/* No shells file. Use the default list. */
default_index = 1;
- return default_shells[0];
+ return xstrdup (default_shells[0]);
}
}