rpms/netatalk/F-10 netatalk-2.0.3-fpsyncdir.patch, NONE, 1.1 netatalk.spec, 1.48, 1.49

Jiri Skala jskala at fedoraproject.org
Fri May 22 11:14:29 UTC 2009


Author: jskala

Update of /cvs/extras/rpms/netatalk/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv23670

Modified Files:
	netatalk.spec 
Added Files:
	netatalk-2.0.3-fpsyncdir.patch 
Log Message:
* Fri May 22 2009 Jiri Skala <jskala at redhat.com> -4:2.0.3-24
- fix #453073 - netatalk: add FPSyncDir patch for Time Machine


netatalk-2.0.3-fpsyncdir.patch:

--- NEW FILE netatalk-2.0.3-fpsyncdir.patch ---
--- netatalk/include/atalk/afp.h	2008-05-14 15:30:52.000000000 +0200
+++ netatalk.syncdir/include/atalk/afp.h	2008-05-14 15:45:40.000000000 +0200
@@ -201,4 +201,7 @@
 #define AFP_ENUMERATE_EXT2      68
 #define AFP_ZZZ                 122
 
+/* version 3.2 */
+#define AFP_FPSYNCDIR		78
+
 #endif
--- netatalk/etc/afpd/switch.c	2008-05-14 15:30:52.000000000 +0200
+++ netatalk.syncdir/etc/afpd/switch.c	2008-05-14 15:36:00.000000000 +0200
@@ -152,7 +152,7 @@
     NULL, NULL, NULL, NULL,
     NULL, NULL, NULL, NULL,					/*  64 -  71 */
     NULL, NULL, NULL, NULL,
-    NULL, NULL, NULL, NULL,					/*  72 -  79 */
+    NULL, NULL, afp_syncdir, NULL,				/*  72 -  79 */
     NULL, NULL, NULL, NULL,
     NULL, NULL, NULL, NULL,					/*  80 -  87 */
     NULL, NULL, NULL, NULL,
--- netatalk/etc/afpd/auth.c	2008-05-14 15:30:52.000000000 +0200
+++ netatalk.syncdir/etc/afpd/auth.c	2008-05-14 15:39:10.000000000 +0200
@@ -76,7 +76,8 @@
             { "AFP2.2",	22 },
 #ifdef AFP3x
             { "AFPX03", 30 },
-            { "AFP3.1", 31 }
+            { "AFP3.1", 31 },
+            { "AFP3.2", 32 }
 #endif            
         };
 
@@ -186,6 +187,7 @@
     else {
         afp_switch = postauth_switch;
         switch (afp_version) {
+        case 32:
         case 31:
 	    uam_afpserver_action(AFP_ENUMERATE_EXT2, UAM_AFPSERVER_POSTAUTH, afp_enumerate_ext2, NULL); 
         case 30:
--- netatalk/etc/afpd/directory.h	2008-05-14 15:30:52.000000000 +0200
+++ netatalk.syncdir/etc/afpd/directory.h	2008-05-14 15:36:39.000000000 +0200
@@ -219,6 +219,7 @@
 extern int      afp_closedir __P((AFPObj *, char *, int, char *, int *));
 extern int	afp_mapid __P((AFPObj *, char *, int, char *, int *));
 extern int	afp_mapname __P((AFPObj *, char *, int, char *, int *));
+extern int      afp_syncdir __P((AFPObj *, char *, int, char *, int *));
 
 /* from enumerate.c */
 extern int	afp_enumerate __P((AFPObj *, char *, unsigned int, char *, unsigned int *));
--- netatalk/etc/afpd/directory.c	2008-05-14 15:30:52.000000000 +0200
+++ netatalk.syncdir/etc/afpd/directory.c	2008-05-14 15:36:36.000000000 +0200
@@ -1962,6 +1962,53 @@
     return err;
 }
 
+
+int afp_syncdir(obj, ibuf, ibuflen, rbuf, rbuflen )
+AFPObj  *obj;
+char    *ibuf, *rbuf;
+int     ibuflen, *rbuflen;
+{
+    DIR                  *dp;
+    int                  dfd;
+    struct vol           *vol;
+    struct dir           *dir;
+    u_int32_t            did;
+    u_int16_t            vid;
+
+    *rbuflen = 0;
+    ibuf += 2;
+
+    memcpy( &vid, ibuf, sizeof( vid ));
+    ibuf += sizeof( vid );
+    if (NULL == (vol = getvolbyvid( vid )) ) {
+        return( AFPERR_PARAM );
+    }
+
+    memcpy( &did, ibuf, sizeof( did ));
+    ibuf += sizeof( did );
+    if (NULL == ( dir = dirlookup( vol, did )) ) {
+        return afp_errno; /* was AFPERR_NOOBJ */
+    }
+
+    if (NULL == ( dp = opendir( "." )) ) {
+        switch( errno ) {
+        case ENOENT :
+            return( AFPERR_NOOBJ );
+        case EACCES :
+            return( AFPERR_ACCESS );
+        default :
+            return( AFPERR_PARAM );
+        }
+    }
+
+    dfd = dirfd( dp );
+    if ( fsync ( dfd ) < 0 ) {
+        LOG(log_error, logtype_afpd, "syncdir(%s): ddir(%d) %s", dir->d_u_name, dfd, strerror(errno) );
+    }
+   
+    return ( AFP_OK );
+}
+
 int afp_createdir(obj, ibuf, ibuflen, rbuf, rbuflen )
 AFPObj      *obj;
 char	*ibuf, *rbuf;


Index: netatalk.spec
===================================================================
RCS file: /cvs/extras/rpms/netatalk/F-10/netatalk.spec,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -p -r1.48 -r1.49
--- netatalk.spec	16 Feb 2009 20:18:26 -0000	1.48
+++ netatalk.spec	22 May 2009 11:13:59 -0000	1.49
@@ -1,7 +1,7 @@
 Summary: AppleTalk networking programs
 Name:    netatalk
 Version: 2.0.3
-Release: 23%{?dist}
+Release: 24%{?dist}
 Epoch:   4
 License: GPLv2+
 Group:   System Environment/Daemons
@@ -19,6 +19,8 @@ Patch7:  netatalk-2.0.3-maxsrv.patch
 Patch8:  netatalk-2.0.3-log_stderr.patch
 Patch9:  netatalk-2.0.3-multiarch.patch
 Patch10: netatalk-2.0.3-papd_cmds.patch
+Patch11: netatalk-2.0.3-fpsyncdir.patch
+
 Url:	 http://netatalk.sourceforge.net/
 Requires: pam
 Requires(post): /sbin/chkconfig /sbin/ldconfig
@@ -54,6 +56,7 @@ programs.
 %patch8  -p1 -b .log_stderr
 %patch9  -p1 -b .multiarch
 %patch10 -p1 -b .papd_cmds
+%patch11 -p1 -b .fpsyncdir
 
 ln -s ./NEWS ChangeLog
 
@@ -194,6 +197,9 @@ fi
 %{_mandir}/man*/netatalk-config.1*
 
 %changelog
+* Fri May 22 2009 Jiri Skala <jskala at redhat.com> -4:2.0.3-24
+- fix #453073 - netatalk: add FPSyncDir patch for Time Machine
+
 * Mon Feb 16 2009 Jiri Skala <jskala at redhat.com> -4:2.0.3-23
 - fix #480641 - CVE-2008-5718 netatalk: papd command injection vulnerability
 




More information about the scm-commits mailing list