aboutsummaryrefslogtreecommitdiffstats
path: root/lib/tilde
diff options
context:
space:
mode:
authorJari Aalto <jari.aalto@cante.net>2005-12-07 14:08:12 +0000
committerJari Aalto <jari.aalto@cante.net>2009-09-12 16:46:57 +0000
commit95732b497d12c98613bb3c5db16b61f377501a59 (patch)
tree5e1cdf79eb0407e09dca4c0ec29e11442c7d1d15 /lib/tilde
parenteb87367179effbe5f430236db8259006d71438b7 (diff)
downloadandroid_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.in2
-rw-r--r--lib/tilde/doc/Makefile5
-rw-r--r--lib/tilde/doc/tilde.texi0
-rw-r--r--lib/tilde/tilde.c46
-rw-r--r--lib/tilde/tilde.h3
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