]> arthur.barton.de Git - netatalk.git/commitdiff
factorize resource fork name attribute setting.
authordidg <didg>
Thu, 11 Mar 2004 16:16:40 +0000 (16:16 +0000)
committerdidg <didg>
Thu, 11 Mar 2004 16:16:40 +0000 (16:16 +0000)
etc/afpd/desktop.c
etc/afpd/directory.c
etc/afpd/file.c
etc/afpd/fork.c
include/atalk/adouble.h
libatalk/adouble/ad_attr.c

index 2fa630487737001230b7e196112f2a2a90d9f589..827953d68d89518431d86497c3d451e5e8d2e27f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: desktop.c,v 1.26.2.4.2.10 2004-03-11 02:01:59 didg Exp $
+ * $Id: desktop.c,v 1.26.2.4.2.11 2004-03-11 16:16:40 didg Exp $
  *
  * See COPYRIGHT.
  *
@@ -737,9 +737,7 @@ static int ad_addcomment(struct vol *vol, struct path *path, char *ibuf)
         } else {
             name = path->m_name;
         }
-        ad_setentrylen( adp, ADEID_NAME, strlen( name ));
-        memcpy( ad_entry( adp, ADEID_NAME ), name,
-                ad_getentrylen( adp, ADEID_NAME ));
+        ad_setname(adp, name);
     }
 
     ad_setentrylen( adp, ADEID_COMMENT, clen );
index 288df1b94d6cd3af10295214f2bd5d5beeefccc9..0cd45be65b8a730128d8fe2a9e090b36469f82e6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: directory.c,v 1.71.2.4.2.11 2004-03-11 02:01:59 didg Exp $
+ * $Id: directory.c,v 1.71.2.4.2.12 2004-03-11 16:16:40 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -1638,10 +1638,8 @@ int setdirparams(const struct vol *vol,
          * Check to see if a create was necessary. If it was, we'll want
          * to set our name, etc.
          */
-        if ( (ad_get_HF_flags( &ad ) & O_CREAT) && ad_getentryoff(&ad, ADEID_NAME)) {
-            ad_setentrylen( &ad, ADEID_NAME, strlen( curdir->d_m_name ));
-            memcpy( ad_entry( &ad, ADEID_NAME ), curdir->d_m_name,
-                    ad_getentrylen( &ad, ADEID_NAME ));
+        if ( (ad_get_HF_flags( &ad ) & O_CREAT)) {
+            ad_setname(&ad, curdir->d_m_name);
         }
     }
 
@@ -2026,12 +2024,7 @@ int              ibuflen, *rbuflen;
             goto createdir_done;
         return( AFPERR_ACCESS );
     }
-
-    if (ad_getentryoff(&ad, ADEID_NAME)) {
-        ad_setentrylen( &ad, ADEID_NAME, strlen( s_path->m_name ));
-        memcpy( ad_entry( &ad, ADEID_NAME ), s_path->m_name,
-            ad_getentrylen( &ad, ADEID_NAME ));
-    }
+    ad_setname(&ad, s_path->m_name);
     ad_setid( &ad, (vol->v_flags & AFPVOL_NODEV)?0:s_path->st.st_dev,
                    s_path->st.st_ino, dir->d_did, did, vol->v_stamp);
 
@@ -2102,10 +2095,7 @@ struct dir       *dir, *newparent;
     ad_init(&ad, vol->v_adouble);
 
     if (!ad_open( dst, ADFLAGS_HF|ADFLAGS_DIR, O_RDWR, 0, &ad)) {
-        if (ad_getentryoff(&ad, ADEID_NAME)) {
-            ad_setentrylen( &ad, ADEID_NAME, len );
-            memcpy( ad_entry( &ad, ADEID_NAME ), newname, len );
-        }
+        ad_setname(&ad, newname);
         ad_flush( &ad, ADFLAGS_HF );
         ad_close( &ad, ADFLAGS_HF );
     }
index e3cfc737267c583b8bb19b1a318a67ad3ed0436a..f3b6cf3094902112e2a4287dfc972d7b8d3c99b0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: file.c,v 1.92.2.2.2.19 2004-03-11 12:47:59 didg Exp $
+ * $Id: file.c,v 1.92.2.2.2.20 2004-03-11 16:16:40 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -662,10 +662,7 @@ int                ibuflen, *rbuflen;
     }
 
     path = s_path->m_name;
-    if (ad_getentryoff(adp, ADEID_NAME)) {
-        ad_setentrylen( adp, ADEID_NAME, strlen( path ));
-        memcpy(ad_entry( adp, ADEID_NAME ), path, ad_getentrylen( adp, ADEID_NAME ));
-    }
+    ad_setname(adp, path);
     ad_flush( adp, ADFLAGS_DF|ADFLAGS_HF );
     ad_close( adp, ADFLAGS_DF|ADFLAGS_HF );
 
@@ -799,10 +796,8 @@ int setfilparams(struct vol *vol,
             return vol_noadouble(vol) ? AFP_OK : AFPERR_ACCESS;
         }
         isad = 0;
-    } else if (ad_getentryoff(adp, ADEID_NAME) && (ad_get_HF_flags( adp ) & O_CREAT) ) {
-        ad_setentrylen( adp, ADEID_NAME, strlen( path->m_name ));
-        memcpy(ad_entry( adp, ADEID_NAME ), path->m_name,
-               ad_getentrylen( adp, ADEID_NAME ));
+    } else if ((ad_get_HF_flags( adp ) & O_CREAT) ) {
+        ad_setname(adp, path->m_name);
     }
 
     while ( bitmap != 0 ) {
@@ -957,7 +952,6 @@ char        *src, *dst, *newname;
 struct adouble    *adp;
 {
     char       adsrc[ MAXPATHLEN + 1];
-    int                len;
     int                rc;
 
 #ifdef DEBUG
@@ -1047,11 +1041,7 @@ struct adouble    *adp;
     /* don't care if we can't open the newly renamed ressource fork
      */
     if (!ad_open( dst, ADFLAGS_HF, O_RDWR, 0666, adp)) {
-        if (ad_getentryoff(adp, ADEID_NAME) ) {
-            len = strlen( newname );
-            ad_setentrylen( adp, ADEID_NAME, len );
-            memcpy(ad_entry( adp, ADEID_NAME ), newname, len );
-        }
+        ad_setname(adp, newname);
         ad_flush( adp, ADFLAGS_HF );
         ad_close( adp, ADFLAGS_HF );
     }
@@ -1314,7 +1304,7 @@ const struct vol *s_vol, *d_vol;
 char   *src, *dst, *newname;
 {
     struct adouble     ads, add;
-    int                        len, err = 0;
+    int                        err = 0;
     int                 ret_err = 0;
     int                 adflags;
     int                 noadouble = vol_noadouble(d_vol);
@@ -1368,10 +1358,8 @@ char     *src, *dst, *newname;
        }
     }
 
-    if (!ret_err && newname && ad_getentryoff(&add, ADEID_NAME)) {
-        len = strlen( newname );
-        ad_setentrylen( &add, ADEID_NAME, len );
-        memcpy(ad_entry( &add, ADEID_NAME ), newname, len );
+    if (!ret_err && newname) {
+        ad_setname(&add, newname);
     }
 
     ad_flush( &add, adflags );
index c066e67f0bb4c92aab5fd501b6eb940c5e27f495..660b0c4297826e89ae15fa89a09e4e42e8c51b23 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: fork.c,v 1.51.2.2.2.7 2004-03-11 02:02:01 didg Exp $
+ * $Id: fork.c,v 1.51.2.2.2.8 2004-03-11 16:16:41 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -459,10 +459,7 @@ int                ibuflen, *rbuflen;
     }
 
     if ((adflags & ADFLAGS_HF) && (ad_get_HF_flags( ofork->of_ad) & O_CREAT)) {
-        if (ad_getentryoff(ofork->of_ad, ADEID_NAME)) {
-            ad_setentrylen( ofork->of_ad, ADEID_NAME, strlen( path ));
-            memcpy(ad_entry( ofork->of_ad, ADEID_NAME ), path,
-               ad_getentrylen( ofork->of_ad, ADEID_NAME ));
+        if (ad_setname(ofork->of_ad, path)) {
             ad_flush( ofork->of_ad, adflags );
         }
     }
index bace1fddc5f9d346bf40a711e3e18d8f2a96a116..c6e076e2f1847822c743925e9c45eb3260d67e63 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: adouble.h,v 1.21.6.13 2004-03-11 02:02:04 didg Exp $
+ * $Id: adouble.h,v 1.21.6.14 2004-03-11 16:16:41 didg Exp $
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
  * All Rights Reserved.
  *
@@ -430,6 +430,7 @@ extern int ad_getdate __P((const struct adouble *, unsigned int, u_int32_t *));
 extern int ad_setattr __P((const struct adouble *, const u_int16_t));
 extern int ad_getattr __P((const struct adouble *, u_int16_t *));
 
+extern int ad_setname __P((const struct adouble *, const char *));
 #if AD_VERSION == AD_VERSION2
 extern int ad_setid __P((struct adouble *, const dev_t dev,const ino_t ino, const u_int32_t, const u_int32_t, const void *));
 #else
index 5282485bc2b7be47d6b17b8aaf213d1bcfd25a03..9d35cf0d97d91c441f2112901d1c5c4cd17ee706 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: ad_attr.c,v 1.4.8.4 2004-03-11 02:02:05 didg Exp $
+ * $Id: ad_attr.c,v 1.4.8.5 2004-03-11 16:16:41 didg Exp $
  */
 
 #ifdef HAVE_CONFIG_H
@@ -87,3 +87,16 @@ int ad_setid (struct adouble *adp, const dev_t dev, const ino_t ino , const u_in
 }
 
 #endif
+
+/* ----------------- 
+ * set resource fork filename attribute.
+*/
+int ad_setname(const struct adouble *ad, const char *path)
+{
+    if (ad_getentryoff(ad, ADEID_NAME)) {
+        ad_setentrylen( ad, ADEID_NAME, strlen( path ));
+        memcpy(ad_entry( ad, ADEID_NAME ), path, ad_getentrylen( ad, ADEID_NAME ));
+        return 1;
+    }
+    return 0;
+}