]> arthur.barton.de Git - netatalk.git/commitdiff
volume.c file.h file.c
authordidg <didg>
Wed, 21 Aug 2002 07:52:03 +0000 (07:52 +0000)
committerdidg <didg>
Wed, 21 Aug 2002 07:52:03 +0000 (07:52 +0000)
bugfix: try to get file's type/creator right when renaming a file with default
finder info.

etc/afpd/file.c
etc/afpd/file.h
etc/afpd/volume.c

index 86c4c6dc7d3f0c94165ff5677c53ea04b4c6c54a..0853939ce0cf4c53ab759fd251b1e9d7eeb54fd9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: file.c,v 1.48 2002-08-20 19:40:43 srittau Exp $
+ * $Id: file.c,v 1.49 2002-08-21 07:52:04 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -186,9 +186,9 @@ int getmetadata(struct vol *vol,
                 }
             }
 
-            if ((!adp || (memcmp(ad_entry(adp, ADEID_FINDERI),
-                                  ufinderi, 8 ) == 0)) &&
-                    (em = getextmap( path ))) {
+            if ((!adp  || !memcmp(ad_entry(adp, ADEID_FINDERI),ufinderi , 8 )) 
+               && (em = getextmap( path ))
+            ) {
                 memcpy(data, em->em_type, sizeof( em->em_type ));
                 memcpy(data + 4, em->em_creator, sizeof(em->em_creator));
             }
@@ -709,13 +709,18 @@ int setfilparams(struct vol *vol,
             break;
 
         case FILPBIT_FINFO :
-            if ((memcmp( ad_entry( adp, ADEID_FINDERI ), ufinderi, 8 ) == 0)
-                    && (em = getextmap( path )) &&
-                    (memcmp(buf, em->em_type, sizeof( em->em_type )) == 0) &&
-                    (memcmp(buf + 4, em->em_creator,
-                            sizeof( em->em_creator )) == 0)) {
+            if (!memcmp( ad_entry( adp, ADEID_FINDERI ), ufinderi, 8 )
+                    && ( 
+                     ((em = getextmap( path )) &&
+                      !memcmp(buf, em->em_type, sizeof( em->em_type )) &&
+                      !memcmp(buf + 4, em->em_creator,sizeof( em->em_creator)))
+                     || ((em = getdefextmap()) &&
+                      !memcmp(buf, em->em_type, sizeof( em->em_type )) &&
+                      !memcmp(buf + 4, em->em_creator,sizeof( em->em_creator)))
+            )) {
                 memcpy(buf, ufinderi, 8 );
             }
+
             memcpy(ad_entry( adp, ADEID_FINDERI ), buf, 32 );
             buf += 32;
             break;
index 3deb96d9fa98fe100686963d80610d6582836369..922de219cab7c1d88a5009865279ce7b477a3371 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: file.h,v 1.8 2002-06-17 18:23:03 didg Exp $
+ * $Id: file.h,v 1.9 2002-08-21 07:52:03 didg Exp $
  *
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
  * All Rights Reserved.
@@ -73,6 +73,7 @@ struct extmap {
 };
 
 extern struct extmap   *getextmap __P((const char *));
+extern struct extmap   *getdefextmap __P((void));
 
 extern int getfilparams __P((struct vol *, u_int16_t, char *,
                                  struct dir *, struct stat *, char *buf,
index 20b03f473faf29f4d47ba0fba02324df3093430e..436533dbae3933bf8567a6f81917f05abf0d93c2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: volume.c,v 1.30 2002-08-20 19:40:44 srittau Exp $
+ * $Id: volume.c,v 1.31 2002-08-21 07:52:03 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -1286,6 +1286,11 @@ struct extmap *getextmap(const char *path)
     }
 }
 
+struct extmap *getdefextmap(void)
+{
+    return( defextmap );
+}
+
 void setvoltime(obj, vol )
 AFPObj *obj;
 struct vol     *vol;