X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/ecc449eb905718f1a06af43f519b37617c419d14..f52b918007dc218cdf8cd43fe2d631fecebc3bf2:/usr/src/bin/csh/misc.c diff --git a/usr/src/bin/csh/misc.c b/usr/src/bin/csh/misc.c index e37e6ce2ac..e8398f9fb7 100644 --- a/usr/src/bin/csh/misc.c +++ b/usr/src/bin/csh/misc.c @@ -6,222 +6,234 @@ */ #ifndef lint -static char sccsid[] = "@(#)misc.c 5.6 (Berkeley) %G%"; +static char sccsid[] = "@(#)misc.c 5.15 (Berkeley) %G%"; #endif /* not lint */ -#include "sh.h" +#include +#include +#include +#if __STDC__ +# include +#else +# include +#endif -/* - * C Shell - */ +#include "csh.h" +#include "extern.h" -onlyread(cp) - char *cp; -{ - extern char end[]; +static int renum __P((int, int)); - return (cp < end); -} - -xfree(cp) - char *cp; +int +any(s, c) + register char *s; + register int c; { - extern char end[]; - - if (cp >= end && cp < (char *) &cp) - free(cp); + if (!s) + return (0); /* Check for nil pointer */ + while (*s) + if (*s++ == c) + return (1); + return (0); } -char * -savestr(s) - register char *s; +void +setzero(cp, i) + char *cp; + int i; { - char *n; - register char *p; - - if (s == 0) - s = ""; - for (p = s; *p++;) - ; - n = p = xalloc((unsigned) (p - s)); - while (*p++ = *s++) - ; - return (n); + if (i != 0) + do + *cp++ = 0; + while (--i); } -char * -calloc(i, j) - register unsigned i; - unsigned j; +char * +strsave(s) + register char *s; { - char *cp; - - i *= j; - cp = xalloc(i); - bzero(cp, (int)i); - return (cp); + char *n; + register char *p; + + if (s == NULL) + s = ""; + for (p = s; *p++;); + n = p = (char *) xmalloc((size_t) ((p - s) * sizeof(char))); + while (*p++ = *s++); + return (n); } -nomem(i) - unsigned i; +Char ** +blkend(up) + register Char **up; { -#ifdef debug - static char *av[2] = {0, 0}; -#endif - child++; -#ifndef debug - error("Out of memory"); -#ifdef lint - i = i; -#endif -#else - showall(av); - printf("i=%d: Out of memory\n", i); - chdir("/usr/bill/cshcore"); - abort(); -#endif - return 0; /* fool lint */ + while (*up) + up++; + return (up); } -char ** -blkend(up) - register char **up; -{ - while (*up) - up++; - return (up); -} - -blkpr(av) - register char **av; +void +blkpr(fp, av) + FILE *fp; + register Char **av; { - for (; *av; av++) { - printf("%s", *av); - if (av[1]) - printf(" "); - } + for (; *av; av++) { + (void) fprintf(fp, "%s", short2str(*av)); + if (av[1]) + (void) fprintf(fp, " "); + } } +int blklen(av) - register char **av; + register Char **av; { - register int i = 0; + register int i = 0; - while (*av++) - i++; - return (i); + while (*av++) + i++; + return (i); } -char ** +Char ** blkcpy(oav, bv) - char **oav; - register char **bv; + Char **oav; + register Char **bv; { - register char **av = oav; + register Char **av = oav; - while (*av++ = *bv++) - continue; - return (oav); + while (*av++ = *bv++) + continue; + return (oav); } -char ** +Char ** blkcat(up, vp) - char **up, **vp; + Char **up, **vp; { - (void) blkcpy(blkend(up), vp); - return (up); + (void) blkcpy(blkend(up), vp); + return (up); } +void blkfree(av0) - char **av0; + Char **av0; { - register char **av = av0; + register Char **av = av0; - for (; *av; av++) - XFREE(*av) - XFREE((char *)av0) + if (!av0) + return; + for (; *av; av++) + xfree((ptr_t) * av); + xfree((ptr_t) av0); } -char ** +Char ** saveblk(v) - register char **v; + register Char **v; { - register char **newv = - (char **) calloc((unsigned) (blklen(v) + 1), sizeof (char **)); - char **onewv = newv; + register Char **newv = + (Char **) xcalloc((size_t) (blklen(v) + 1), sizeof(Char **)); + Char **onewv = newv; + + while (*v) + *newv++ = Strsave(*v++); + return (onewv); +} - while (*v) - *newv++ = savestr(*v++); - return (onewv); +#ifdef NOTUSED +char * +strstr(s, t) + register char *s, *t; +{ + do { + register char *ss = s; + register char *tt = t; + + do + if (*tt == '\0') + return (s); + while (*ss++ == *tt++); + } while (*s++ != '\0'); + return (NULL); } -char * +#endif /* NOTUSED */ + +#ifndef SHORT_STRINGS +char * strspl(cp, dp) - char *cp, *dp; + char *cp, *dp; { - char *ep; - register char *p, *q; - - for (p = cp; *p++;) - ; - for (q = dp; *q++;) - ; - ep = xalloc((unsigned) ((p - cp) + (q - dp) - 1)); - for (p = ep, q = cp; *p++ = *q++;) - ; - for (p--, q = dp; *p++ = *q++;) - ; - return (ep); + char *ep; + register char *p, *q; + + if (!cp) + cp = ""; + if (!dp) + dp = ""; + for (p = cp; *p++;); + for (q = dp; *q++;); + ep = (char *) xmalloc((size_t) (((p - cp) + (q - dp) - 1) * sizeof(char))); + for (p = ep, q = cp; *p++ = *q++;); + for (p--, q = dp; *p++ = *q++;); + return (ep); } -char ** +#endif + +Char ** blkspl(up, vp) - register char **up, **vp; + register Char **up, **vp; { - register char **wp = - (char **) calloc((unsigned) (blklen(up) + blklen(vp) + 1), - sizeof (char **)); + register Char **wp = + (Char **) xcalloc((size_t) (blklen(up) + blklen(vp) + 1), + sizeof(Char **)); - (void) blkcpy(wp, up); - return (blkcat(wp, vp)); + (void) blkcpy(wp, up); + return (blkcat(wp, vp)); } +Char lastchr(cp) - register char *cp; + register Char *cp; { - if (!*cp) - return (0); - while (cp[1]) - cp++; - return (*cp); + if (!cp) + return (0); + if (!*cp) + return (0); + while (cp[1]) + cp++; + return (*cp); } /* * This routine is called after an error to close up * any units which may have been left open accidentally. */ +void closem() { - register int f; + register int f; - for (f = 0; f < NOFILE; f++) - if (f != SHIN && f != SHOUT && f != SHDIAG && f != OLDSTD && - f != FSHTTY) - (void) close(f); + for (f = 0; f < NOFILE; f++) + if (f != SHIN && f != SHOUT && f != SHERR && f != OLDSTD && + f != FSHTTY) + (void) close(f); } +void donefds() { + (void) close(0); + (void) close(1); + (void) close(2); - (void) close(0); - (void) close(1); - (void) close(2); - didfds = 0; + didfds = 0; } /* @@ -229,51 +241,56 @@ donefds() * If j is -1 then we just want to get i to a safe place, * i.e. to a unit > 2. This also happens in dcopy. */ +int dmove(i, j) - register int i, j; + register int i, j; { - if (i == j || i < 0) - return (i); - if (j >= 0) { - (void) dup2(i, j); - return (j); - } - j = dcopy(i, j); + if (i == j || i < 0) + return (i); + if (j >= 0) { + (void) dup2(i, j); if (j != i) - (void) close(i); + (void) close(i); return (j); + } + j = dcopy(i, j); + if (j != i) + (void) close(i); + return (j); } +int dcopy(i, j) - register int i, j; + register int i, j; { - if (i == j || i < 0 || j < 0 && i > 2) - return (i); - if (j >= 0) { - (void) dup2(i, j); - return (j); - } - (void) close(j); - return (renum(i, j)); + if (i == j || i < 0 || j < 0 && i > 2) + return (i); + if (j >= 0) { + (void) dup2(i, j); + return (j); + } + (void) close(j); + return (renum(i, j)); } +static int renum(i, j) - register int i, j; + register int i, j; { - register int k = dup(i); - - if (k < 0) - return (-1); - if (j == -1 && k > 2) - return (k); - if (k != j) { - j = renum(k, j); - (void) close(k); - return (j); - } + register int k = dup(i); + + if (k < 0) + return (-1); + if (j == -1 && k > 2) return (k); + if (k != j) { + j = renum(k, j); + (void) close(k); + return (j); + } + return (k); } /* @@ -281,80 +298,91 @@ renum(i, j) * the first c arguments. Used in "shift" commands * as well as by commands like "repeat". */ +void lshift(v, c) - register char **v; - register int c; + register Char **v; + register int c; { - register char **u = v; + register Char **u; - while (*u && --c >= 0) - xfree(*u++); - (void) blkcpy(v, u); + for (u = v; *u && --c >= 0; u++) + xfree((ptr_t) *u); + (void) blkcpy(v, u); } +int number(cp) - char *cp; + Char *cp; { - - if (*cp == '-') { - cp++; - if (!digit(*cp++)) - return (0); - } - while (*cp && digit(*cp)) - cp++; - return (*cp == 0); + if (!cp) + return(0); + if (*cp == '-') { + cp++; + if (!Isdigit(*cp)) + return (0); + cp++; + } + while (*cp && Isdigit(*cp)) + cp++; + return (*cp == 0); } -char ** +Char ** copyblk(v) - register char **v; + register Char **v; { - register char **nv = - (char **) calloc((unsigned) (blklen(v) + 1), sizeof (char **)); + Char **nv = (Char **) xcalloc((size_t) (blklen(v) + 1), sizeof(Char **)); - return (blkcpy(nv, v)); + return (blkcpy(nv, v)); } -char * +#ifndef SHORT_STRINGS +char * strend(cp) - register char *cp; + register char *cp; { - - while (*cp) - cp++; + if (!cp) return (cp); + while (*cp) + cp++; + return (cp); } -char * +#endif /* SHORT_STRINGS */ + +Char * strip(cp) - char *cp; + Char *cp; { - register char *dp = cp; + register Char *dp = cp; - while (*dp++ &= TRIM) - continue; + if (!cp) return (cp); + while (*dp++ &= TRIM) + continue; + return (cp); } +void udvar(name) - char *name; + Char *name; { - setname(name); - bferr("Undefined variable"); + setname(short2str(name)); + stderror(ERR_NAME | ERR_UNDVAR); } +int prefix(sub, str) - register char *sub, *str; + register Char *sub, *str; { - for (;;) { - if (*sub == 0) - return (1); - if (*str == 0) - return (0); - if (*sub++ != *str++) - return (0); - } + for (;;) { + if (*sub == 0) + return (1); + if (*str == 0) + return (0); + if (*sub++ != *str++) + return (0); + } }