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
consistency with tty.c about value for "no pgrp"
[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
cae8873
..
fdb2eaa
100644
(file)
--- a/
usr/src/bin/csh/misc.c
+++ b/
usr/src/bin/csh/misc.c
@@
-1,260
+1,228
@@
-/*
- * 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 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * %sccs.include.redist.c%
*/
#ifndef lint
*/
#ifndef lint
-static char sccsid[] = "@(#)misc.c 5.
1
(Berkeley) %G%";
-#endif
not lint
+static char sccsid[] = "@(#)misc.c 5.
8
(Berkeley) %G%";
+#endif
/* not lint */
#include "sh.h"
#include "sh.h"
-/*
- * C Shell
- */
-
-letter(c)
- register char c;
-{
-
- return (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c == '_');
-}
-
-digit(c)
- register char c;
-{
-
- return (c >= '0' && c <= '9');
-}
-
-alnum(c)
- register char c;
-{
- return (letter(c) || digit(c));
-}
-
-any(c, s)
- register int c;
- register char *s;
-{
+static int renum();
- while (*s)
- if (*s++ == c)
- return(1);
- return(0);
-}
-
-onlyread(cp)
- char *cp;
+int
+any(s, c)
+ register char *s;
+ register int c;
{
{
- extern char end[];
-
- return (cp < end);
+ if (!s)
+ return (0); /* Check for nil pointer */
+ while (*s)
+ if (*s++ == c)
+ return (1);
+ return (0);
}
}
-xfree(cp)
- char *cp;
+void
+setzero(cp, i)
+ char *cp;
+ int i;
{
{
- extern char end[];
-
- if (cp >= end && cp < (char *) &cp)
-
free(cp
);
+ if (i != 0)
+ do
+ *cp++ = 0;
+
while (--i
);
}
}
-char *
-s
avestr
(s)
-
register char *s;
+char
*
+s
trsave
(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 *n;
+ register char *p;
-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);
+ if (s == 0)
+ 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);
-}
-
+void
blkpr(av)
blkpr(av)
-
register c
har **av;
+
register C
har **av;
{
{
-
for (; *av; av++) {
-
printf("%s", *av
);
-
if (av[1])
-
printf(" ");
-
}
+ for (; *av; av++) {
+
xprintf("%s", short2str(*av)
);
+ if (av[1])
+
x
printf(" ");
+ }
}
}
+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++)
+ 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 char **v;
+ register Char **v;
+{
+ register Char **newv =
+ (Char **) xcalloc((size_t) (blklen(v) + 1), sizeof(Char **));
+ Char **onewv = newv;
+
+ while (*v)
+ *newv++ = Strsave(*v++);
+ return (onewv);
+}
+
+#ifdef NOTUSED
+char *
+strstr(s, t)
+ register char *s, *t;
{
{
- register char **newv =
-
(char **) calloc((unsigned) (blklen(v) + 1), sizeof (char **))
;
-
char **onewv = newv
;
+ do {
+
register char *ss = s
;
+
register char *tt = t
;
- while (*v)
- *newv++ = savestr(*v++);
- return (onewv);
+ do
+ if (*tt == '\0')
+ return (s);
+ while (*ss++ == *tt++);
+ } while (*s++ != '\0');
+ return ((char *) 0);
}
}
-char *
+#endif /* NOTUSED */
+
+#ifndef SHORT_STRINGS
+char *
strspl(cp, dp)
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)
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 != SHDIAG && f != OLDSTD &&
+ f != FSHTTY)
+ (void) close(f);
}
}
+void
donefds()
{
donefds()
{
-
(void) close(0);
-
(void) close(1);
-
(void) close(2);
-
didfds = 0;
+ (void) close(0);
+ (void) close(1);
+ (void) close(2);
+ didfds = 0;
}
/*
}
/*
@@
-262,145
+230,146
@@
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 (j != i)
- (void) close(i);
+ if (i == j || i < 0)
+ return (i);
+ if (j >= 0) {
+ (void) dup2(i, j);
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 c
har **u = v;
+
register C
har **u = v;
-
while (*u && --c >= 0)
-
xfree(*
u++);
-
(void) blkcpy(v, u);
+ while (*u && --c >= 0)
+
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)
+ continue;
+ return (cp);
}
}
+void
udvar(name)
udvar(name)
-
char
*name;
+
Char
*name;
{
{
-
setname(name
);
-
bferr("Undefined variable"
);
+
setname(short2str(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);
+ }
}
}