BSD 4 release
[unix-history] / usr / src / cmd / csh / sh.misc.c
index 3382e67..11210c2 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (c) 1979 Regents of the University of California */
+static char *sccsid = "@(#)sh.misc.c 4.1 10/9/80";
+
 #include "sh.h"
 
 /*
 #include "sh.h"
 
 /*
@@ -19,6 +20,12 @@ digit(c)
        return (c >= '0' && c <= '9');
 }
 
        return (c >= '0' && c <= '9');
 }
 
+alnum(c)
+       register char c;
+{
+       return (letter(c) || digit(c));
+}
+
 any(c, s)
        register int c;
        register char *s;
 any(c, s)
        register int c;
        register char *s;
@@ -32,21 +39,30 @@ any(c, s)
 
 char *
 calloc(i, j)
 
 char *
 calloc(i, j)
-       register int i;
-       int j;
+       register unsigned i;
+       unsigned j;
 {
        register char *cp, *dp;
 {
        register char *cp, *dp;
+#ifdef debug
+       static char *av[2] = {0, 0};
+#endif
 
        i *= j;
        cp = (char *) malloc(i);
        if (cp == 0) {
                child++;
 
        i *= j;
        cp = (char *) malloc(i);
        if (cp == 0) {
                child++;
+#ifndef debug
                error("Out of memory");
                error("Out of memory");
+#else
+               showall(av);
+               printf("i=%d, j=%d: ", i/j, j);
+               printf("Out of memory\n");
                chdir("/usr/bill/cshcore");
                abort();
                chdir("/usr/bill/cshcore");
                abort();
+#endif
        }
        dp = cp;
        }
        dp = cp;
-       if (i > 0)
+       if (i != 0)
                do
                        *dp++ = 0;
                while (--i);
                do
                        *dp++ = 0;
                while (--i);
@@ -71,7 +87,7 @@ blkend(up)
 }
  
 blkpr(av)
 }
  
 blkpr(av)
-       register int *av;
+       register char **av;
 {
 
        for (; *av; av++) {
 {
 
        for (; *av; av++) {
@@ -119,7 +135,7 @@ blkfree(av0)
 
        while (*av)
                xfree(*av++);
 
        while (*av)
                xfree(*av++);
-       xfree(av0);
+       xfree((char *)av0);
 }
 
 char **
 }
 
 char **
@@ -142,7 +158,8 @@ strspl(cp, dp)
        register char *ep = calloc(1, strlen(cp) + strlen(dp) + 1);
 
        strcpy(ep, cp);
        register char *ep = calloc(1, strlen(cp) + strlen(dp) + 1);
 
        strcpy(ep, cp);
-       return (strcat(ep, dp));
+       strcat(ep, dp);
+       return (ep);
 }
 
 char **
 }
 
 char **
@@ -175,7 +192,8 @@ closem()
        register int f;
 
        for (f = 0; f < NOFILE; f++)
        register int f;
 
        for (f = 0; f < NOFILE; f++)
-               if (f != SHIN && f != SHOUT && f != SHDIAG && f != OLDSTD)
+               if (f != SHIN && f != SHOUT && f != SHDIAG && f != OLDSTD &&
+                   f != FSHTTY)
                        close(f);
 }
 
                        close(f);
 }
 
@@ -338,3 +356,17 @@ udvar(name)
        setname(name);
        bferr("Undefined variable");
 }
        setname(name);
        bferr("Undefined variable");
 }
+
+prefix(sub, str)
+       register char *sub, *str;
+{
+
+       for (;;) {
+               if (*sub == 0)
+                       return (1);
+               if (*str == 0)
+                       return (0);
+               if (*sub++ != *str++)
+                       return (0);
+       }
+}