summaryrefslogtreecommitdiff
path: root/shell.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell.c')
-rw-r--r--shell.c43
1 files changed, 19 insertions, 24 deletions
diff --git a/shell.c b/shell.c
index 553f3c1..091ec08 100644
--- a/shell.c
+++ b/shell.c
@@ -26,10 +26,9 @@
# include <config.h>
#endif
+#include <sys/types.h>
+
#if defined (HAVE_UNISTD_H)
-# ifdef _MINIX
-# include <sys/types.h>
-# endif
# include <unistd.h>
#endif /* HAVE_UNISTD_H */
@@ -45,22 +44,16 @@
# include <strings.h>
#endif /* !HAVE_STRING_H */
-extern char *xmalloc (), *xrealloc ();
+#include <pwd.h>
-#if !defined (SHELL)
+#if !defined (HAVE_GETPW_DECLS)
+extern struct passwd *getpwuid ();
+#endif /* !HAVE_GETPW_DECLS */
-#ifdef savestring
-#undef savestring
-#endif
+extern char *xmalloc ();
-/* Backwards compatibility, now that savestring has been removed from
- all `public' readline header files. */
-char *
-savestring (s)
- char *s;
-{
- return ((char *)strcpy (xmalloc (1 + (int)strlen (s)), (s)));
-}
+/* All of these functions are resolved from bash if we are linking readline
+ as part of bash. */
/* Does shell-like quoting using single quotes. */
char *
@@ -126,13 +119,15 @@ get_env_value (varname)
return ((char *)getenv (varname));
}
-#else /* SHELL */
-extern char *get_string_value ();
-
char *
-get_env_value (varname)
- char *varname;
+get_home_dir ()
{
- return get_string_value (varname);
-}
-#endif /* SHELL */
+ char *home_dir;
+ struct passwd *entry;
+
+ home_dir = (char *)NULL;
+ entry = getpwuid (getuid ());
+ if (entry)
+ home_dir = entry->pw_dir;
+ return (home_dir);
+}