X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fgetusershell.c;h=4816f968bf438a4340671711db3f6d0d74aa57da;hb=41192272ef9de8840e6d7ad99105d7836d1a9565;hp=75163ac26f9e35268de4a0c739a39be4e4381dd0;hpb=985743b6a147e8c83d1bdd9e6dd87e465a25869b;p=gnulib.git diff --git a/lib/getusershell.c b/lib/getusershell.c index 75163ac26..4816f968b 100644 --- a/lib/getusershell.c +++ b/lib/getusershell.c @@ -22,11 +22,19 @@ #endif #ifndef SHELLS_FILE +# ifndef __DJGPP__ /* File containing a list of nonrestricted shells, one per line. */ -# define SHELLS_FILE "/etc/shells" +# define SHELLS_FILE "/etc/shells" +# else +/* This is a horrible kludge. Isn't there a better way? */ +# define SHELLS_FILE "/dev/env/DJDIR/etc/shells" +# endif #endif #include +#if HAVE_STDLIB_H +# include +#endif #include #include "xalloc.h" @@ -40,9 +48,17 @@ static int readname (); +#if ! defined ADDITIONAL_DEFAULT_SHELLS && defined __MSDOS__ +# define ADDITIONAL_DEFAULT_SHELLS \ + "c:/dos/command.com", "c:/windows/command.com", "c:/command.com", +#else +# define ADDITIONAL_DEFAULT_SHELLS /* empty */ +#endif + /* List of shells to use if the shells file is missing. */ static char const* const default_shells[] = { + ADDITIONAL_DEFAULT_SHELLS "/bin/sh", "/bin/csh", "/usr/bin/sh", "/usr/bin/csh", NULL }; @@ -100,16 +116,8 @@ void setusershell () { default_index = 0; - if (shellstream == NULL) - shellstream = fopen (SHELLS_FILE, "r"); - else - { -#ifdef HAVE_FSEEKO - fseeko (shellstream, 0, 0); -#else - fseek (shellstream, 0L, 0); -#endif - } + if (shellstream) + rewind (shellstream); } /* Close the shells file. */