diff options
author | Jari Aalto <jari.aalto@cante.net> | 2005-12-07 14:08:12 +0000 |
---|---|---|
committer | Jari Aalto <jari.aalto@cante.net> | 2009-09-12 16:46:57 +0000 |
commit | 95732b497d12c98613bb3c5db16b61f377501a59 (patch) | |
tree | 5e1cdf79eb0407e09dca4c0ec29e11442c7d1d15 /lib/tilde | |
parent | eb87367179effbe5f430236db8259006d71438b7 (diff) | |
download | android_external_bash-95732b497d12c98613bb3c5db16b61f377501a59.tar.gz android_external_bash-95732b497d12c98613bb3c5db16b61f377501a59.tar.bz2 android_external_bash-95732b497d12c98613bb3c5db16b61f377501a59.zip |
Imported from ../bash-3.1.tar.gz.
Diffstat (limited to 'lib/tilde')
-rw-r--r-- | lib/tilde/Makefile.in | 2 | ||||
-rw-r--r-- | lib/tilde/doc/Makefile | 5 | ||||
-rw-r--r-- | lib/tilde/doc/tilde.texi | 0 | ||||
-rw-r--r-- | lib/tilde/tilde.c | 46 | ||||
-rw-r--r-- | lib/tilde/tilde.h | 3 |
5 files changed, 49 insertions, 7 deletions
diff --git a/lib/tilde/Makefile.in b/lib/tilde/Makefile.in index aa7bbf0..a9d3741 100644 --- a/lib/tilde/Makefile.in +++ b/lib/tilde/Makefile.in @@ -4,7 +4,7 @@ # # #################################################################### -# Copyright (C) 1996 Free Software Foundation, Inc. +# Copyright (C) 1996-2005 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/lib/tilde/doc/Makefile b/lib/tilde/doc/Makefile deleted file mode 100644 index a2246db..0000000 --- a/lib/tilde/doc/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -clean distclean mostlyclean maintainer-clean: - rm -f tilde.?? - -all: - cp tilde.texi tilde.info diff --git a/lib/tilde/doc/tilde.texi b/lib/tilde/doc/tilde.texi deleted file mode 100644 index e69de29..0000000 --- a/lib/tilde/doc/tilde.texi +++ /dev/null diff --git a/lib/tilde/tilde.c b/lib/tilde/tilde.c index 154f7f8..d757f7a 100644 --- a/lib/tilde/tilde.c +++ b/lib/tilde/tilde.c @@ -43,7 +43,9 @@ #endif /* HAVE_STDLIB_H */ #include <sys/types.h> +#if defined (HAVE_PWD_H) #include <pwd.h> +#endif #include "tilde.h" @@ -54,8 +56,12 @@ static void *xmalloc (), *xrealloc (); #endif /* TEST || STATIC_MALLOC */ #if !defined (HAVE_GETPW_DECLS) +# if defined (HAVE_GETPWUID) extern struct passwd *getpwuid PARAMS((uid_t)); +# endif +# if defined (HAVE_GETPWNAM) extern struct passwd *getpwnam PARAMS((const char *)); +# endif #endif /* !HAVE_GETPW_DECLS */ #if !defined (savestring) @@ -277,6 +283,39 @@ isolate_tilde_prefix (fname, lenp) return ret; } +#if 0 +/* Public function to scan a string (FNAME) beginning with a tilde and find + the portion of the string that should be passed to the tilde expansion + function. Right now, it just calls tilde_find_suffix and allocates new + memory, but it can be expanded to do different things later. */ +char * +tilde_find_word (fname, flags, lenp) + const char *fname; + int flags, *lenp; +{ + int x; + char *r; + + x = tilde_find_suffix (fname); + if (x == 0) + { + r = savestring (fname); + if (lenp) + *lenp = 0; + } + else + { + r = (char *)xmalloc (1 + x); + strncpy (r, fname, x); + r[x] = '\0'; + if (lenp) + *lenp = x; + } + + return r; +} +#endif + /* Return a string that is PREFIX concatenated with SUFFIX starting at SUFFIND. */ static char * @@ -347,7 +386,11 @@ tilde_expand_word (filename) /* No preexpansion hook, or the preexpansion hook failed. Look in the password database. */ dirname = (char *)NULL; +#if defined (HAVE_GETPWNAM) user_entry = getpwnam (username); +#else + user_entry = 0; +#endif if (user_entry == 0) { /* If the calling program has a special syntax for expanding tildes, @@ -372,8 +415,9 @@ tilde_expand_word (filename) free (username); dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); } - +#if defined (HAVE_GETPWENT) endpwent (); +#endif return (dirname); } diff --git a/lib/tilde/tilde.h b/lib/tilde/tilde.h index f8182c9..c58ce20 100644 --- a/lib/tilde/tilde.h +++ b/lib/tilde/tilde.h @@ -71,6 +71,9 @@ extern char *tilde_expand PARAMS((const char *)); tilde. If there is no expansion, call tilde_expansion_failure_hook. */ extern char *tilde_expand_word PARAMS((const char *)); +/* Find the portion of the string beginning with ~ that should be expanded. */ +extern char *tilde_find_word PARAMS((const char *, int, int *)); + #ifdef __cplusplus } #endif |