BSD 3 development
[unix-history] / usr / src / cmd / sdb / sub.c
index ba0227e..60a789d 100644 (file)
@@ -54,6 +54,7 @@ char *s; {
        printf("%s\n", s);
 }
 
        printf("%s\n", s);
 }
 
+char *
 cpstr(p,q)
 char *p, *q; {
        do {
 cpstr(p,q)
 char *p, *q; {
        do {
@@ -77,7 +78,7 @@ chkerr()
 {
        IF errflg ORF mkfault
        THEN    error(errflg);
 {
        IF errflg ORF mkfault
        THEN    error(errflg);
-               reset();
+               longjmp(env, 0);
        FI
 }
 
        FI
 }
 
@@ -98,9 +99,7 @@ eqstr(s1, s2)
 longseek(f, a)
 L_INT a;
 {
 longseek(f, a)
 L_INT a;
 {
-#ifndef EDDT
        return(lseek(f,(long) a,0) != -1);
        return(lseek(f,(long) a,0) != -1);
-#endif
 }
 
 
 }
 
 
@@ -149,8 +148,12 @@ char *pat, *str; {
        p = pat[0];
        s = str[0];
        if (cnt == 8) return(1);
        p = pat[0];
        s = str[0];
        if (cnt == 8) return(1);
-       if (p == '?') return(eqpatr(pat+1, str+1, cnt+1));
+       if (p == '?') {
+               if (s == '\0') return(0);
+               return(eqpatr(pat+1, str+1, cnt+1));
+       }
        if (p == '*') {
        if (p == '*') {
+               if (pat[1] == '\0') return(1);
                for(i=1; i<8-cnt; i++) {
                        if (eqpatr(pat+1, str+i, cnt+i)) return(1);
                        if (str[i] == '\0') return(0);
                for(i=1; i<8-cnt; i++) {
                        if (eqpatr(pat+1, str+i, cnt+i)) return(1);
                        if (str[i] == '\0') return(0);
@@ -268,4 +271,3 @@ char *p; {
        }
        return(value);
 }
        }
        return(value);
 }
-