OSDN Git Service

hidden_def/hidden_proto: convert all users (I hope) termios split, add some missing...
[uclinux-h8/uClibc.git] / libc / misc / wordexp / wordexp.c
index a91e64e..70d43e1 100644 (file)
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#define mempcpy __mempcpy
-#define stpcpy __stpcpy
-#define strndup __strndup
-#define strspn __strspn
-#define strcspn __strcspn
-#define setenv __setenv
-#define unsetenv __unsetenv
-#define waitpid __waitpid
-#define kill __kill
-#define getuid __getuid
-#define getpwnam_r __getpwnam_r
-#define getpwuid_r __getpwuid_r
-#define execve __execve
-#define dup2 __dup2
-#define atoi __atoi
-#define fnmatch __fnmatch
-#define pipe __pipe
-#define fork __fork
-
 #define _GNU_SOURCE
 #include <features.h>
 #include <sys/types.h>
 #include <glob.h>
 #include <wordexp.h>
 
+libc_hidden_proto(mempcpy)
+libc_hidden_proto(stpcpy)
+libc_hidden_proto(strchr)
+libc_hidden_proto(strcpy)
+libc_hidden_proto(strdup)
+libc_hidden_proto(strlen)
+libc_hidden_proto(strndup)
+libc_hidden_proto(strspn)
+libc_hidden_proto(strcspn)
+libc_hidden_proto(setenv)
+libc_hidden_proto(unsetenv)
+libc_hidden_proto(waitpid)
+libc_hidden_proto(kill)
+libc_hidden_proto(getuid)
+libc_hidden_proto(getpwnam_r)
+libc_hidden_proto(getpwuid_r)
+libc_hidden_proto(execve)
+libc_hidden_proto(dup2)
+libc_hidden_proto(atoi)
+libc_hidden_proto(fnmatch)
+libc_hidden_proto(pipe)
+libc_hidden_proto(fork)
+libc_hidden_proto(open)
+libc_hidden_proto(close)
+libc_hidden_proto(read)
+libc_hidden_proto(getenv)
+libc_hidden_proto(getpid)
+libc_hidden_proto(sprintf)
+libc_hidden_proto(fprintf)
+libc_hidden_proto(abort)
+
 extern void __wordfree (wordexp_t *__wordexp) __THROW attribute_hidden;
 extern int __glob (__const char *__restrict __pattern, int __flags,
                 int (*__errfunc) (__const char *, int),
@@ -155,7 +167,7 @@ static char *w_addstr(char *buffer, size_t * actlen, size_t * maxlen,
 {
        size_t len;
        assert(str != NULL);            /* w_addstr only called from this file */
-       len = __strlen(str);
+       len = strlen(str);
 
        return w_addmem(buffer, actlen, maxlen, str, len);
 }
@@ -170,7 +182,7 @@ static int w_addword(wordexp_t * pwordexp, char *word)
         * the caller sees them.
         */
        if (word == NULL) {
-               word = __strdup("");
+               word = strdup("");
                if (word == NULL)
                        goto no_space;
        }
@@ -272,7 +284,7 @@ parse_tilde(char **word, size_t * word_length, size_t * max_length,
        if (*word_length != 0) {
                if (!((*word)[*word_length - 1] == '=' && wordc == 0)) {
                        if (!((*word)[*word_length - 1] == ':'
-                                 && __strchr(*word, '=') && wordc == 0)) {
+                                 && strchr(*word, '=') && wordc == 0)) {
                                *word = w_addchar(*word, word_length, max_length, '~');
                                return *word ? 0 : WRDE_NOSPACE;
                        }
@@ -303,7 +315,7 @@ parse_tilde(char **word, size_t * word_length, size_t * max_length,
                   results are unspecified.  We do a lookup on the uid if
                   HOME is unset. */
 
-               home = __getenv("HOME");
+               home = getenv("HOME");
                if (home != NULL) {
                        *word = w_addstr(*word, word_length, max_length, home);
                        if (*word == NULL)
@@ -397,7 +409,7 @@ do_parse_glob(const char *glob_word, char **word, size_t * word_length,
        }
 
        for (match = 0; match < globbuf.gl_pathc; ++match) {
-               char *matching_word = __strdup(globbuf.gl_pathv[match]);
+               char *matching_word = strdup(globbuf.gl_pathv[match]);
 
                if (matching_word == NULL || w_addword(pwordexp, matching_word)) {
                        __globfree(&globbuf);
@@ -424,8 +436,8 @@ parse_glob(char **word, size_t * word_length, size_t * max_length,
        glob_list.we_wordv = NULL;
        glob_list.we_offs = 0;
        for (; words[*offset] != '\0'; ++*offset) {
-               if ((ifs && __strchr(ifs, words[*offset])) ||
-                       (!ifs && __strchr(" \t\n", words[*offset])))
+               if ((ifs && strchr(ifs, words[*offset])) ||
+                       (!ifs && strchr(" \t\n", words[*offset])))
                        /* Reached IFS */
                        break;
 
@@ -515,7 +527,7 @@ static int eval_expr(char *expr, long int *result);
 
 static char *_itoa(unsigned long long int value, char *buflim)
 {
-       __sprintf(buflim, "%llu", value);
+       sprintf(buflim, "%llu", value);
        return buflim;
 }
 
@@ -782,24 +794,24 @@ exec_comm_child(char *comm, int *fildes, int showerr, int noexec)
 
        /* Redirect output.  */
        dup2(fildes[1], 1);
-       __close(fildes[1]);
+       close(fildes[1]);
 
        /* Redirect stderr to /dev/null if we have to.  */
        if (showerr == 0) {
                int fd;
 
-               __close(2);
-               fd = __open(_PATH_DEVNULL, O_WRONLY);
+               close(2);
+               fd = open(_PATH_DEVNULL, O_WRONLY);
                if (fd >= 0 && fd != 2) {
                        dup2(fd, 2);
-                       __close(fd);
+                       close(fd);
                }
        }
 
        /* Make sure the subshell doesn't field-split on our behalf. */
        unsetenv("IFS");
 
-       __close(fildes[0]);
+       close(fildes[0]);
        execve(_PATH_BSHELL, (char *const *) args, __environ);
 
        /* Bad.  What now?  */
@@ -832,8 +844,8 @@ exec_comm(char *comm, char **word, size_t * word_length,
 
        if ((pid = fork()) < 0) {
                /* Bad */
-               __close(fildes[0]);
-               __close(fildes[1]);
+               close(fildes[0]);
+               close(fildes[1]);
                return WRDE_NOSPACE;
        }
 
@@ -842,17 +854,17 @@ exec_comm(char *comm, char **word, size_t * word_length,
 
        /* Parent */
 
-       __close(fildes[1]);
+       close(fildes[1]);
        buffer = alloca(bufsize);
 
        if (!pwordexp)
                /* Quoted - no field splitting */
        {
                while (1) {
-                       if ((buflen = __read(fildes[0], buffer, bufsize)) < 1) {
+                       if ((buflen = read(fildes[0], buffer, bufsize)) < 1) {
                                if (waitpid(pid, &status, WNOHANG) == 0)
                                        continue;
-                               if ((buflen = __read(fildes[0], buffer, bufsize)) < 1)
+                               if ((buflen = read(fildes[0], buffer, bufsize)) < 1)
                                        break;
                        }
 
@@ -875,17 +887,17 @@ exec_comm(char *comm, char **word, size_t * word_length,
                 */
 
                while (1) {
-                       if ((buflen = __read(fildes[0], buffer, bufsize)) < 1) {
+                       if ((buflen = read(fildes[0], buffer, bufsize)) < 1) {
                                if (waitpid(pid, &status, WNOHANG) == 0)
                                        continue;
-                               if ((buflen = __read(fildes[0], buffer, bufsize)) < 1)
+                               if ((buflen = read(fildes[0], buffer, bufsize)) < 1)
                                        break;
                        }
 
                        for (i = 0; i < buflen; ++i) {
-                               if (__strchr(ifs, buffer[i]) != NULL) {
+                               if (strchr(ifs, buffer[i]) != NULL) {
                                        /* Current character is IFS */
-                                       if (__strchr(ifs_white, buffer[i]) == NULL) {
+                                       if (strchr(ifs_white, buffer[i]) == NULL) {
                                                /* Current character is IFS but not whitespace */
                                                if (copying == 2) {
                                                        /*            current character
@@ -979,7 +991,7 @@ exec_comm(char *comm, char **word, size_t * word_length,
                }
        }
 
-       __close(fildes[0]);
+       close(fildes[0]);
 
        /* Check for syntax error (re-execute but with "-n" flag) */
        if (buflen < 1 && status != 0) {
@@ -1002,7 +1014,7 @@ exec_comm(char *comm, char **word, size_t * word_length,
   no_space:
        kill(pid, SIGKILL);
        waitpid(pid, NULL, 0);
-       __close(fildes[0]);
+       close(fildes[0]);
        return WRDE_NOSPACE;
 }
 
@@ -1201,7 +1213,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                                goto envsubst;
                }
                while (isdigit(words[++*offset]));
-       } else if (__strchr("*@$", words[*offset]) != NULL) {
+       } else if (strchr("*@$", words[*offset]) != NULL) {
                /* Special parameter. */
                special = 1;
                env = w_addchar(env, &env_length, &env_maxlen, words[*offset]);
@@ -1237,7 +1249,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                        break;
 
                case ':':
-                       if (__strchr("-=?+", words[1 + *offset]) == NULL)
+                       if (strchr("-=?+", words[1 + *offset]) == NULL)
                                goto syntax;
 
                        colon_seen = 1;
@@ -1348,7 +1360,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                /* Is it `$$'? */
                if (*env == '$') {
                        buffer[20] = '\0';
-                       value = _itoa(__getpid(), &buffer[20]);
+                       value = _itoa(getpid(), &buffer[20]);
                }
                /* Is it `${#*}' or `${#@}'? */
                else if ((*env == '*' || *env == '@') && seen_hash) {
@@ -1369,7 +1381,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
 
                        /* Build up value parameter by parameter (copy them) */
                        for (p = 1; __libc_argv[p]; ++p)
-                               plist_len += __strlen(__libc_argv[p]) + 1;      /* for space */
+                               plist_len += strlen(__libc_argv[p]) + 1;        /* for space */
                        value = malloc(plist_len);
                        if (value == NULL)
                                goto no_space;
@@ -1399,7 +1411,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                                        goto no_space;
 
                                for (p = 2; __libc_argv[p + 1]; p++) {
-                                       char *newword = __strdup(__libc_argv[p]);
+                                       char *newword = strdup(__libc_argv[p]);
 
                                        if (newword == NULL || w_addword(pwordexp, newword))
                                                goto no_space;
@@ -1415,7 +1427,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                        }
                }
        } else
-               value = __getenv(env);
+               value = getenv(env);
 
        if (value == NULL && (flags & WRDE_UNDEF)) {
                /* Variable not defined. */
@@ -1579,7 +1591,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                        if (value == NULL || pattern == NULL || *pattern == '\0')
                                break;
 
-                       end = value + __strlen(value);
+                       end = value + strlen(value);
 
                        switch (action) {
                        case ACT_RP_SHORT_LEFT:
@@ -1589,7 +1601,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                                        if (fnmatch(pattern, value, 0) != FNM_NOMATCH) {
                                                *p = c;
                                                if (free_value) {
-                                                       char *newval = __strdup(p);
+                                                       char *newval = strdup(p);
 
                                                        if (newval == NULL) {
                                                                free(value);
@@ -1613,7 +1625,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                                        if (fnmatch(pattern, value, 0) != FNM_NOMATCH) {
                                                *p = c;
                                                if (free_value) {
-                                                       char *newval = __strdup(p);
+                                                       char *newval = strdup(p);
 
                                                        if (newval == NULL) {
                                                                free(value);
@@ -1717,7 +1729,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                                /* Substitute NULL */
                                goto success;
 
-                       value = pattern ? __strdup(pattern) : pattern;
+                       value = pattern ? strdup(pattern) : pattern;
                        free_value = 1;
 
                        if (pattern && !value)
@@ -1730,7 +1742,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                                if (free_value && value)
                                        free(value);
 
-                               value = pattern ? __strdup(pattern) : pattern;
+                               value = pattern ? strdup(pattern) : pattern;
                                free_value = 1;
 
                                if (pattern && !value)
@@ -1759,7 +1771,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                        if (free_value && value)
                                free(value);
 
-                       value = pattern ? __strdup(pattern) : pattern;
+                       value = pattern ? strdup(pattern) : pattern;
                        free_value = 1;
 
                        if (pattern && !value)
@@ -1783,7 +1795,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
 
                param_length[20] = '\0';
                *word = w_addstr(*word, word_length, max_length,
-                                                _itoa(value ? __strlen(value) : 0,
+                                                _itoa(value ? strlen(value) : 0,
                                                                        &param_length[20]));
                if (free_value) {
                        assert(value != NULL);
@@ -1805,7 +1817,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
                return *word ? 0 : WRDE_NOSPACE;
        } else {
                /* Need to field-split */
-               char *value_copy = __strdup(value);     /* Don't modify value */
+               char *value_copy = strdup(value);       /* Don't modify value */
                char *field_begin = value_copy;
                int seen_nonws_ifs = 0;
 
@@ -1845,7 +1857,7 @@ parse_param(char **word, size_t * word_length, size_t * max_length,
 
                        /* Skip at most one non-whitespace IFS character after the field */
                        seen_nonws_ifs = 0;
-                       if (*next_field && __strchr(ifs, *next_field)) {
+                       if (*next_field && strchr(ifs, *next_field)) {
                                seen_nonws_ifs = 1;
                                next_field++;
                        }
@@ -2088,11 +2100,11 @@ int wordexp(const char *words, wordexp_t * we, int flags)
        /* Find out what the field separators are.
         * There are two types: whitespace and non-whitespace.
         */
-       ifs = __getenv("IFS");
+       ifs = getenv("IFS");
 
        if (!ifs)
                /* IFS unset - use <space><tab><newline>. */
-               ifs = __strcpy(ifs_white, " \t\n");
+               ifs = strcpy(ifs_white, " \t\n");
        else {
                char *ifsch = ifs;
                char *whch = ifs_white;
@@ -2211,11 +2223,11 @@ int wordexp(const char *words, wordexp_t * we, int flags)
 
                default:
                        /* Is it a word separator? */
-                       if (__strchr(" \t", words[words_offset]) == NULL) {
+                       if (strchr(" \t", words[words_offset]) == NULL) {
                                char ch = words[words_offset];
 
                                /* Not a word separator -- but is it a valid word char? */
-                               if (__strchr("\n|&;<>(){}", ch)) {
+                               if (strchr("\n|&;<>(){}", ch)) {
                                        /* Fail */
                                        error = WRDE_BADCHAR;
                                        goto do_error;