projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update for the 4.4BSD manuals
[unix-history]
/
usr
/
src
/
bin
/
csh
/
misc.c
diff --git
a/usr/src/bin/csh/misc.c
b/usr/src/bin/csh/misc.c
index
49ad4ee
..
f5f92ec
100644
(file)
--- a/
usr/src/bin/csh/misc.c
+++ b/
usr/src/bin/csh/misc.c
@@
-1,260
+1,245
@@
-/*
- * Copyright (c) 1980 Regents of the University of California.
- * All rights reserved. The Berkeley Software License Agreement
- * specifies the terms and conditions for redistribution.
+/*-
+ * Copyright (c) 1980, 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * %sccs.include.redist.c%
*/
#ifndef lint
*/
#ifndef lint
-static char *sccsid = "@(#)misc.c 5.2 (Berkeley) %G%";
+static char sccsid[] = "@(#)misc.c 8.1 (Berkeley) %G%";
+#endif /* not lint */
+
+#include <sys/param.h>
+#include <stdlib.h>
+#include <unistd.h>
+#if __STDC__
+# include <stdarg.h>
+#else
+# include <varargs.h>
#endif
#endif
-#include "sh.h"
+#include "csh.h"
+#include "extern.h"
-/*
- * C Shell
- */
+static int renum __P((int, int));
-letter(c)
- register char c;
+int
+any(s, c)
+ register char *s;
+ register int c;
{
{
-
- return (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c == '_');
+ if (!s)
+ return (0); /* Check for nil pointer */
+ while (*s)
+ if (*s++ == c)
+ return (1);
+ return (0);
}
}
-digit(c)
- register char c;
+void
+setzero(cp, i)
+ char *cp;
+ int i;
{
{
-
- return (c >= '0' && c <= '9');
+ if (i != 0)
+ do
+ *cp++ = 0;
+ while (--i);
}
}
-alnum(c)
- register char c;
+char *
+strsave(s)
+ register char *s;
{
{
-
return (letter(c) || digit(c))
;
-}
+
char *n
;
+ register char *p;
-any(c, s)
- register int c;
- register char *s;
-{
-
- while (*s)
- if (*s++ == c)
- return(1);
- return(0);
+ if (s == NULL)
+ s = "";
+ for (p = s; *p++;)
+ continue;
+ n = p = (char *) xmalloc((size_t) ((p - s) * sizeof(char)));
+ while ((*p++ = *s++) != '\0')
+ continue;
+ return (n);
}
}
-onlyread(cp)
- char *cp;
-{
- extern char end[];
-
- return (cp < end);
-}
-
-xfree(cp)
- char *cp;
-{
- extern char end[];
-
- if (cp >= end && cp < (char *) &cp)
- free(cp);
-}
-
-char *
-savestr(s)
- register char *s;
-{
- char *n;
- register char *p;
-
- if (s == 0)
- s = "";
- for (p = s; *p++;)
- ;
- n = p = xalloc((unsigned) (p - s));
- while (*p++ = *s++)
- ;
- return (n);
-}
-
-char *
-calloc(i, j)
- register unsigned i;
- unsigned j;
-{
- register char *cp, *dp;
-
- i *= j;
- dp = cp = xalloc(i);
- if (i != 0)
- do
- *dp++ = 0;
- while (--i);
- return (cp);
-}
-
-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", vis_str(*av)
);
+ if (av[1])
+
(void) fprintf(fp,
" ");
+ }
}
}
+int
blklen(av)
blklen(av)
-
register c
har **av;
+
register C
har **av;
{
{
-
register int i = 0;
+ register int i = 0;
-
while (*av++)
-
i++;
-
return (i);
+ while (*av++)
+ i++;
+ return (i);
}
}
-
char
**
+
Char
**
blkcpy(oav, bv)
blkcpy(oav, bv)
-
char
**oav;
-
register c
har **bv;
+
Char
**oav;
+
register C
har **bv;
{
{
-
register c
har **av = oav;
+
register C
har **av = oav;
-
while (*av++ = *bv++
)
-
continue;
-
return (oav);
+
while ((*av++ = *bv++) != NULL
)
+ continue;
+ return (oav);
}
}
-
char
**
+
Char
**
blkcat(up, vp)
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)
blkfree(av0)
-
char
**av0;
+
Char
**av0;
{
{
-
register c
har **av = av0;
+
register C
har **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)
saveblk(v)
-
register c
har **v;
+
register C
har **v;
{
{
-
register c
har **newv =
-
(char **) calloc((unsigned) (blklen(v) + 1), sizeof (c
har **));
-
char
**onewv = newv;
+
register C
har **newv =
+
(Char **) xcalloc((size_t) (blklen(v) + 1), sizeof(C
har **));
+
Char
**onewv = newv;
-
while (*v)
-
*newv++ = savestr
(*v++);
-
return (onewv);
+ while (*v)
+
*newv++ = Strsave
(*v++);
+ return (onewv);
}
}
-char *
-strspl(cp, dp)
- char *cp, *dp;
+#ifdef NOTUSED
+char *
+strstr(s, t)
+ register char *s, *t;
{
{
- 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);
+ 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 *ep;
+ register char *p, *q;
+
+ if (!cp)
+ cp = "";
+ if (!dp)
+ dp = "";
+ for (p = cp; *p++;)
+ continue;
+ for (q = dp; *q++;)
+ continue;
+ ep = (char *) xmalloc((size_t) (((p - cp) + (q - dp) - 1) * sizeof(char)));
+ for (p = ep, q = cp; *p++ = *q++;)
+ continue;
+ for (p--, q = dp; *p++ = *q++;)
+ continue;
+ return (ep);
+}
+
+#endif
+
+Char **
blkspl(up, vp)
blkspl(up, vp)
-
register c
har **up, **vp;
+
register C
har **up, **vp;
{
{
-
register c
har **wp =
-
(char **) calloc((unsigned
) (blklen(up) + blklen(vp) + 1),
-
sizeof (c
har **));
+
register C
har **wp =
+
(Char **) xcalloc((size_t
) (blklen(up) + blklen(vp) + 1),
+
sizeof(C
har **));
-
(void) blkcpy(wp, up);
-
return (blkcat(wp, vp));
+ (void) blkcpy(wp, up);
+ return (blkcat(wp, vp));
}
}
+Char
lastchr(cp)
lastchr(cp)
-
register c
har *cp;
+
register C
har *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.
*/
}
/*
* This routine is called after an error to close up
* any units which may have been left open accidentally.
*/
+void
closem()
{
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()
{
donefds()
{
+ (void) close(0);
+ (void) close(1);
+ (void) close(2);
- (void) close(0);
- (void) close(1);
- (void) close(2);
- didfds = 0;
+ didfds = 0;
}
/*
}
/*
@@
-262,145
+247,148
@@
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.
*/
* 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)
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)
if (j != i)
-
(void) close(i);
+ (void) close(i);
return (j);
return (j);
+ }
+ j = dcopy(i, j);
+ if (j != i)
+ (void) close(i);
+ return (j);
}
}
+int
dcopy(i, j)
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)
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);
- }
- return (k);
-}
+ register int k = dup(i);
-#ifndef copy
-copy(to, from, size)
- register char *to, *from;
- re
gister int size
;
-{
-
- if (size)
- do
- *to++ = *from++;
-
while (--size != 0
);
+ if (k < 0)
+ return (-1);
+ if (j == -1 && k > 2)
+ re
turn (k)
;
+
if (k != j)
{
+ j = renum(k, j);
+ (void) close(k);
+ return (j);
+ }
+
return (k
);
}
}
-#endif
/*
* Left shift a command argument list, discarding
* the first c arguments. Used in "shift" commands
* as well as by commands like "repeat".
*/
/*
* Left shift a command argument list, discarding
* the first c arguments. Used in "shift" commands
* as well as by commands like "repeat".
*/
+void
lshift(v, c)
lshift(v, c)
-
register c
har **v;
-
register int c;
+
register C
har **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)
number(cp)
-
char
*cp;
+
Char
*cp;
{
{
-
- if (*cp == '-') {
- cp++;
- if (!digit(*cp++))
- return (0);
- }
- while (*cp && digit(*cp))
- cp++;
- return (*cp == 0);
-}
-
-char **
+ if (!cp)
+ return(0);
+ if (*cp == '-') {
+ cp++;
+ if (!Isdigit(*cp))
+ return (0);
+ cp++;
+ }
+ while (*cp && Isdigit(*cp))
+ cp++;
+ return (*cp == 0);
+}
+
+Char **
copyblk(v)
copyblk(v)
-
register c
har **v;
+
register C
har **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)
strend(cp)
-
register char *cp;
+ register char *cp;
{
{
-
- while (*cp)
- cp++;
+ if (!cp)
return (cp);
return (cp);
+ while (*cp)
+ cp++;
+ return (cp);
}
}
-char *
+#endif /* SHORT_STRINGS */
+
+Char *
strip(cp)
strip(cp)
-
char
*cp;
+
Char
*cp;
{
{
-
register c
har *dp = cp;
+
register C
har *dp = cp;
- while (*dp++ &= TRIM)
- continue;
+ if (!cp)
return (cp);
return (cp);
+ while ((*dp++ &= TRIM) != '\0')
+ continue;
+ return (cp);
}
}
+void
udvar(name)
udvar(name)
-
char
*name;
+
Char
*name;
{
{
-
setname(name
);
-
bferr("Undefined variable"
);
+
setname(vis_str(name)
);
+
stderror(ERR_NAME | ERR_UNDVAR
);
}
}
+int
prefix(sub, str)
prefix(sub, str)
-
register c
har *sub, *str;
+
register C
har *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);
+ }
}
}