lint
[unix-history] / usr / src / sys / ufs / ffs / ufs_lookup.c
index 244bb4a..e959eed 100644 (file)
@@ -1,4 +1,4 @@
-/*     ufs_lookup.c    4.10    82/02/27        */
+/*     ufs_lookup.c    4.13    82/03/13        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -32,7 +32,6 @@ namei(func, flag, follow)
        struct inode *pdp;
        int i, nlink;
        dev_t d;
        struct inode *pdp;
        int i, nlink;
        dev_t d;
-       ino_t ino;
        off_t eo;
 
        /*
        off_t eo;
 
        /*
@@ -41,7 +40,16 @@ namei(func, flag, follow)
        nbp = geteblk();
        nlink = 0;
        for (i=0, cp = nbp->b_un.b_addr; *cp = (*func)(); i++) {
        nbp = geteblk();
        nlink = 0;
        for (i=0, cp = nbp->b_un.b_addr; *cp = (*func)(); i++) {
+               if ((*cp&0377) == ('/'|0200)) {
+                       u.u_error = EPERM;
+                       break;
+               }
+#ifdef notdef
                if (*cp++&0200 && flag==1 || cp >= nbp->b_un.b_addr+BSIZE) {
                if (*cp++&0200 && flag==1 || cp >= nbp->b_un.b_addr+BSIZE) {
+#else
+               cp++;
+               if (cp >= nbp->b_un.b_addr+BSIZE) {
+#endif
                        u.u_error = ENOENT;
                        break;
                }
                        u.u_error = ENOENT;
                        break;
                }
@@ -76,11 +84,17 @@ dirloop:
                u.u_error = ENOTDIR;
        (void) access(dp, IEXEC);
        for (i=0; *cp!='\0' && *cp!='/'; i++) {
                u.u_error = ENOTDIR;
        (void) access(dp, IEXEC);
        for (i=0; *cp!='\0' && *cp!='/'; i++) {
+#ifdef notdef
                if (i >= DIRSIZ) {
                        u.u_error = ENOENT;
                        break;
                }
                u.u_dbuf[i] = *cp++;
                if (i >= DIRSIZ) {
                        u.u_error = ENOENT;
                        break;
                }
                u.u_dbuf[i] = *cp++;
+#else
+               if (i < DIRSIZ)
+                       u.u_dbuf[i] = *cp;
+               cp++;
+#endif
        }
        if (u.u_error)
                goto out;
        }
        if (u.u_error)
                goto out;
@@ -165,7 +179,6 @@ dirloop:
                        }
                }
                d = dp->i_dev;
                        }
                }
                d = dp->i_dev;
-               ino = dp->i_number;
                irele(dp);
                pdp = dp;
                dp = iget(d, u.u_dent.d_ino);
                irele(dp);
                pdp = dp;
                dp = iget(d, u.u_dent.d_ino);
@@ -187,14 +200,16 @@ dirloop:
                                iput(pdp);
                                goto out;
                        }
                                iput(pdp);
                                goto out;
                        }
-                       bcopy(ocp, nbp->b_un.b_addr+dp->i_size, cp-ocp);
+                       bcopy(ocp, nbp->b_un.b_addr+dp->i_size,
+                         (unsigned)(cp-ocp));
                        bp = bread(dp->i_dev, bmap(dp, (daddr_t)0, B_READ));
                        if (bp->b_flags & B_ERROR) {
                                brelse(bp);
                                iput(pdp);
                                goto out;
                        }
                        bp = bread(dp->i_dev, bmap(dp, (daddr_t)0, B_READ));
                        if (bp->b_flags & B_ERROR) {
                                brelse(bp);
                                iput(pdp);
                                goto out;
                        }
-                       bcopy(bp->b_un.b_addr, nbp->b_un.b_addr, dp->i_size);
+                       bcopy(bp->b_un.b_addr, nbp->b_un.b_addr,
+                         (unsigned)dp->i_size);
                        brelse(bp);
                        cp = nbp->b_un.b_addr;
                        iput(dp);
                        brelse(bp);
                        cp = nbp->b_un.b_addr;
                        iput(dp);