diff options
author | Aaron Lehmann <aaronl@vitelius.com> | 2001-12-06 03:37:38 +0000 |
---|---|---|
committer | Aaron Lehmann <aaronl@vitelius.com> | 2001-12-06 03:37:38 +0000 |
commit | b6ecbdc07dc444fb94e2024131df2f51d17399dd (patch) | |
tree | a28446df7aee588e5e647653a7b07ac11d6e0d61 | |
parent | ebd8065f387e24f9a9562377dcabbf7eb0165c79 (diff) | |
download | busybox-w32-b6ecbdc07dc444fb94e2024131df2f51d17399dd.tar.gz busybox-w32-b6ecbdc07dc444fb94e2024131df2f51d17399dd.tar.bz2 busybox-w32-b6ecbdc07dc444fb94e2024131df2f51d17399dd.zip |
The ash ansification diff!
Please tell me if you notice any problems resulting from this.
-rw-r--r-- | shell/ash.c | 547 |
1 files changed, 191 insertions, 356 deletions
diff --git a/shell/ash.c b/shell/ash.c index c1603d790..16c5ec0f2 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -211,10 +211,6 @@ | |||
211 | #define digit_val(c) ((c) - '0') | 211 | #define digit_val(c) ((c) - '0') |
212 | 212 | ||
213 | 213 | ||
214 | #define _DIAGASSERT(x) | ||
215 | |||
216 | |||
217 | |||
218 | #define S_DFL 1 /* default signal handling (SIG_DFL) */ | 214 | #define S_DFL 1 /* default signal handling (SIG_DFL) */ |
219 | #define S_CATCH 2 /* signal is caught */ | 215 | #define S_CATCH 2 /* signal is caught */ |
220 | #define S_IGN 3 /* signal is ignored (SIG_IGN) */ | 216 | #define S_IGN 3 /* signal is ignored (SIG_IGN) */ |
@@ -304,10 +300,6 @@ typedef void *pointer; | |||
304 | #define NULL (void *)0 | 300 | #define NULL (void *)0 |
305 | #endif | 301 | #endif |
306 | 302 | ||
307 | static inline pointer ckmalloc (int sz) { return xmalloc(sz); } | ||
308 | static inline pointer ckrealloc(void *p, int sz) { return xrealloc(p, sz); } | ||
309 | static inline char * savestr (const char *s) { return xstrdup(s); } | ||
310 | |||
311 | static pointer stalloc (int); | 303 | static pointer stalloc (int); |
312 | static void stunalloc (pointer); | 304 | static void stunalloc (pointer); |
313 | static void ungrabstackstr (char *, char *); | 305 | static void ungrabstackstr (char *, char *); |
@@ -1128,6 +1120,10 @@ static void deletefuncs(void); | |||
1128 | static void setparam (char **); | 1120 | static void setparam (char **); |
1129 | static void freeparam (volatile struct shparam *); | 1121 | static void freeparam (volatile struct shparam *); |
1130 | 1122 | ||
1123 | static void find_command (const char *, struct cmdentry *, int, const char *); | ||
1124 | |||
1125 | static inline void hashcd (void); | ||
1126 | |||
1131 | /* reasons for skipping commands (see comment on breakcmd routine) */ | 1127 | /* reasons for skipping commands (see comment on breakcmd routine) */ |
1132 | #define SKIPBREAK 1 | 1128 | #define SKIPBREAK 1 |
1133 | #define SKIPCONT 2 | 1129 | #define SKIPCONT 2 |
@@ -1339,8 +1335,7 @@ static struct alias *freealias (struct alias *); | |||
1339 | static struct alias **__lookupalias (const char *); | 1335 | static struct alias **__lookupalias (const char *); |
1340 | 1336 | ||
1341 | static void | 1337 | static void |
1342 | setalias(name, val) | 1338 | setalias(char *name, char *val) |
1343 | char *name, *val; | ||
1344 | { | 1339 | { |
1345 | struct alias *ap, **app; | 1340 | struct alias *ap, **app; |
1346 | 1341 | ||
@@ -1351,13 +1346,13 @@ setalias(name, val) | |||
1351 | if (!(ap->flag & ALIASINUSE)) { | 1346 | if (!(ap->flag & ALIASINUSE)) { |
1352 | ckfree(ap->val); | 1347 | ckfree(ap->val); |
1353 | } | 1348 | } |
1354 | ap->val = savestr(val); | 1349 | ap->val = xstrdup(val); |
1355 | ap->flag &= ~ALIASDEAD; | 1350 | ap->flag &= ~ALIASDEAD; |
1356 | } else { | 1351 | } else { |
1357 | /* not found */ | 1352 | /* not found */ |
1358 | ap = ckmalloc(sizeof (struct alias)); | 1353 | ap = xmalloc(sizeof (struct alias)); |
1359 | ap->name = savestr(name); | 1354 | ap->name = xstrdup(name); |
1360 | ap->val = savestr(val); | 1355 | ap->val = xstrdup(val); |
1361 | ap->flag = 0; | 1356 | ap->flag = 0; |
1362 | ap->next = 0; | 1357 | ap->next = 0; |
1363 | *app = ap; | 1358 | *app = ap; |
@@ -1469,9 +1464,8 @@ unaliascmd(int argc, char **argv) | |||
1469 | } | 1464 | } |
1470 | 1465 | ||
1471 | static struct alias ** | 1466 | static struct alias ** |
1472 | hashalias(p) | 1467 | hashalias(const char *p) |
1473 | const char *p; | 1468 | { |
1474 | { | ||
1475 | unsigned int hashval; | 1469 | unsigned int hashval; |
1476 | 1470 | ||
1477 | hashval = *p << 4; | 1471 | hashval = *p << 4; |
@@ -1481,7 +1475,8 @@ hashalias(p) | |||
1481 | } | 1475 | } |
1482 | 1476 | ||
1483 | static struct alias * | 1477 | static struct alias * |
1484 | freealias(struct alias *ap) { | 1478 | freealias(struct alias *ap) |
1479 | { | ||
1485 | struct alias *next; | 1480 | struct alias *next; |
1486 | 1481 | ||
1487 | if (ap->flag & ALIASINUSE) { | 1482 | if (ap->flag & ALIASINUSE) { |
@@ -1498,7 +1493,8 @@ freealias(struct alias *ap) { | |||
1498 | 1493 | ||
1499 | 1494 | ||
1500 | static struct alias ** | 1495 | static struct alias ** |
1501 | __lookupalias(const char *name) { | 1496 | __lookupalias(const char *name) |
1497 | { | ||
1502 | struct alias **app = hashalias(name); | 1498 | struct alias **app = hashalias(name); |
1503 | 1499 | ||
1504 | for (; *app; app = &(*app)->next) { | 1500 | for (; *app; app = &(*app)->next) { |
@@ -1727,7 +1723,6 @@ static int forkshell (struct job *, const union node *, int); | |||
1727 | static int waitforjob (struct job *); | 1723 | static int waitforjob (struct job *); |
1728 | 1724 | ||
1729 | static int docd (char *, int); | 1725 | static int docd (char *, int); |
1730 | static void updatepwd (const char *); | ||
1731 | static void getpwd (void); | 1726 | static void getpwd (void); |
1732 | 1727 | ||
1733 | static char *padvance (const char **, const char *); | 1728 | static char *padvance (const char **, const char *); |
@@ -1736,9 +1731,7 @@ static char nullstr[1]; /* zero length string */ | |||
1736 | static char *curdir = nullstr; /* current working directory */ | 1731 | static char *curdir = nullstr; /* current working directory */ |
1737 | 1732 | ||
1738 | static int | 1733 | static int |
1739 | cdcmd(argc, argv) | 1734 | cdcmd(int argc, char **argv) |
1740 | int argc; | ||
1741 | char **argv; | ||
1742 | { | 1735 | { |
1743 | const char *dest; | 1736 | const char *dest; |
1744 | const char *path; | 1737 | const char *path; |
@@ -1798,40 +1791,29 @@ docd(char *dest, int print) | |||
1798 | INTON; | 1791 | INTON; |
1799 | return -1; | 1792 | return -1; |
1800 | } | 1793 | } |
1801 | updatepwd(dest); | 1794 | hashcd(); |
1795 | /* | ||
1796 | * Update curdir (the name of the current directory) in response to a | ||
1797 | * cd command. We also call hashcd to let the routines in exec.c know | ||
1798 | * that the current directory has changed. | ||
1799 | */ | ||
1800 | /* If dest is NULL, we don't know the current directory */ | ||
1801 | if (dest == NULL || curdir == nullstr) | ||
1802 | setpwd(0, 1); | ||
1803 | else | ||
1804 | setpwd(dest, 1); | ||
1805 | |||
1802 | INTON; | 1806 | INTON; |
1803 | if (print && iflag) | 1807 | if (print && iflag) |
1804 | printf(snlfmt, curdir); | 1808 | puts(curdir); |
1805 | return 0; | 1809 | return 0; |
1806 | } | 1810 | } |
1807 | 1811 | ||
1808 | 1812 | ||
1809 | /* | ||
1810 | * Update curdir (the name of the current directory) in response to a | ||
1811 | * cd command. We also call hashcd to let the routines in exec.c know | ||
1812 | * that the current directory has changed. | ||
1813 | */ | ||
1814 | |||
1815 | static void hashcd (void); | ||
1816 | |||
1817 | static void | ||
1818 | updatepwd(const char *dir) | ||
1819 | { | ||
1820 | hashcd(); /* update command hash table */ | ||
1821 | |||
1822 | /* If our argument is NULL, we don't know the current directory */ | ||
1823 | if (dir == NULL || curdir == nullstr) { | ||
1824 | setpwd(0, 1); | ||
1825 | return; | ||
1826 | } | ||
1827 | setpwd(dir, 1); | ||
1828 | } | ||
1829 | |||
1830 | |||
1831 | static int | 1813 | static int |
1832 | pwdcmd(int argc, char **argv) | 1814 | pwdcmd(int argc, char **argv) |
1833 | { | 1815 | { |
1834 | printf(snlfmt, curdir); | 1816 | puts(curdir); |
1835 | return 0; | 1817 | return 0; |
1836 | } | 1818 | } |
1837 | 1819 | ||
@@ -2134,7 +2116,6 @@ static int oexitstatus; /* saved exit status */ | |||
2134 | 2116 | ||
2135 | static void evalsubshell (const union node *, int); | 2117 | static void evalsubshell (const union node *, int); |
2136 | static void expredir (union node *); | 2118 | static void expredir (union node *); |
2137 | static void prehash (union node *); | ||
2138 | static void eprintlist (struct strlist *); | 2119 | static void eprintlist (struct strlist *); |
2139 | 2120 | ||
2140 | static union node *parsecmd(int); | 2121 | static union node *parsecmd(int); |
@@ -2148,9 +2129,7 @@ static union node *parsecmd(int); | |||
2148 | static void evalstring (char *, int); | 2129 | static void evalstring (char *, int); |
2149 | 2130 | ||
2150 | static int | 2131 | static int |
2151 | evalcmd(argc, argv) | 2132 | evalcmd(int argc, char **argv) |
2152 | int argc; | ||
2153 | char **argv; | ||
2154 | { | 2133 | { |
2155 | char *p; | 2134 | char *p; |
2156 | char *concat; | 2135 | char *concat; |
@@ -2226,7 +2205,7 @@ copyfunc(union node *n) | |||
2226 | funcblocksize = 0; | 2205 | funcblocksize = 0; |
2227 | funcstringsize = 0; | 2206 | funcstringsize = 0; |
2228 | calcsize(n); | 2207 | calcsize(n); |
2229 | funcblock = ckmalloc(funcblocksize + funcstringsize); | 2208 | funcblock = xmalloc(funcblocksize + funcstringsize); |
2230 | funcstring = (char *) funcblock + funcblocksize; | 2209 | funcstring = (char *) funcblock + funcblocksize; |
2231 | return copynode(n); | 2210 | return copynode(n); |
2232 | } | 2211 | } |
@@ -2384,7 +2363,18 @@ static inline void evalpipe(union node *n) | |||
2384 | jp = makejob(n, pipelen); | 2363 | jp = makejob(n, pipelen); |
2385 | prevfd = -1; | 2364 | prevfd = -1; |
2386 | for (lp = n->npipe.cmdlist ; lp ; lp = lp->next) { | 2365 | for (lp = n->npipe.cmdlist ; lp ; lp = lp->next) { |
2387 | prehash(lp->n); | 2366 | /* |
2367 | * Search for a command. This is called before we fork so that the | ||
2368 | * location of the command will be available in the parent as well as | ||
2369 | * the child. The check for "goodname" is an overly conservative | ||
2370 | * check that the name will not be subject to expansion. | ||
2371 | */ | ||
2372 | |||
2373 | struct cmdentry entry; | ||
2374 | union node *lpn = lp->n; | ||
2375 | if (lpn->type == NCMD && lpn->ncmd.args && goodname(lpn->ncmd.args->narg.text)) | ||
2376 | find_command(lpn->ncmd.args->narg.text, &entry, 0, pathval()); | ||
2377 | |||
2388 | pip[1] = -1; | 2378 | pip[1] = -1; |
2389 | if (lp->next) { | 2379 | if (lp->next) { |
2390 | if (pipe(pip) < 0) { | 2380 | if (pipe(pip) < 0) { |
@@ -2428,8 +2418,6 @@ static inline void evalpipe(union node *n) | |||
2428 | } | 2418 | } |
2429 | } | 2419 | } |
2430 | 2420 | ||
2431 | static void find_command (const char *, struct cmdentry *, int, const char *); | ||
2432 | |||
2433 | static int | 2421 | static int |
2434 | isassignment(const char *word) { | 2422 | isassignment(const char *word) { |
2435 | if (!is_name(*word)) { | 2423 | if (!is_name(*word)) { |
@@ -2750,9 +2738,7 @@ out: | |||
2750 | * exitstatus. | 2738 | * exitstatus. |
2751 | */ | 2739 | */ |
2752 | static void | 2740 | static void |
2753 | evaltree(n, flags) | 2741 | evaltree(union node *n, int flags) |
2754 | union node *n; | ||
2755 | int flags; | ||
2756 | { | 2742 | { |
2757 | int checkexit = 0; | 2743 | int checkexit = 0; |
2758 | if (n == NULL) { | 2744 | if (n == NULL) { |
@@ -2972,25 +2958,6 @@ out: | |||
2972 | * Execute a simple command. | 2958 | * Execute a simple command. |
2973 | */ | 2959 | */ |
2974 | 2960 | ||
2975 | /* | ||
2976 | * Search for a command. This is called before we fork so that the | ||
2977 | * location of the command will be available in the parent as well as | ||
2978 | * the child. The check for "goodname" is an overly conservative | ||
2979 | * check that the name will not be subject to expansion. | ||
2980 | */ | ||
2981 | |||
2982 | static void | ||
2983 | prehash(n) | ||
2984 | union node *n; | ||
2985 | { | ||
2986 | struct cmdentry entry; | ||
2987 | |||
2988 | if (n->type == NCMD && n->ncmd.args) | ||
2989 | if (goodname(n->ncmd.args->narg.text)) | ||
2990 | find_command(n->ncmd.args->narg.text, &entry, 0, | ||
2991 | pathval()); | ||
2992 | } | ||
2993 | |||
2994 | 2961 | ||
2995 | /* | 2962 | /* |
2996 | * Builtin commands. Builtin commands whose functions are closely | 2963 | * Builtin commands. Builtin commands whose functions are closely |
@@ -3003,9 +2970,7 @@ prehash(n) | |||
3003 | */ | 2970 | */ |
3004 | 2971 | ||
3005 | int | 2972 | int |
3006 | bltincmd(argc, argv) | 2973 | bltincmd(int argc, char **argv) |
3007 | int argc; | ||
3008 | char **argv; | ||
3009 | { | 2974 | { |
3010 | /* | 2975 | /* |
3011 | * Preserve exitstatus of a previous possible redirection | 2976 | * Preserve exitstatus of a previous possible redirection |
@@ -3027,9 +2992,7 @@ bltincmd(argc, argv) | |||
3027 | */ | 2992 | */ |
3028 | 2993 | ||
3029 | static int | 2994 | static int |
3030 | breakcmd(argc, argv) | 2995 | breakcmd(int argc, char **argv) |
3031 | int argc; | ||
3032 | char **argv; | ||
3033 | { | 2996 | { |
3034 | int n = argc > 1 ? number(argv[1]) : 1; | 2997 | int n = argc > 1 ? number(argv[1]) : 1; |
3035 | 2998 | ||
@@ -3048,9 +3011,7 @@ breakcmd(argc, argv) | |||
3048 | */ | 3011 | */ |
3049 | 3012 | ||
3050 | static int | 3013 | static int |
3051 | returncmd(argc, argv) | 3014 | returncmd(int argc, char **argv) |
3052 | int argc; | ||
3053 | char **argv; | ||
3054 | { | 3015 | { |
3055 | int ret = argc > 1 ? number(argv[1]) : oexitstatus; | 3016 | int ret = argc > 1 ? number(argv[1]) : oexitstatus; |
3056 | 3017 | ||
@@ -3070,9 +3031,7 @@ returncmd(argc, argv) | |||
3070 | 3031 | ||
3071 | #ifndef CONFIG_FALSE | 3032 | #ifndef CONFIG_FALSE |
3072 | static int | 3033 | static int |
3073 | false_main(argc, argv) | 3034 | false_main(int argc, char **argv) |
3074 | int argc; | ||
3075 | char **argv; | ||
3076 | { | 3035 | { |
3077 | return 1; | 3036 | return 1; |
3078 | } | 3037 | } |
@@ -3080,9 +3039,7 @@ false_main(argc, argv) | |||
3080 | 3039 | ||
3081 | #ifndef CONFIG_TRUE | 3040 | #ifndef CONFIG_TRUE |
3082 | static int | 3041 | static int |
3083 | true_main(argc, argv) | 3042 | true_main(int argc, char **argv) |
3084 | int argc; | ||
3085 | char **argv; | ||
3086 | { | 3043 | { |
3087 | return 0; | 3044 | return 0; |
3088 | } | 3045 | } |
@@ -3132,9 +3089,7 @@ optschanged(void) | |||
3132 | 3089 | ||
3133 | 3090 | ||
3134 | static int | 3091 | static int |
3135 | execcmd(argc, argv) | 3092 | execcmd(int argc, char **argv) |
3136 | int argc; | ||
3137 | char **argv; | ||
3138 | { | 3093 | { |
3139 | if (argc > 1) { | 3094 | if (argc > 1) { |
3140 | struct strlist *sp; | 3095 | struct strlist *sp; |
@@ -3165,10 +3120,7 @@ eprintlist(struct strlist *sp) | |||
3165 | static const char *pathopt; /* set by padvance */ | 3120 | static const char *pathopt; /* set by padvance */ |
3166 | 3121 | ||
3167 | static void | 3122 | static void |
3168 | shellexec(argv, envp, path, idx) | 3123 | shellexec(char **argv, char **envp, const char *path, int idx) |
3169 | char **argv, **envp; | ||
3170 | const char *path; | ||
3171 | int idx; | ||
3172 | { | 3124 | { |
3173 | char *cmdname; | 3125 | char *cmdname; |
3174 | int e; | 3126 | int e; |
@@ -3208,7 +3160,8 @@ shellexec(argv, envp, path, idx) | |||
3208 | * Clear traps on a fork. | 3160 | * Clear traps on a fork. |
3209 | */ | 3161 | */ |
3210 | static void | 3162 | static void |
3211 | clear_traps(void) { | 3163 | clear_traps(void) |
3164 | { | ||
3212 | char **tp; | 3165 | char **tp; |
3213 | 3166 | ||
3214 | for (tp = trap ; tp < &trap[NSIG] ; tp++) { | 3167 | for (tp = trap ; tp < &trap[NSIG] ; tp++) { |
@@ -3225,7 +3178,8 @@ clear_traps(void) { | |||
3225 | 3178 | ||
3226 | 3179 | ||
3227 | static void | 3180 | static void |
3228 | initshellproc(void) { | 3181 | initshellproc(void) |
3182 | { | ||
3229 | 3183 | ||
3230 | #ifdef ASH_ALIAS | 3184 | #ifdef ASH_ALIAS |
3231 | /* from alias.c: */ | 3185 | /* from alias.c: */ |
@@ -3326,7 +3280,8 @@ static void pungetc(void) | |||
3326 | 3280 | ||
3327 | 3281 | ||
3328 | static void | 3282 | static void |
3329 | popfile(void) { | 3283 | popfile(void) |
3284 | { | ||
3330 | struct parsefile *pf = parsefile; | 3285 | struct parsefile *pf = parsefile; |
3331 | 3286 | ||
3332 | INTOFF; | 3287 | INTOFF; |
@@ -3351,7 +3306,8 @@ popfile(void) { | |||
3351 | */ | 3306 | */ |
3352 | 3307 | ||
3353 | static void | 3308 | static void |
3354 | popallfiles(void) { | 3309 | popallfiles(void) |
3310 | { | ||
3355 | while (parsefile != &basepf) | 3311 | while (parsefile != &basepf) |
3356 | popfile(); | 3312 | popfile(); |
3357 | } | 3313 | } |
@@ -3389,7 +3345,7 @@ static void setinputfd(int fd, int push) | |||
3389 | } | 3345 | } |
3390 | parsefile->fd = fd; | 3346 | parsefile->fd = fd; |
3391 | if (parsefile->buf == NULL) | 3347 | if (parsefile->buf == NULL) |
3392 | parsefile->buf = ckmalloc(BUFSIZ); | 3348 | parsefile->buf = xmalloc(BUFSIZ); |
3393 | parselleft = parsenleft = 0; | 3349 | parselleft = parsenleft = 0; |
3394 | plinno = 1; | 3350 | plinno = 1; |
3395 | } | 3351 | } |
@@ -3447,7 +3403,7 @@ tryexec(char *cmd, char **argv, char **envp) | |||
3447 | INTOFF; | 3403 | INTOFF; |
3448 | initshellproc(); | 3404 | initshellproc(); |
3449 | setinputfile(cmd, 0); | 3405 | setinputfile(cmd, 0); |
3450 | commandname = arg0 = savestr(argv[0]); | 3406 | commandname = arg0 = xstrdup(argv[0]); |
3451 | setparam(argv + 1); | 3407 | setparam(argv + 1); |
3452 | exraise(EXSHELLPROC); | 3408 | exraise(EXSHELLPROC); |
3453 | } | 3409 | } |
@@ -3531,9 +3487,7 @@ findkwd(const char *s) | |||
3531 | 3487 | ||
3532 | 3488 | ||
3533 | static int | 3489 | static int |
3534 | hashcmd(argc, argv) | 3490 | hashcmd(int argc, char **argv) |
3535 | int argc; | ||
3536 | char **argv; | ||
3537 | { | 3491 | { |
3538 | struct tblentry **pp; | 3492 | struct tblentry **pp; |
3539 | struct tblentry *cmdp; | 3493 | struct tblentry *cmdp; |
@@ -3585,7 +3539,7 @@ hashcmd(argc, argv) | |||
3585 | if (verbose=='v') | 3539 | if (verbose=='v') |
3586 | printf("%s is a shell keyword\n", name); | 3540 | printf("%s is a shell keyword\n", name); |
3587 | else | 3541 | else |
3588 | printf(snlfmt, name); | 3542 | puts(name); |
3589 | continue; | 3543 | continue; |
3590 | } | 3544 | } |
3591 | 3545 | ||
@@ -3601,10 +3555,8 @@ hashcmd(argc, argv) | |||
3601 | } | 3555 | } |
3602 | 3556 | ||
3603 | static void | 3557 | static void |
3604 | printentry(cmdp, verbose) | 3558 | printentry(struct tblentry *cmdp, int verbose) |
3605 | struct tblentry *cmdp; | 3559 | { |
3606 | int verbose; | ||
3607 | { | ||
3608 | int idx; | 3560 | int idx; |
3609 | const char *path; | 3561 | const char *path; |
3610 | char *name; | 3562 | char *name; |
@@ -3636,7 +3588,7 @@ printentry(cmdp, verbose) | |||
3636 | error("internal error: cmdtype %d", cmdp->cmdtype); | 3588 | error("internal error: cmdtype %d", cmdp->cmdtype); |
3637 | #endif | 3589 | #endif |
3638 | } | 3590 | } |
3639 | printf(snlfmt, cmdp->rehash ? "*" : nullstr); | 3591 | puts(cmdp->rehash ? "*" : nullstr); |
3640 | } | 3592 | } |
3641 | 3593 | ||
3642 | 3594 | ||
@@ -3892,8 +3844,9 @@ find_builtin(const char *name) | |||
3892 | * are executed they will be rehashed. | 3844 | * are executed they will be rehashed. |
3893 | */ | 3845 | */ |
3894 | 3846 | ||
3895 | static void | 3847 | static inline void |
3896 | hashcd(void) { | 3848 | hashcd(void) |
3849 | { | ||
3897 | struct tblentry **pp; | 3850 | struct tblentry **pp; |
3898 | struct tblentry *cmdp; | 3851 | struct tblentry *cmdp; |
3899 | 3852 | ||
@@ -3934,8 +3887,7 @@ changepath(const char *newval) | |||
3934 | */ | 3887 | */ |
3935 | 3888 | ||
3936 | static void | 3889 | static void |
3937 | clearcmdentry(firstchange) | 3890 | clearcmdentry(int firstchange) |
3938 | int firstchange; | ||
3939 | { | 3891 | { |
3940 | struct tblentry **tblp; | 3892 | struct tblentry **tblp; |
3941 | struct tblentry **pp; | 3893 | struct tblentry **pp; |
@@ -3965,7 +3917,8 @@ clearcmdentry(firstchange) | |||
3965 | */ | 3917 | */ |
3966 | 3918 | ||
3967 | static void | 3919 | static void |
3968 | deletefuncs(void) { | 3920 | deletefuncs(void) |
3921 | { | ||
3969 | struct tblentry **tblp; | 3922 | struct tblentry **tblp; |
3970 | struct tblentry **pp; | 3923 | struct tblentry **pp; |
3971 | struct tblentry *cmdp; | 3924 | struct tblentry *cmdp; |
@@ -4019,7 +3972,7 @@ cmdlookup(const char *name, int add) | |||
4019 | } | 3972 | } |
4020 | if (add && cmdp == NULL) { | 3973 | if (add && cmdp == NULL) { |
4021 | INTOFF; | 3974 | INTOFF; |
4022 | cmdp = *pp = ckmalloc(sizeof (struct tblentry) - ARB | 3975 | cmdp = *pp = xmalloc(sizeof (struct tblentry) - ARB |
4023 | + strlen(name) + 1); | 3976 | + strlen(name) + 1); |
4024 | cmdp->next = NULL; | 3977 | cmdp->next = NULL; |
4025 | cmdp->cmdtype = CMDUNKNOWN; | 3978 | cmdp->cmdtype = CMDUNKNOWN; |
@@ -4036,7 +3989,8 @@ cmdlookup(const char *name, int add) | |||
4036 | */ | 3989 | */ |
4037 | 3990 | ||
4038 | static void | 3991 | static void |
4039 | delete_cmd_entry() { | 3992 | delete_cmd_entry() |
3993 | { | ||
4040 | struct tblentry *cmdp; | 3994 | struct tblentry *cmdp; |
4041 | 3995 | ||
4042 | INTOFF; | 3996 | INTOFF; |
@@ -4121,9 +4075,7 @@ typecmd(int argc, char **argv) | |||
4121 | 4075 | ||
4122 | #ifdef ASH_CMDCMD | 4076 | #ifdef ASH_CMDCMD |
4123 | static int | 4077 | static int |
4124 | commandcmd(argc, argv) | 4078 | commandcmd(int argc, char **argv) |
4125 | int argc; | ||
4126 | char **argv; | ||
4127 | { | 4079 | { |
4128 | int c; | 4080 | int c; |
4129 | int default_path = 0; | 4081 | int default_path = 0; |
@@ -4166,9 +4118,7 @@ commandcmd(argc, argv) | |||
4166 | #endif | 4118 | #endif |
4167 | 4119 | ||
4168 | static int | 4120 | static int |
4169 | path_change(newval, bltin) | 4121 | path_change(const char *newval, int *bltin) |
4170 | const char *newval; | ||
4171 | int *bltin; | ||
4172 | { | 4122 | { |
4173 | const char *old, *new; | 4123 | const char *old, *new; |
4174 | int idx; | 4124 | int idx; |
@@ -4235,7 +4185,7 @@ static void expbackq (union node *, int, int); | |||
4235 | static int subevalvar (char *, char *, int, int, int, int, int); | 4185 | static int subevalvar (char *, char *, int, int, int, int, int); |
4236 | static int varisset (char *, int); | 4186 | static int varisset (char *, int); |
4237 | static void strtodest (const char *, int, int); | 4187 | static void strtodest (const char *, int, int); |
4238 | static void varvalue (char *, int, int); | 4188 | static inline void varvalue (char *, int, int); |
4239 | static void recordregion (int, int, int); | 4189 | static void recordregion (int, int, int); |
4240 | static void removerecordregions (int); | 4190 | static void removerecordregions (int); |
4241 | static void ifsbreakup (char *, struct arglist *); | 4191 | static void ifsbreakup (char *, struct arglist *); |
@@ -4244,7 +4194,7 @@ static void expandmeta (struct strlist *, int); | |||
4244 | #if defined(__GLIBC__) && __GLIBC__ >= 2 && !defined(FNMATCH_BROKEN) | 4194 | #if defined(__GLIBC__) && __GLIBC__ >= 2 && !defined(FNMATCH_BROKEN) |
4245 | #define preglob(p) _rmescapes((p), RMESCAPE_ALLOC | RMESCAPE_GLOB) | 4195 | #define preglob(p) _rmescapes((p), RMESCAPE_ALLOC | RMESCAPE_GLOB) |
4246 | #if !defined(GLOB_BROKEN) | 4196 | #if !defined(GLOB_BROKEN) |
4247 | static void addglob (const glob_t *); | 4197 | static inline void addglob (const glob_t *); |
4248 | #endif | 4198 | #endif |
4249 | #endif | 4199 | #endif |
4250 | #if !(defined(__GLIBC__) && __GLIBC__ >= 2 && !defined(FNMATCH_BROKEN) && !defined(GLOB_BROKEN)) | 4200 | #if !(defined(__GLIBC__) && __GLIBC__ >= 2 && !defined(FNMATCH_BROKEN) && !defined(GLOB_BROKEN)) |
@@ -4285,10 +4235,7 @@ expandhere(union node *arg, int fd) | |||
4285 | */ | 4235 | */ |
4286 | 4236 | ||
4287 | static void | 4237 | static void |
4288 | expandarg(arg, arglist, flag) | 4238 | expandarg(union node *arg, struct arglist *arglist, int flag) |
4289 | union node *arg; | ||
4290 | struct arglist *arglist; | ||
4291 | int flag; | ||
4292 | { | 4239 | { |
4293 | struct strlist *sp; | 4240 | struct strlist *sp; |
4294 | char *p; | 4241 | char *p; |
@@ -4496,9 +4443,7 @@ record: | |||
4496 | */ | 4443 | */ |
4497 | 4444 | ||
4498 | static void | 4445 | static void |
4499 | argstr(p, flag) | 4446 | argstr(char *p, int flag) |
4500 | char *p; | ||
4501 | int flag; | ||
4502 | { | 4447 | { |
4503 | char c; | 4448 | char c; |
4504 | int quotes = flag & (EXP_FULL | EXP_CASE); /* do CTLESC */ | 4449 | int quotes = flag & (EXP_FULL | EXP_CASE); /* do CTLESC */ |
@@ -4510,7 +4455,7 @@ argstr(p, flag) | |||
4510 | switch (c = *p++) { | 4455 | switch (c = *p++) { |
4511 | case '\0': | 4456 | case '\0': |
4512 | case CTLENDVAR: /* ??? */ | 4457 | case CTLENDVAR: /* ??? */ |
4513 | goto breakloop; | 4458 | return; |
4514 | case CTLQUOTEMARK: | 4459 | case CTLQUOTEMARK: |
4515 | /* "$@" syntax adherence hack */ | 4460 | /* "$@" syntax adherence hack */ |
4516 | if (p[0] == CTLVAR && p[2] == '@' && p[3] == '=') | 4461 | if (p[0] == CTLVAR && p[2] == '@' && p[3] == '=') |
@@ -4558,14 +4503,11 @@ argstr(p, flag) | |||
4558 | STPUTC(c, expdest); | 4503 | STPUTC(c, expdest); |
4559 | } | 4504 | } |
4560 | } | 4505 | } |
4561 | breakloop:; | ||
4562 | return; | 4506 | return; |
4563 | } | 4507 | } |
4564 | 4508 | ||
4565 | static char * | 4509 | static char * |
4566 | exptilde(p, flag) | 4510 | exptilde(char *p, int flag) |
4567 | char *p; | ||
4568 | int flag; | ||
4569 | { | 4511 | { |
4570 | char c, *startp = p; | 4512 | char c, *startp = p; |
4571 | struct passwd *pw; | 4513 | struct passwd *pw; |
@@ -4720,10 +4662,7 @@ expari(int flag) | |||
4720 | */ | 4662 | */ |
4721 | 4663 | ||
4722 | static void | 4664 | static void |
4723 | expbackq(cmd, quoted, flag) | 4665 | expbackq(union node *cmd, int quoted, int flag) |
4724 | union node *cmd; | ||
4725 | int quoted; | ||
4726 | int flag; | ||
4727 | { | 4666 | { |
4728 | volatile struct backcmd in; | 4667 | volatile struct backcmd in; |
4729 | int i; | 4668 | int i; |
@@ -4824,14 +4763,7 @@ err2: | |||
4824 | } | 4763 | } |
4825 | 4764 | ||
4826 | static int | 4765 | static int |
4827 | subevalvar(p, str, strloc, subtype, startloc, varflags, quotes) | 4766 | subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varflags, int quotes) |
4828 | char *p; | ||
4829 | char *str; | ||
4830 | int strloc; | ||
4831 | int subtype; | ||
4832 | int startloc; | ||
4833 | int varflags; | ||
4834 | int quotes; | ||
4835 | { | 4767 | { |
4836 | char *startp; | 4768 | char *startp; |
4837 | char *loc = NULL; | 4769 | char *loc = NULL; |
@@ -4952,9 +4884,7 @@ recordright: | |||
4952 | */ | 4884 | */ |
4953 | 4885 | ||
4954 | static int | 4886 | static int |
4955 | varisset(name, nulok) | 4887 | varisset(char *name, int nulok) |
4956 | char *name; | ||
4957 | int nulok; | ||
4958 | { | 4888 | { |
4959 | if (*name == '!') | 4889 | if (*name == '!') |
4960 | return backgndpid != -1; | 4890 | return backgndpid != -1; |
@@ -5006,7 +4936,7 @@ strtodest(const char *p, int syntax, int quotes) | |||
5006 | * Add the value of a specialized variable to the stack string. | 4936 | * Add the value of a specialized variable to the stack string. |
5007 | */ | 4937 | */ |
5008 | 4938 | ||
5009 | static void | 4939 | static inline void |
5010 | varvalue(char *name, int quoted, int flags) | 4940 | varvalue(char *name, int quoted, int flags) |
5011 | { | 4941 | { |
5012 | int num; | 4942 | int num; |
@@ -5081,10 +5011,7 @@ param: | |||
5081 | */ | 5011 | */ |
5082 | 5012 | ||
5083 | static void | 5013 | static void |
5084 | recordregion(start, end, nulonly) | 5014 | recordregion(int start, int end, int nulonly) |
5085 | int start; | ||
5086 | int end; | ||
5087 | int nulonly; | ||
5088 | { | 5015 | { |
5089 | struct ifsregion *ifsp; | 5016 | struct ifsregion *ifsp; |
5090 | 5017 | ||
@@ -5092,7 +5019,7 @@ recordregion(start, end, nulonly) | |||
5092 | ifsp = &ifsfirst; | 5019 | ifsp = &ifsfirst; |
5093 | } else { | 5020 | } else { |
5094 | INTOFF; | 5021 | INTOFF; |
5095 | ifsp = (struct ifsregion *)ckmalloc(sizeof (struct ifsregion)); | 5022 | ifsp = (struct ifsregion *)xmalloc(sizeof (struct ifsregion)); |
5096 | ifsp->next = NULL; | 5023 | ifsp->next = NULL; |
5097 | ifslastp->next = ifsp; | 5024 | ifslastp->next = ifsp; |
5098 | INTON; | 5025 | INTON; |
@@ -5111,10 +5038,8 @@ recordregion(start, end, nulonly) | |||
5111 | * searched for IFS characters have been stored by recordregion. | 5038 | * searched for IFS characters have been stored by recordregion. |
5112 | */ | 5039 | */ |
5113 | static void | 5040 | static void |
5114 | ifsbreakup(string, arglist) | 5041 | ifsbreakup(char *string, struct arglist *arglist) |
5115 | char *string; | 5042 | { |
5116 | struct arglist *arglist; | ||
5117 | { | ||
5118 | struct ifsregion *ifsp; | 5043 | struct ifsregion *ifsp; |
5119 | struct strlist *sp; | 5044 | struct strlist *sp; |
5120 | char *start; | 5045 | char *start; |
@@ -5195,7 +5120,7 @@ ifsbreakup(string, arglist) | |||
5195 | } | 5120 | } |
5196 | 5121 | ||
5197 | static void | 5122 | static void |
5198 | ifsfree() | 5123 | ifsfree(void) |
5199 | { | 5124 | { |
5200 | while (ifsfirst.next != NULL) { | 5125 | while (ifsfirst.next != NULL) { |
5201 | struct ifsregion *ifsp; | 5126 | struct ifsregion *ifsp; |
@@ -5233,9 +5158,7 @@ addfname(const char *name) | |||
5233 | 5158 | ||
5234 | #if defined(__GLIBC__) && __GLIBC__ >= 2 && !defined(FNMATCH_BROKEN) && !defined(GLOB_BROKEN) | 5159 | #if defined(__GLIBC__) && __GLIBC__ >= 2 && !defined(FNMATCH_BROKEN) && !defined(GLOB_BROKEN) |
5235 | static void | 5160 | static void |
5236 | expandmeta(str, flag) | 5161 | expandmeta(struct strlist *str, int flag) |
5237 | struct strlist *str; | ||
5238 | int flag; | ||
5239 | { | 5162 | { |
5240 | const char *p; | 5163 | const char *p; |
5241 | glob_t pglob; | 5164 | glob_t pglob; |
@@ -5275,9 +5198,8 @@ nometa: | |||
5275 | * Add the result of glob(3) to the list. | 5198 | * Add the result of glob(3) to the list. |
5276 | */ | 5199 | */ |
5277 | 5200 | ||
5278 | static void | 5201 | static inline void |
5279 | addglob(pglob) | 5202 | addglob(const glob_t *pglob) |
5280 | const glob_t *pglob; | ||
5281 | { | 5203 | { |
5282 | char **p = pglob->gl_pathv; | 5204 | char **p = pglob->gl_pathv; |
5283 | 5205 | ||
@@ -5292,9 +5214,7 @@ static char *expdir; | |||
5292 | 5214 | ||
5293 | 5215 | ||
5294 | static void | 5216 | static void |
5295 | expandmeta(str, flag) | 5217 | expandmeta(struct strlist str, int flag) |
5296 | struct strlist *str; | ||
5297 | int flag; | ||
5298 | { | 5218 | { |
5299 | char *p; | 5219 | char *p; |
5300 | struct strlist **savelastp; | 5220 | struct strlist **savelastp; |
@@ -5316,7 +5236,7 @@ expandmeta(str, flag) | |||
5316 | INTOFF; | 5236 | INTOFF; |
5317 | if (expdir == NULL) { | 5237 | if (expdir == NULL) { |
5318 | int i = strlen(str->text); | 5238 | int i = strlen(str->text); |
5319 | expdir = ckmalloc(i < 2048 ? 2048 : i); /* XXX */ | 5239 | expdir = xmalloc(i < 2048 ? 2048 : i); /* XXX */ |
5320 | } | 5240 | } |
5321 | 5241 | ||
5322 | expmeta(expdir, str->text); | 5242 | expmeta(expdir, str->text); |
@@ -5348,10 +5268,8 @@ nometa: | |||
5348 | */ | 5268 | */ |
5349 | 5269 | ||
5350 | static void | 5270 | static void |
5351 | expmeta(enddir, name) | 5271 | expmeta(char *enddir, char *name) |
5352 | char *enddir; | 5272 | { |
5353 | char *name; | ||
5354 | { | ||
5355 | char *p; | 5273 | char *p; |
5356 | const char *cp; | 5274 | const char *cp; |
5357 | char *q; | 5275 | char *q; |
@@ -5484,9 +5402,8 @@ expmeta(enddir, name) | |||
5484 | */ | 5402 | */ |
5485 | 5403 | ||
5486 | static struct strlist * | 5404 | static struct strlist * |
5487 | expsort(str) | 5405 | expsort(struct strlist *str) |
5488 | struct strlist *str; | 5406 | { |
5489 | { | ||
5490 | int len; | 5407 | int len; |
5491 | struct strlist *sp; | 5408 | struct strlist *sp; |
5492 | 5409 | ||
@@ -5498,9 +5415,7 @@ expsort(str) | |||
5498 | 5415 | ||
5499 | 5416 | ||
5500 | static struct strlist * | 5417 | static struct strlist * |
5501 | msort(list, len) | 5418 | msort(struct strlist *list, int len) |
5502 | struct strlist *list; | ||
5503 | int len; | ||
5504 | { | 5419 | { |
5505 | struct strlist *p, *q = NULL; | 5420 | struct strlist *p, *q = NULL; |
5506 | struct strlist **lpp; | 5421 | struct strlist **lpp; |
@@ -5743,8 +5658,7 @@ _rmescapes(char *str, int flag) | |||
5743 | } | 5658 | } |
5744 | #else | 5659 | #else |
5745 | static void | 5660 | static void |
5746 | rmescapes(str) | 5661 | rmescapes(char *str) |
5747 | char *str; | ||
5748 | { | 5662 | { |
5749 | char *p, *q; | 5663 | char *p, *q; |
5750 | 5664 | ||
@@ -5797,10 +5711,8 @@ casematch(union node *pattern, const char *val) | |||
5797 | */ | 5711 | */ |
5798 | 5712 | ||
5799 | static char * | 5713 | static char * |
5800 | cvtnum(num, buf) | 5714 | cvtnum(int num, char *buf) |
5801 | int num; | 5715 | { |
5802 | char *buf; | ||
5803 | { | ||
5804 | int len; | 5716 | int len; |
5805 | 5717 | ||
5806 | CHECKSTRSPACE(32, buf); | 5718 | CHECKSTRSPACE(32, buf); |
@@ -5811,9 +5723,7 @@ cvtnum(num, buf) | |||
5811 | /* | 5723 | /* |
5812 | * Editline and history functions (and glue). | 5724 | * Editline and history functions (and glue). |
5813 | */ | 5725 | */ |
5814 | static int histcmd(argc, argv) | 5726 | static int histcmd(int argc, char **argv) |
5815 | int argc; | ||
5816 | char **argv; | ||
5817 | { | 5727 | { |
5818 | error("not compiled with history support"); | 5728 | error("not compiled with history support"); |
5819 | /* NOTREACHED */ | 5729 | /* NOTREACHED */ |
@@ -6133,7 +6043,7 @@ pushstring(char *s, int len, void *ap) | |||
6133 | INTOFF; | 6043 | INTOFF; |
6134 | /*dprintf("*** calling pushstring: %s, %d\n", s, len);*/ | 6044 | /*dprintf("*** calling pushstring: %s, %d\n", s, len);*/ |
6135 | if (parsefile->strpush) { | 6045 | if (parsefile->strpush) { |
6136 | sp = ckmalloc(sizeof (struct strpush)); | 6046 | sp = xmalloc(sizeof (struct strpush)); |
6137 | sp->prev = parsefile->strpush; | 6047 | sp->prev = parsefile->strpush; |
6138 | parsefile->strpush = sp; | 6048 | parsefile->strpush = sp; |
6139 | } else | 6049 | } else |
@@ -6177,14 +6087,15 @@ setinputstring(char *string) | |||
6177 | */ | 6087 | */ |
6178 | 6088 | ||
6179 | static void | 6089 | static void |
6180 | pushfile(void) { | 6090 | pushfile(void) |
6091 | { | ||
6181 | struct parsefile *pf; | 6092 | struct parsefile *pf; |
6182 | 6093 | ||
6183 | parsefile->nleft = parsenleft; | 6094 | parsefile->nleft = parsenleft; |
6184 | parsefile->lleft = parselleft; | 6095 | parsefile->lleft = parselleft; |
6185 | parsefile->nextc = parsenextc; | 6096 | parsefile->nextc = parsenextc; |
6186 | parsefile->linno = plinno; | 6097 | parsefile->linno = plinno; |
6187 | pf = (struct parsefile *)ckmalloc(sizeof (struct parsefile)); | 6098 | pf = (struct parsefile *)xmalloc(sizeof (struct parsefile)); |
6188 | pf->prev = parsefile; | 6099 | pf->prev = parsefile; |
6189 | pf->fd = -1; | 6100 | pf->fd = -1; |
6190 | pf->strpush = NULL; | 6101 | pf->strpush = NULL; |
@@ -6289,9 +6200,7 @@ static void setjobctl(int enable) | |||
6289 | 6200 | ||
6290 | #ifdef JOBS | 6201 | #ifdef JOBS |
6291 | static int | 6202 | static int |
6292 | killcmd(argc, argv) | 6203 | killcmd(int argc, char **argv) |
6293 | int argc; | ||
6294 | char **argv; | ||
6295 | { | 6204 | { |
6296 | int signo = -1; | 6205 | int signo = -1; |
6297 | int list = 0; | 6206 | int list = 0; |
@@ -6351,13 +6260,13 @@ usage: | |||
6351 | for (i = 1; i < NSIG; i++) { | 6260 | for (i = 1; i < NSIG; i++) { |
6352 | name = u_signal_names(0, &i, 1); | 6261 | name = u_signal_names(0, &i, 1); |
6353 | if(name) | 6262 | if(name) |
6354 | printf(snlfmt, name); | 6263 | puts(name); |
6355 | } | 6264 | } |
6356 | return 0; | 6265 | return 0; |
6357 | } | 6266 | } |
6358 | name = u_signal_names(*argptr, &signo, -1); | 6267 | name = u_signal_names(*argptr, &signo, -1); |
6359 | if (name) | 6268 | if (name) |
6360 | printf(snlfmt, name); | 6269 | puts(name); |
6361 | else | 6270 | else |
6362 | error("invalid signal number or exit status: %s", | 6271 | error("invalid signal number or exit status: %s", |
6363 | *argptr); | 6272 | *argptr); |
@@ -6381,9 +6290,7 @@ usage: | |||
6381 | } | 6290 | } |
6382 | 6291 | ||
6383 | static int | 6292 | static int |
6384 | fgcmd(argc, argv) | 6293 | fgcmd(int argc, char **argv) |
6385 | int argc; | ||
6386 | char **argv; | ||
6387 | { | 6294 | { |
6388 | struct job *jp; | 6295 | struct job *jp; |
6389 | int pgrp; | 6296 | int pgrp; |
@@ -6407,9 +6314,7 @@ fgcmd(argc, argv) | |||
6407 | 6314 | ||
6408 | 6315 | ||
6409 | static int | 6316 | static int |
6410 | bgcmd(argc, argv) | 6317 | bgcmd(int argc, char **argv) |
6411 | int argc; | ||
6412 | char **argv; | ||
6413 | { | 6318 | { |
6414 | struct job *jp; | 6319 | struct job *jp; |
6415 | 6320 | ||
@@ -6424,8 +6329,7 @@ bgcmd(argc, argv) | |||
6424 | 6329 | ||
6425 | 6330 | ||
6426 | static void | 6331 | static void |
6427 | restartjob(jp) | 6332 | restartjob(struct job *jp) |
6428 | struct job *jp; | ||
6429 | { | 6333 | { |
6430 | struct procstat *ps; | 6334 | struct procstat *ps; |
6431 | int i; | 6335 | int i; |
@@ -6448,9 +6352,7 @@ static void showjobs(int change); | |||
6448 | 6352 | ||
6449 | 6353 | ||
6450 | static int | 6354 | static int |
6451 | jobscmd(argc, argv) | 6355 | jobscmd(int argc, char **argv) |
6452 | int argc; | ||
6453 | char **argv; | ||
6454 | { | 6356 | { |
6455 | showjobs(0); | 6357 | showjobs(0); |
6456 | return 0; | 6358 | return 0; |
@@ -6467,8 +6369,7 @@ jobscmd(argc, argv) | |||
6467 | */ | 6369 | */ |
6468 | 6370 | ||
6469 | static void | 6371 | static void |
6470 | showjobs(change) | 6372 | showjobs(int change) |
6471 | int change; | ||
6472 | { | 6373 | { |
6473 | int jobno; | 6374 | int jobno; |
6474 | int procno; | 6375 | int procno; |
@@ -6564,9 +6465,7 @@ freejob(struct job *jp) | |||
6564 | 6465 | ||
6565 | 6466 | ||
6566 | static int | 6467 | static int |
6567 | waitcmd(argc, argv) | 6468 | waitcmd(int argc, char **argv) |
6568 | int argc; | ||
6569 | char **argv; | ||
6570 | { | 6469 | { |
6571 | struct job *job; | 6470 | struct job *job; |
6572 | int status, retval; | 6471 | int status, retval; |
@@ -6687,9 +6586,9 @@ makejob(const union node *node, int nprocs) | |||
6687 | if (--i < 0) { | 6586 | if (--i < 0) { |
6688 | INTOFF; | 6587 | INTOFF; |
6689 | if (njobs == 0) { | 6588 | if (njobs == 0) { |
6690 | jobtab = ckmalloc(4 * sizeof jobtab[0]); | 6589 | jobtab = xmalloc(4 * sizeof jobtab[0]); |
6691 | } else { | 6590 | } else { |
6692 | jp = ckmalloc((njobs + 4) * sizeof jobtab[0]); | 6591 | jp = xmalloc((njobs + 4) * sizeof jobtab[0]); |
6693 | memcpy(jp, jobtab, njobs * sizeof jp[0]); | 6592 | memcpy(jp, jobtab, njobs * sizeof jp[0]); |
6694 | /* Relocate `ps' pointers */ | 6593 | /* Relocate `ps' pointers */ |
6695 | for (i = 0; i < njobs; i++) | 6594 | for (i = 0; i < njobs; i++) |
@@ -6715,7 +6614,7 @@ makejob(const union node *node, int nprocs) | |||
6715 | jp->jobctl = jobctl; | 6614 | jp->jobctl = jobctl; |
6716 | #endif | 6615 | #endif |
6717 | if (nprocs > 1) { | 6616 | if (nprocs > 1) { |
6718 | jp->ps = ckmalloc(nprocs * sizeof (struct procstat)); | 6617 | jp->ps = xmalloc(nprocs * sizeof (struct procstat)); |
6719 | } else { | 6618 | } else { |
6720 | jp->ps = &jp->ps0; | 6619 | jp->ps = &jp->ps0; |
6721 | } | 6620 | } |
@@ -7507,7 +7406,7 @@ commandtext(const union node *n) | |||
7507 | { | 7406 | { |
7508 | char *name; | 7407 | char *name; |
7509 | 7408 | ||
7510 | cmdnextc = name = ckmalloc(MAXCMDTEXT); | 7409 | cmdnextc = name = xmalloc(MAXCMDTEXT); |
7511 | cmdnleft = MAXCMDTEXT - 4; | 7410 | cmdnleft = MAXCMDTEXT - 4; |
7512 | cmdtxt(n); | 7411 | cmdtxt(n); |
7513 | *cmdnextc = '\0'; | 7412 | *cmdnextc = '\0'; |
@@ -7606,9 +7505,7 @@ static void procargs (int, char **); | |||
7606 | */ | 7505 | */ |
7607 | 7506 | ||
7608 | int | 7507 | int |
7609 | ash_main(argc, argv) | 7508 | ash_main(int argc, char **argv) |
7610 | int argc; | ||
7611 | char **argv; | ||
7612 | { | 7509 | { |
7613 | struct jmploc jmploc; | 7510 | struct jmploc jmploc; |
7614 | struct stackmark smark; | 7511 | struct stackmark smark; |
@@ -7788,8 +7685,7 @@ cmdloop(int top) | |||
7788 | */ | 7685 | */ |
7789 | 7686 | ||
7790 | static void | 7687 | static void |
7791 | read_profile(name) | 7688 | read_profile(const char *name) |
7792 | const char *name; | ||
7793 | { | 7689 | { |
7794 | int fd; | 7690 | int fd; |
7795 | int xflag_save; | 7691 | int xflag_save; |
@@ -7870,16 +7766,14 @@ find_dot_file(char *mybasename) | |||
7870 | } | 7766 | } |
7871 | 7767 | ||
7872 | static int | 7768 | static int |
7873 | dotcmd(argc, argv) | 7769 | dotcmd(int argc, char **argv) |
7874 | int argc; | ||
7875 | char **argv; | ||
7876 | { | 7770 | { |
7877 | struct strlist *sp; | 7771 | struct strlist *sp; |
7878 | volatile struct shparam saveparam; | 7772 | volatile struct shparam saveparam; |
7879 | exitstatus = 0; | 7773 | exitstatus = 0; |
7880 | 7774 | ||
7881 | for (sp = cmdenviron; sp ; sp = sp->next) | 7775 | for (sp = cmdenviron; sp ; sp = sp->next) |
7882 | setvareq(savestr(sp->text), VSTRFIXED|VTEXTFIXED); | 7776 | setvareq(xstrdup(sp->text), VSTRFIXED|VTEXTFIXED); |
7883 | 7777 | ||
7884 | if (argc >= 2) { /* That's what SVR2 does */ | 7778 | if (argc >= 2) { /* That's what SVR2 does */ |
7885 | char *fullname; | 7779 | char *fullname; |
@@ -7912,9 +7806,7 @@ dotcmd(argc, argv) | |||
7912 | 7806 | ||
7913 | 7807 | ||
7914 | static int | 7808 | static int |
7915 | exitcmd(argc, argv) | 7809 | exitcmd(int argc, char **argv) |
7916 | int argc; | ||
7917 | char **argv; | ||
7918 | { | 7810 | { |
7919 | if (stoppedjobs()) | 7811 | if (stoppedjobs()) |
7920 | return 0; | 7812 | return 0; |
@@ -7940,7 +7832,7 @@ stalloc(int nbytes) | |||
7940 | if (blocksize < MINSIZE) | 7832 | if (blocksize < MINSIZE) |
7941 | blocksize = MINSIZE; | 7833 | blocksize = MINSIZE; |
7942 | INTOFF; | 7834 | INTOFF; |
7943 | sp = ckmalloc(sizeof(struct stack_block) - MINSIZE + blocksize); | 7835 | sp = xmalloc(sizeof(struct stack_block) - MINSIZE + blocksize); |
7944 | sp->prev = stackp; | 7836 | sp->prev = stackp; |
7945 | stacknxt = sp->space; | 7837 | stacknxt = sp->space; |
7946 | stacknleft = blocksize; | 7838 | stacknleft = blocksize; |
@@ -8024,7 +7916,7 @@ growstackblock(void) { | |||
8024 | oldstackp = stackp; | 7916 | oldstackp = stackp; |
8025 | sp = stackp; | 7917 | sp = stackp; |
8026 | stackp = sp->prev; | 7918 | stackp = sp->prev; |
8027 | sp = ckrealloc((pointer)sp, sizeof(struct stack_block) - MINSIZE + newlen); | 7919 | sp = xrealloc((pointer)sp, sizeof(struct stack_block) - MINSIZE + newlen); |
8028 | sp->prev = stackp; | 7920 | sp->prev = stackp; |
8029 | stackp = sp; | 7921 | stackp = sp; |
8030 | stacknxt = sp->space; | 7922 | stacknxt = sp->space; |
@@ -8225,9 +8117,7 @@ readcmd(int argc, char **argv) | |||
8225 | 8117 | ||
8226 | 8118 | ||
8227 | static int | 8119 | static int |
8228 | umaskcmd(argc, argv) | 8120 | umaskcmd(int argc, char **argv) |
8229 | int argc; | ||
8230 | char **argv; | ||
8231 | { | 8121 | { |
8232 | static const char permuser[3] = "ugo"; | 8122 | static const char permuser[3] = "ugo"; |
8233 | static const char permmode[3] = "rwx"; | 8123 | static const char permmode[3] = "rwx"; |
@@ -8345,9 +8235,7 @@ static const struct limits limits[] = { | |||
8345 | }; | 8235 | }; |
8346 | 8236 | ||
8347 | static int | 8237 | static int |
8348 | ulimitcmd(argc, argv) | 8238 | ulimitcmd(int argc, char **argv) |
8349 | int argc; | ||
8350 | char **argv; | ||
8351 | { | 8239 | { |
8352 | static const char unlimited_string[] = "unlimited"; | 8240 | static const char unlimited_string[] = "unlimited"; |
8353 | int c; | 8241 | int c; |
@@ -8530,7 +8418,8 @@ number(const char *s) | |||
8530 | */ | 8418 | */ |
8531 | 8419 | ||
8532 | static char * | 8420 | static char * |
8533 | single_quote(const char *s) { | 8421 | single_quote(const char *s) |
8422 | { | ||
8534 | char *p; | 8423 | char *p; |
8535 | 8424 | ||
8536 | STARTSTACKSTR(p); | 8425 | STARTSTACKSTR(p); |
@@ -8594,7 +8483,7 @@ sstrdup(const char *p) | |||
8594 | 8483 | ||
8595 | static void sizenodelist (const struct nodelist *); | 8484 | static void sizenodelist (const struct nodelist *); |
8596 | static struct nodelist *copynodelist (const struct nodelist *); | 8485 | static struct nodelist *copynodelist (const struct nodelist *); |
8597 | static char *nodesavestr (const char *); | 8486 | static char *nodexstrdup (const char *); |
8598 | 8487 | ||
8599 | #define CALCSIZE_TABLE | 8488 | #define CALCSIZE_TABLE |
8600 | #define COPYNODE_TABLE | 8489 | #define COPYNODE_TABLE |
@@ -8736,7 +8625,7 @@ copynode(const union node *n) | |||
8736 | if (!(*p & NODE_MBRMASK)) { /* standard node */ | 8625 | if (!(*p & NODE_MBRMASK)) { /* standard node */ |
8737 | *((union node **)nn) = copynode(*((const union node **) no)); | 8626 | *((union node **)nn) = copynode(*((const union node **) no)); |
8738 | } else if ((*p & NODE_MBRMASK) == NODE_CHARPTR) { /* string */ | 8627 | } else if ((*p & NODE_MBRMASK) == NODE_CHARPTR) { /* string */ |
8739 | *((const char **)nn) = nodesavestr(*((const char **)no)); | 8628 | *((const char **)nn) = nodexstrdup(*((const char **)no)); |
8740 | } else if (*p & NODE_NODELIST) { /* nodelist */ | 8629 | } else if (*p & NODE_NODELIST) { /* nodelist */ |
8741 | *((struct nodelist **)nn) | 8630 | *((struct nodelist **)nn) |
8742 | = copynodelist(*((const struct nodelist **) no)); | 8631 | = copynodelist(*((const struct nodelist **) no)); |
@@ -8787,7 +8676,7 @@ copynode(const union node *n) | |||
8787 | new->nif.test = copynode(n->nif.test); | 8676 | new->nif.test = copynode(n->nif.test); |
8788 | break; | 8677 | break; |
8789 | case NFOR: | 8678 | case NFOR: |
8790 | new->nfor.var = nodesavestr(n->nfor.var); | 8679 | new->nfor.var = nodexstrdup(n->nfor.var); |
8791 | new->nfor.body = copynode(n->nfor.body); | 8680 | new->nfor.body = copynode(n->nfor.body); |
8792 | new->nfor.args = copynode(n->nfor.args); | 8681 | new->nfor.args = copynode(n->nfor.args); |
8793 | break; | 8682 | break; |
@@ -8803,7 +8692,7 @@ copynode(const union node *n) | |||
8803 | case NDEFUN: | 8692 | case NDEFUN: |
8804 | case NARG: | 8693 | case NARG: |
8805 | new->narg.backquote = copynodelist(n->narg.backquote); | 8694 | new->narg.backquote = copynodelist(n->narg.backquote); |
8806 | new->narg.text = nodesavestr(n->narg.text); | 8695 | new->narg.text = nodexstrdup(n->narg.text); |
8807 | new->narg.next = copynode(n->narg.next); | 8696 | new->narg.next = copynode(n->narg.next); |
8808 | break; | 8697 | break; |
8809 | case NTO: | 8698 | case NTO: |
@@ -8971,7 +8860,7 @@ copynodelist(const struct nodelist *lp) | |||
8971 | 8860 | ||
8972 | 8861 | ||
8973 | static char * | 8862 | static char * |
8974 | nodesavestr(const char *s) | 8863 | nodexstrdup(const char *s) |
8975 | { | 8864 | { |
8976 | const char *p = s; | 8865 | const char *p = s; |
8977 | char *q = funcstring; | 8866 | char *q = funcstring; |
@@ -8993,9 +8882,7 @@ static int getopts (char *, char *, char **, int *, int *); | |||
8993 | */ | 8882 | */ |
8994 | 8883 | ||
8995 | static void | 8884 | static void |
8996 | procargs(argc, argv) | 8885 | procargs(int argc, char **argv) |
8997 | int argc; | ||
8998 | char **argv; | ||
8999 | { | 8886 | { |
9000 | int i; | 8887 | int i; |
9001 | 8888 | ||
@@ -9154,9 +9041,9 @@ setparam(char **argv) | |||
9154 | int nparam; | 9041 | int nparam; |
9155 | 9042 | ||
9156 | for (nparam = 0 ; argv[nparam] ; nparam++); | 9043 | for (nparam = 0 ; argv[nparam] ; nparam++); |
9157 | ap = newparam = ckmalloc((nparam + 1) * sizeof *ap); | 9044 | ap = newparam = xmalloc((nparam + 1) * sizeof *ap); |
9158 | while (*argv) { | 9045 | while (*argv) { |
9159 | *ap++ = savestr(*argv++); | 9046 | *ap++ = xstrdup(*argv++); |
9160 | } | 9047 | } |
9161 | *ap = NULL; | 9048 | *ap = NULL; |
9162 | freeparam(&shellparam); | 9049 | freeparam(&shellparam); |
@@ -9191,9 +9078,7 @@ freeparam(volatile struct shparam *param) | |||
9191 | */ | 9078 | */ |
9192 | 9079 | ||
9193 | static int | 9080 | static int |
9194 | shiftcmd(argc, argv) | 9081 | shiftcmd(int argc, char **argv) |
9195 | int argc; | ||
9196 | char **argv; | ||
9197 | { | 9082 | { |
9198 | int n; | 9083 | int n; |
9199 | char **ap1, **ap2; | 9084 | char **ap1, **ap2; |
@@ -9224,9 +9109,7 @@ shiftcmd(argc, argv) | |||
9224 | */ | 9109 | */ |
9225 | 9110 | ||
9226 | static int | 9111 | static int |
9227 | setcmd(argc, argv) | 9112 | setcmd(int argc, char **argv) |
9228 | int argc; | ||
9229 | char **argv; | ||
9230 | { | 9113 | { |
9231 | if (argc == 1) | 9114 | if (argc == 1) |
9232 | return showvarscmd(argc, argv); | 9115 | return showvarscmd(argc, argv); |
@@ -9272,9 +9155,7 @@ static void change_lc_ctype(const char *value) | |||
9272 | */ | 9155 | */ |
9273 | 9156 | ||
9274 | static int | 9157 | static int |
9275 | getoptscmd(argc, argv) | 9158 | getoptscmd(int argc, char **argv) |
9276 | int argc; | ||
9277 | char **argv; | ||
9278 | { | 9159 | { |
9279 | char **optbase; | 9160 | char **optbase; |
9280 | 9161 | ||
@@ -9304,9 +9185,7 @@ getoptscmd(argc, argv) | |||
9304 | */ | 9185 | */ |
9305 | 9186 | ||
9306 | static int | 9187 | static int |
9307 | setvarsafe(name, val, flags) | 9188 | setvarsafe(const char *name, const char *val, int flags) |
9308 | const char *name, *val; | ||
9309 | int flags; | ||
9310 | { | 9189 | { |
9311 | struct jmploc jmploc; | 9190 | struct jmploc jmploc; |
9312 | struct jmploc *volatile savehandler = handler; | 9191 | struct jmploc *volatile savehandler = handler; |
@@ -9326,12 +9205,7 @@ setvarsafe(name, val, flags) | |||
9326 | } | 9205 | } |
9327 | 9206 | ||
9328 | static int | 9207 | static int |
9329 | getopts(optstr, optvar, optfirst, myoptind, optoff) | 9208 | getopts(char *optstr, char *optvar, char **optfirst, int *myoptind, int *optoff) |
9330 | char *optstr; | ||
9331 | char *optvar; | ||
9332 | char **optfirst; | ||
9333 | int *myoptind; | ||
9334 | int *optoff; | ||
9335 | { | 9209 | { |
9336 | char *p, *q; | 9210 | char *p, *q; |
9337 | char c = '?'; | 9211 | char c = '?'; |
@@ -9591,8 +9465,7 @@ parsecmd(int interact) | |||
9591 | 9465 | ||
9592 | 9466 | ||
9593 | static union node * | 9467 | static union node * |
9594 | list(nlflag) | 9468 | list(int nlflag) |
9595 | int nlflag; | ||
9596 | { | 9469 | { |
9597 | union node *n1, *n2, *n3; | 9470 | union node *n1, *n2, *n3; |
9598 | int tok; | 9471 | int tok; |
@@ -10853,7 +10726,7 @@ parsebackq: { | |||
10853 | str = NULL; | 10726 | str = NULL; |
10854 | savelen = out - stackblock(); | 10727 | savelen = out - stackblock(); |
10855 | if (savelen > 0) { | 10728 | if (savelen > 0) { |
10856 | str = ckmalloc(savelen); | 10729 | str = xmalloc(savelen); |
10857 | memcpy(str, stackblock(), savelen); | 10730 | memcpy(str, stackblock(), savelen); |
10858 | } | 10731 | } |
10859 | savehandler = handler; | 10732 | savehandler = handler; |
@@ -11012,9 +10885,8 @@ parsearith: { | |||
11012 | */ | 10885 | */ |
11013 | 10886 | ||
11014 | static int | 10887 | static int |
11015 | noexpand(text) | 10888 | noexpand(char *text) |
11016 | char *text; | 10889 | { |
11017 | { | ||
11018 | char *p; | 10890 | char *p; |
11019 | char c; | 10891 | char c; |
11020 | 10892 | ||
@@ -11059,8 +10931,7 @@ goodname(const char *name) | |||
11059 | */ | 10931 | */ |
11060 | 10932 | ||
11061 | static void | 10933 | static void |
11062 | synexpect(token) | 10934 | synexpect(int token) |
11063 | int token; | ||
11064 | { | 10935 | { |
11065 | char msg[64]; | 10936 | char msg[64]; |
11066 | int l; | 10937 | int l; |
@@ -11308,7 +11179,7 @@ redirect(union node *redir, int flags) | |||
11308 | int fd1dup = flags & REDIR_BACKQ;; /* stdout `cmd` redir to pipe */ | 11179 | int fd1dup = flags & REDIR_BACKQ;; /* stdout `cmd` redir to pipe */ |
11309 | 11180 | ||
11310 | if (flags & REDIR_PUSH) { | 11181 | if (flags & REDIR_PUSH) { |
11311 | sv = ckmalloc(sizeof (struct redirtab)); | 11182 | sv = xmalloc(sizeof (struct redirtab)); |
11312 | for (i = 0 ; i < 10 ; i++) | 11183 | for (i = 0 ; i < 10 ; i++) |
11313 | sv->renamed[i] = EMPTY; | 11184 | sv->renamed[i] = EMPTY; |
11314 | sv->next = redirlist; | 11185 | sv->next = redirlist; |
@@ -11440,9 +11311,7 @@ clearredir(void) { | |||
11440 | */ | 11311 | */ |
11441 | 11312 | ||
11442 | static int | 11313 | static int |
11443 | dup_as_newfd(from, to) | 11314 | dup_as_newfd(int from, int to) |
11444 | int from; | ||
11445 | int to; | ||
11446 | { | 11315 | { |
11447 | int newfd; | 11316 | int newfd; |
11448 | 11317 | ||
@@ -11477,11 +11346,7 @@ showtree(n) | |||
11477 | 11346 | ||
11478 | 11347 | ||
11479 | static void | 11348 | static void |
11480 | shtree(n, ind, pfx, fp) | 11349 | shtree(union node *n, int ind, char *pfx, FILE *fp) |
11481 | union node *n; | ||
11482 | int ind; | ||
11483 | char *pfx; | ||
11484 | FILE *fp; | ||
11485 | { | 11350 | { |
11486 | struct nodelist *lp; | 11351 | struct nodelist *lp; |
11487 | const char *s; | 11352 | const char *s; |
@@ -11532,9 +11397,7 @@ binop: | |||
11532 | 11397 | ||
11533 | 11398 | ||
11534 | static void | 11399 | static void |
11535 | shcmd(cmd, fp) | 11400 | shcmd(union node *cmd, FILE *fp) |
11536 | union node *cmd; | ||
11537 | FILE *fp; | ||
11538 | { | 11401 | { |
11539 | union node *np; | 11402 | union node *np; |
11540 | int first; | 11403 | int first; |
@@ -11585,10 +11448,8 @@ shcmd(cmd, fp) | |||
11585 | } | 11448 | } |
11586 | 11449 | ||
11587 | static void | 11450 | static void |
11588 | sharg(arg, fp) | 11451 | sharg(union node *arg, FILE *fp) |
11589 | union node *arg; | 11452 | { |
11590 | FILE *fp; | ||
11591 | { | ||
11592 | char *p; | 11453 | char *p; |
11593 | struct nodelist *bqlist; | 11454 | struct nodelist *bqlist; |
11594 | int subtype; | 11455 | int subtype; |
@@ -11672,10 +11533,7 @@ sharg(arg, fp) | |||
11672 | 11533 | ||
11673 | 11534 | ||
11674 | static void | 11535 | static void |
11675 | indent(amount, pfx, fp) | 11536 | indent(int amount, char *pfx, FILE *fp) |
11676 | int amount; | ||
11677 | char *pfx; | ||
11678 | FILE *fp; | ||
11679 | { | 11537 | { |
11680 | int i; | 11538 | int i; |
11681 | 11539 | ||
@@ -11697,8 +11555,7 @@ static int debug = 0; | |||
11697 | 11555 | ||
11698 | 11556 | ||
11699 | static void | 11557 | static void |
11700 | trputc(c) | 11558 | trputc(int c) |
11701 | int c; | ||
11702 | { | 11559 | { |
11703 | if (tracefile == NULL) | 11560 | if (tracefile == NULL) |
11704 | return; | 11561 | return; |
@@ -11722,8 +11579,7 @@ trace(const char *fmt, ...) | |||
11722 | 11579 | ||
11723 | 11580 | ||
11724 | static void | 11581 | static void |
11725 | trputs(s) | 11582 | trputs(const char *s) |
11726 | const char *s; | ||
11727 | { | 11583 | { |
11728 | if (tracefile == NULL) | 11584 | if (tracefile == NULL) |
11729 | return; | 11585 | return; |
@@ -11734,8 +11590,7 @@ trputs(s) | |||
11734 | 11590 | ||
11735 | 11591 | ||
11736 | static void | 11592 | static void |
11737 | trstring(s) | 11593 | trstring(char *s) |
11738 | char *s; | ||
11739 | { | 11594 | { |
11740 | char *p; | 11595 | char *p; |
11741 | char c; | 11596 | char c; |
@@ -11775,8 +11630,7 @@ backslash: putc('\\', tracefile); | |||
11775 | 11630 | ||
11776 | 11631 | ||
11777 | static void | 11632 | static void |
11778 | trargs(ap) | 11633 | trargs(char **ap) |
11779 | char **ap; | ||
11780 | { | 11634 | { |
11781 | if (tracefile == NULL) | 11635 | if (tracefile == NULL) |
11782 | return; | 11636 | return; |
@@ -11792,7 +11646,8 @@ trargs(ap) | |||
11792 | 11646 | ||
11793 | 11647 | ||
11794 | static void | 11648 | static void |
11795 | opentrace() { | 11649 | opentrace() |
11650 | { | ||
11796 | char s[100]; | 11651 | char s[100]; |
11797 | #ifdef O_APPEND | 11652 | #ifdef O_APPEND |
11798 | int flags; | 11653 | int flags; |
@@ -11832,9 +11687,7 @@ opentrace() { | |||
11832 | */ | 11687 | */ |
11833 | 11688 | ||
11834 | static int | 11689 | static int |
11835 | trapcmd(argc, argv) | 11690 | trapcmd(int argc, char **argv) |
11836 | int argc; | ||
11837 | char **argv; | ||
11838 | { | 11691 | { |
11839 | char *action; | 11692 | char *action; |
11840 | char **ap; | 11693 | char **ap; |
@@ -11871,7 +11724,7 @@ trapcmd(argc, argv) | |||
11871 | if (action[0] == '-' && action[1] == '\0') | 11724 | if (action[0] == '-' && action[1] == '\0') |
11872 | action = NULL; | 11725 | action = NULL; |
11873 | else | 11726 | else |
11874 | action = savestr(action); | 11727 | action = xstrdup(action); |
11875 | } | 11728 | } |
11876 | if (trap[signo]) | 11729 | if (trap[signo]) |
11877 | ckfree(trap[signo]); | 11730 | ckfree(trap[signo]); |
@@ -11974,8 +11827,7 @@ setsignal(int signo) | |||
11974 | */ | 11827 | */ |
11975 | 11828 | ||
11976 | static void | 11829 | static void |
11977 | ignoresig(signo) | 11830 | ignoresig(int signo) |
11978 | int signo; | ||
11979 | { | 11831 | { |
11980 | if (sigmode[signo - 1] != S_IGN && sigmode[signo - 1] != S_HARD_IGN) { | 11832 | if (sigmode[signo - 1] != S_IGN && sigmode[signo - 1] != S_HARD_IGN) { |
11981 | signal(signo, SIG_IGN); | 11833 | signal(signo, SIG_IGN); |
@@ -12113,9 +11965,7 @@ initvar() { | |||
12113 | */ | 11965 | */ |
12114 | 11966 | ||
12115 | static void | 11967 | static void |
12116 | setvar(name, val, flags) | 11968 | setvar(const char *name, const char *val, int flags) |
12117 | const char *name, *val; | ||
12118 | int flags; | ||
12119 | { | 11969 | { |
12120 | const char *p; | 11970 | const char *p; |
12121 | int len; | 11971 | int len; |
@@ -12147,7 +11997,7 @@ setvar(name, val, flags) | |||
12147 | len += vallen = strlen(val); | 11997 | len += vallen = strlen(val); |
12148 | } | 11998 | } |
12149 | INTOFF; | 11999 | INTOFF; |
12150 | nameeq = ckmalloc(len); | 12000 | nameeq = xmalloc(len); |
12151 | memcpy(nameeq, name, namelen); | 12001 | memcpy(nameeq, name, namelen); |
12152 | nameeq[namelen] = '='; | 12002 | nameeq[namelen] = '='; |
12153 | if (val) { | 12003 | if (val) { |
@@ -12169,9 +12019,7 @@ setvar(name, val, flags) | |||
12169 | */ | 12019 | */ |
12170 | 12020 | ||
12171 | static void | 12021 | static void |
12172 | setvareq(s, flags) | 12022 | setvareq(char *s, int flags) |
12173 | char *s; | ||
12174 | int flags; | ||
12175 | { | 12023 | { |
12176 | struct var *vp, **vpp; | 12024 | struct var *vp, **vpp; |
12177 | 12025 | ||
@@ -12206,7 +12054,7 @@ setvareq(s, flags) | |||
12206 | return; | 12054 | return; |
12207 | } | 12055 | } |
12208 | /* not found */ | 12056 | /* not found */ |
12209 | vp = ckmalloc(sizeof (*vp)); | 12057 | vp = xmalloc(sizeof (*vp)); |
12210 | vp->flags = flags; | 12058 | vp->flags = flags; |
12211 | vp->text = s; | 12059 | vp->text = s; |
12212 | vp->next = *vpp; | 12060 | vp->next = *vpp; |
@@ -12221,14 +12069,13 @@ setvareq(s, flags) | |||
12221 | */ | 12069 | */ |
12222 | 12070 | ||
12223 | static void | 12071 | static void |
12224 | listsetvar(mylist) | 12072 | listsetvar(struct strlist *mylist) |
12225 | struct strlist *mylist; | 12073 | { |
12226 | { | ||
12227 | struct strlist *lp; | 12074 | struct strlist *lp; |
12228 | 12075 | ||
12229 | INTOFF; | 12076 | INTOFF; |
12230 | for (lp = mylist ; lp ; lp = lp->next) { | 12077 | for (lp = mylist ; lp ; lp = lp->next) { |
12231 | setvareq(savestr(lp->text), 0); | 12078 | setvareq(xstrdup(lp->text), 0); |
12232 | } | 12079 | } |
12233 | INTON; | 12080 | INTON; |
12234 | } | 12081 | } |
@@ -12240,8 +12087,7 @@ listsetvar(mylist) | |||
12240 | */ | 12087 | */ |
12241 | 12088 | ||
12242 | static const char * | 12089 | static const char * |
12243 | lookupvar(name) | 12090 | lookupvar(const char *name) |
12244 | const char *name; | ||
12245 | { | 12091 | { |
12246 | struct var *v; | 12092 | struct var *v; |
12247 | 12093 | ||
@@ -12322,7 +12168,7 @@ shprocvar(void) { | |||
12322 | ckfree(vp); | 12168 | ckfree(vp); |
12323 | } else { | 12169 | } else { |
12324 | if (vp->flags & VSTACK) { | 12170 | if (vp->flags & VSTACK) { |
12325 | vp->text = savestr(vp->text); | 12171 | vp->text = xstrdup(vp->text); |
12326 | vp->flags &=~ VSTACK; | 12172 | vp->flags &=~ VSTACK; |
12327 | } | 12173 | } |
12328 | prev = &vp->next; | 12174 | prev = &vp->next; |
@@ -12341,9 +12187,7 @@ shprocvar(void) { | |||
12341 | */ | 12187 | */ |
12342 | 12188 | ||
12343 | static int | 12189 | static int |
12344 | showvarscmd(argc, argv) | 12190 | showvarscmd(int argc, char **argv) |
12345 | int argc; | ||
12346 | char **argv; | ||
12347 | { | 12191 | { |
12348 | showvars(nullstr, VUNSET, VUNSET); | 12192 | showvars(nullstr, VUNSET, VUNSET); |
12349 | return 0; | 12193 | return 0; |
@@ -12356,9 +12200,7 @@ showvarscmd(argc, argv) | |||
12356 | */ | 12200 | */ |
12357 | 12201 | ||
12358 | static int | 12202 | static int |
12359 | exportcmd(argc, argv) | 12203 | exportcmd(int argc, char **argv) |
12360 | int argc; | ||
12361 | char **argv; | ||
12362 | { | 12204 | { |
12363 | struct var *vp; | 12205 | struct var *vp; |
12364 | char *name; | 12206 | char *name; |
@@ -12395,9 +12237,7 @@ found:; | |||
12395 | /* funcnest nonzero if we are currently evaluating a function */ | 12237 | /* funcnest nonzero if we are currently evaluating a function */ |
12396 | 12238 | ||
12397 | static int | 12239 | static int |
12398 | localcmd(argc, argv) | 12240 | localcmd(int argc, char **argv) |
12399 | int argc; | ||
12400 | char **argv; | ||
12401 | { | 12241 | { |
12402 | char *name; | 12242 | char *name; |
12403 | 12243 | ||
@@ -12418,18 +12258,17 @@ localcmd(argc, argv) | |||
12418 | */ | 12258 | */ |
12419 | 12259 | ||
12420 | static void | 12260 | static void |
12421 | mklocal(name) | 12261 | mklocal(char *name) |
12422 | char *name; | 12262 | { |
12423 | { | ||
12424 | struct localvar *lvp; | 12263 | struct localvar *lvp; |
12425 | struct var **vpp; | 12264 | struct var **vpp; |
12426 | struct var *vp; | 12265 | struct var *vp; |
12427 | 12266 | ||
12428 | INTOFF; | 12267 | INTOFF; |
12429 | lvp = ckmalloc(sizeof (struct localvar)); | 12268 | lvp = xmalloc(sizeof (struct localvar)); |
12430 | if (name[0] == '-' && name[1] == '\0') { | 12269 | if (name[0] == '-' && name[1] == '\0') { |
12431 | char *p; | 12270 | char *p; |
12432 | p = ckmalloc(sizeof optet_vals); | 12271 | p = xmalloc(sizeof optet_vals); |
12433 | lvp->text = memcpy(p, optet_vals, sizeof optet_vals); | 12272 | lvp->text = memcpy(p, optet_vals, sizeof optet_vals); |
12434 | vp = NULL; | 12273 | vp = NULL; |
12435 | } else { | 12274 | } else { |
@@ -12437,7 +12276,7 @@ mklocal(name) | |||
12437 | vp = *findvar(vpp, name); | 12276 | vp = *findvar(vpp, name); |
12438 | if (vp == NULL) { | 12277 | if (vp == NULL) { |
12439 | if (strchr(name, '=')) | 12278 | if (strchr(name, '=')) |
12440 | setvareq(savestr(name), VSTRFIXED); | 12279 | setvareq(xstrdup(name), VSTRFIXED); |
12441 | else | 12280 | else |
12442 | setvar(name, NULL, VSTRFIXED); | 12281 | setvar(name, NULL, VSTRFIXED); |
12443 | vp = *vpp; /* the new variable */ | 12282 | vp = *vpp; /* the new variable */ |
@@ -12448,7 +12287,7 @@ mklocal(name) | |||
12448 | lvp->flags = vp->flags; | 12287 | lvp->flags = vp->flags; |
12449 | vp->flags |= VSTRFIXED|VTEXTFIXED; | 12288 | vp->flags |= VSTRFIXED|VTEXTFIXED; |
12450 | if (strchr(name, '=')) | 12289 | if (strchr(name, '=')) |
12451 | setvareq(savestr(name), 0); | 12290 | setvareq(xstrdup(name), 0); |
12452 | } | 12291 | } |
12453 | } | 12292 | } |
12454 | lvp->vp = vp; | 12293 | lvp->vp = vp; |
@@ -12487,9 +12326,7 @@ poplocalvars() { | |||
12487 | 12326 | ||
12488 | 12327 | ||
12489 | static int | 12328 | static int |
12490 | setvarcmd(argc, argv) | 12329 | setvarcmd(int argc, char **argv) |
12491 | int argc; | ||
12492 | char **argv; | ||
12493 | { | 12330 | { |
12494 | if (argc <= 2) | 12331 | if (argc <= 2) |
12495 | return unsetcmd(argc, argv); | 12332 | return unsetcmd(argc, argv); |
@@ -12508,9 +12345,7 @@ setvarcmd(argc, argv) | |||
12508 | */ | 12345 | */ |
12509 | 12346 | ||
12510 | static int | 12347 | static int |
12511 | unsetcmd(argc, argv) | 12348 | unsetcmd(int argc, char **argv) |
12512 | int argc; | ||
12513 | char **argv; | ||
12514 | { | 12349 | { |
12515 | char **ap; | 12350 | char **ap; |
12516 | int i; | 12351 | int i; |
@@ -12646,7 +12481,7 @@ findvar(struct var **vpp, const char *name) | |||
12646 | /* | 12481 | /* |
12647 | * Copyright (c) 1999 Herbert Xu <herbert@debian.org> | 12482 | * Copyright (c) 1999 Herbert Xu <herbert@debian.org> |
12648 | * This file contains code for the times builtin. | 12483 | * This file contains code for the times builtin. |
12649 | * $Id: ash.c,v 1.36 2001/11/12 16:57:26 kraai Exp $ | 12484 | * $Id: ash.c,v 1.37 2001/12/06 03:37:38 aaronl Exp $ |
12650 | */ | 12485 | */ |
12651 | static int timescmd (int argc, char **argv) | 12486 | static int timescmd (int argc, char **argv) |
12652 | { | 12487 | { |
@@ -12695,7 +12530,7 @@ int letcmd(int argc, char **argv) | |||
12695 | return 0; | 12530 | return 0; |
12696 | } | 12531 | } |
12697 | snprintf(p, 12, "%ld", result); | 12532 | snprintf(p, 12, "%ld", result); |
12698 | setvar(argv[1], savestr(p), 0); | 12533 | setvar(argv[1], xstrdup(p), 0); |
12699 | } else if (argc >= 3) | 12534 | } else if (argc >= 3) |
12700 | synerror("invalid operand"); | 12535 | synerror("invalid operand"); |
12701 | return !result; | 12536 | return !result; |