]> arthur.barton.de Git - netatalk.git/commitdiff
of_findname
authordidg <didg>
Fri, 6 Sep 2002 02:57:49 +0000 (02:57 +0000)
committerdidg <didg>
Fri, 6 Sep 2002 02:57:49 +0000 (02:57 +0000)
etc/afpd/file.c
etc/afpd/ofork.c

index dcbc9b10fc03b0e79e9135c91631ea590624dad4..b12c723f70e8789484784b2ad1653dc9f695e326 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: file.c,v 1.55 2002-09-05 14:52:05 didg Exp $
+ * $Id: file.c,v 1.56 2002-09-06 02:57:49 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -977,19 +977,19 @@ int               ibuflen, *rbuflen;
         }
     }
 
-    if ( (err = copyfile(p, upath, newname,
-                         vol_noadouble(vol))) < 0 ) {
+    if ( (err = copyfile(p, mtoupath(vol, newname), 
+                            newname, vol_noadouble(vol))) < 0 ) {
         return err;
     }
 
-    setvoltime(obj, vol );
-
 #ifdef DROPKLUDGE
     if (vol->v_flags & AFPVOL_DROPBOX) {
         retvalue=matchfile2dirperms(newname, vol, sdid);
     }
 #endif /* DROPKLUDGE */
 
+    setvoltime(obj, vol );
+
 #ifdef DEBUG
     LOG(log_info, logtype_afpd, "end afp_copyfile:");
 #endif /* DEBUG */
index b8717cd0ee426b9499563d52a2d7b5bad4b93a53..2925977c2705d266c4a36a583571ad615f29cd56 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: ofork.c,v 1.18 2002-09-05 14:52:07 didg Exp $
+ * $Id: ofork.c,v 1.19 2002-09-06 02:57:49 didg Exp $
  *
  * Copyright (c) 1996 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -37,8 +37,8 @@ static u_short                lastrefnum = 0;
 /* OR some of each character for the hash*/
 static __inline__ unsigned long hashfn(const struct file_key *key)
 {
-    unsigned long i = 0;
 #if 0
+    unsigned long i = 0;
     while (*name) {
         i = ((i << 4) | (8*sizeof(i) - 4)) ^ *name++;
     }
@@ -115,24 +115,24 @@ const char *oldpath, *newpath;
         if (vol == of->of_vol && olddir == of->of_dir &&
                 s_of->key.dev == of->key.dev && 
                 s_of->key.inode == of->key.inode ) {
-            of_unhash(of);
             strncpy( of->of_name, newpath, of->of_namelen);
-            of->of_d_prev->of_d_next = of->of_d_next;
-            of->of_d_next->of_d_prev = of->of_d_prev;
-            if (of->of_dir->d_ofork == of) {
-                of->of_dir->d_ofork = (of == of->of_d_next) ? NULL : of->of_d_next;
-            }      
-            of->of_dir = newdir;
-            if (!(d_ofork = newdir->d_ofork)) {
-                newdir->d_ofork = of;
-                of->of_d_next = of->of_d_prev = of;
-            } else {
-                of->of_d_next = d_ofork;
-                of->of_d_prev = d_ofork->of_d_prev;
-                of->of_d_prev->of_d_next = of;
-                d_ofork->of_d_prev = of;
+            if (newdir != olddir) {
+                of->of_d_prev->of_d_next = of->of_d_next;
+                of->of_d_next->of_d_prev = of->of_d_prev;
+                if (of->of_dir->d_ofork == of) {
+                    of->of_dir->d_ofork = (of == of->of_d_next) ? NULL : of->of_d_next;
+                }          
+                of->of_dir = newdir;
+                if (!(d_ofork = newdir->d_ofork)) {
+                    newdir->d_ofork = of;
+                    of->of_d_next = of->of_d_prev = of;
+                } else {
+                    of->of_d_next = d_ofork;
+                    of->of_d_prev = d_ofork->of_d_prev;
+                    of->of_d_prev->of_d_next = of;
+                    d_ofork->of_d_prev = of;
+                }
             }
-            of_hash(of);
         }
     }