]> arthur.barton.de Git - netatalk.git/commitdiff
Merge branch 'develop' of netafp.com:git/netatalk into develop
authorFrank Lahm <franklahm@googlemail.com>
Wed, 30 May 2012 17:57:07 +0000 (19:57 +0200)
committerFrank Lahm <franklahm@googlemail.com>
Wed, 30 May 2012 17:57:07 +0000 (19:57 +0200)
NEWS
distrib/initscripts/.gitignore
distrib/initscripts/Makefile.am
distrib/initscripts/netatalk.xml.tmpl [new file with mode: 0644]
etc/afpd/fork.c
libatalk/adouble/ad_open.c
libatalk/compat/misc.c
macros/netatalk.m4

diff --git a/NEWS b/NEWS
index 5a47f408981acb9fd0ffae366c203e74906d4776..e51ab83f8b8e85be66f3ac96dd9a50d8fd9077a5 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,7 @@
+Changes in 3.0 beta2
+====================
+* UPD: Solaris and friends: Replace initscript with SMF manifest
+
 Changes in 3.0 beta1
 ====================
 * UPD: afpd: Performance tuning of read/write AFP operations. New option
index 949e409accf40ef98e4060d897baf4c570f59e63..125825eb761984ba0e04cc68ba5af8a529a7a658 100644 (file)
@@ -10,5 +10,5 @@ rc.suse
 service.systemd
 netatalk
 netatalk.service
-.gitignore
+netatalk.xml
 *.o
index 0987865f8861586b2d58d7986ef16bc21c6ab50e..4b88ba9d39f6ac37bc4195ff89f0b9459fcb951a 100644 (file)
@@ -23,7 +23,8 @@ GENERATED_FILES = \
        rc.redhat \
        rc.solaris \
        rc.suse \
-       service.systemd
+       service.systemd \
+       netatalk.xml
 
 TEMPLATES = \
        rc.bsd.tmpl \
@@ -33,7 +34,8 @@ TEMPLATES = \
        rc.redhat.tmpl \
        rc.solaris.tmpl \
        rc.suse.tmpl \
-       service.systemd.tmpl
+       service.systemd.tmpl \
+       netatalk.xml.tmpl
 
 CLEANFILES = $(GENERATED_FILES) $(sysv_SCRIPTS) $(service_DATA) afpd cnid_metad
 EXTRA_DIST = $(TEMPLATES)
@@ -137,23 +139,14 @@ endif
 
 if USE_SOLARIS
 
-sysvdir = /etc/init.d
-sysv_SCRIPTS = netatalk
-
-$(sysv_SCRIPTS): rc.solaris
-       cp -f rc.solaris $@
-       chmod a+x $@
+servicedir = /lib/svc/manifest/network/
+service_DATA = netatalk.xml
 
 install-data-hook:
-       rm -f $(DESTDIR)/etc/rc2.d/S90$(sysv_SCRIPTS)
-       -ln -s ../init.d/$(sysv_SCRIPTS) $(DESTDIR)/etc/rc2.d/S90$(sysv_SCRIPTS)
-       rm -f $(DESTDIR)/etc/rc0.d/K04$(sysv_SCRIPTS)
-       -ln -s ../init.d/$(sysv_SCRIPTS) $(DESTDIR)/etc/rc0.d/K04$(sysv_SCRIPTS)
+       svccfg import netatalk.xml
 
 uninstall-startup:
-       rm -f $(DESTDIR)$(sysvdir)/$(sysv_SCRIPTS) \
-               $(DESTDIR)/etc/rc2.d/S90$(sysv_SCRIPTS) \
-               $(DESTDIR)/etc/rc0.d/K04$(sysv_SCRIPTS)
+       svccfg delete network/netatalk
 
 endif
 
diff --git a/distrib/initscripts/netatalk.xml.tmpl b/distrib/initscripts/netatalk.xml.tmpl
new file mode 100644 (file)
index 0000000..ce73954
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+<service_bundle type="manifest" name="netatalk">
+
+    <service name="network/netatalk" type="service" version="1">
+
+        <create_default_instance enabled="true"/>
+        
+        <single_instance/>
+
+        <dependency name="network" grouping="require_all" restart_on="error" type="service">
+            <service_fmri value="svc:/milestone/network:default"/>
+        </dependency>
+
+        <dependency name="filesystem" grouping="require_all" restart_on="error" type="service">
+            <service_fmri value="svc:/system/filesystem/local"/>
+        </dependency>
+
+        <method_context>
+        </method_context>
+
+        <exec_method type="method" name="start" exec=":SBINDIR:/netatalk" timeout_seconds="60"/>
+
+        <exec_method type="method" name="stop" exec=":kill" timeout_seconds="60"/>
+
+        <property_group name="startd" type="framework">
+            <propval name="duration" type="astring" value="contract"/>
+            <propval name="ignore_error" type="astring" value="core,signal"/>
+        </property_group>
+
+        <property_group name="application" type="application">
+            <propval name="config_file" type="astring" value=":ETCDIR:/afp.conf"/>
+        </property_group>
+        
+        <stability value="Evolving"/>
+
+        <template>
+            <common_name>
+                <loctext xml:lang="C">
+                    Netatalk AFP Server
+                </loctext>
+            </common_name>
+        </template>
+
+    </service>
+
+</service_bundle>
index 3bdb5cdee2e9239e6123134e9d306d92d16875f4..8f5a2e671740c36029424008ecda65b1c67d6e2b 100644 (file)
@@ -863,7 +863,6 @@ static int read_fork(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, si
                 of_name(ofork), strerror(errno));
             goto afp_read_exit;
         }
-        dsi_readdone(dsi);
         goto afp_read_done;
     }
 #endif
index bde46e57d7c2f42eb411f43ed38d9e3b03b4d211..c02121ac0d1be8271e6c406418e9e4f9e8525cdc 100644 (file)
@@ -1146,7 +1146,12 @@ static int ad_reso_size(const char *path, int adflags, struct adouble *ad)
     EC_INIT;
     struct stat st;
 
-    LOG(log_debug, logtype_default, "ad_reso_size(\"%s\")", path);
+    if (adflags & ADFLAGS_DIR) {
+        ad->ad_rlen = 0;
+        goto EC_CLEANUP;
+    }
+
+    LOG(log_debug, logtype_default, "ad_reso_size(\"%s\"): BEGIN", path);
 
 #ifdef HAVE_EAFD
     ssize_t easz;
@@ -1155,10 +1160,9 @@ static int ad_reso_size(const char *path, int adflags, struct adouble *ad)
         EC_NEG1( fstat(ad_reso_fileno(ad), &st) );
         ad->ad_rlen = st.st_size;
     } else if (ad_meta_fileno(ad) != -1) {
-        EC_NEG1( easz = sys_fgetxattr(ad_meta_fileno(ad), AD_EA_RESO, NULL, 0) );
-        ad->ad_rlen = easz;
+        EC_NEG1( (ad->ad_rlen = sys_fgetxattr(ad_meta_fileno(ad), AD_EA_RESO, NULL, 0)) );
     } else {
-        EC_FAIL;
+        EC_NEG1( (ad->ad_rlen = sys_lgetxattr(path, AD_EA_RESO, NULL, 0)) );
     }
 
 #else
index 0bd45a7318c871ab34c442ebc8fdaf4cad6c9cc7..5811531520ddcf860da59a6d76dae346d0e8a191 100644 (file)
@@ -11,3 +11,17 @@ int dirfd(DIR *dir)
     return dir->d_fd;
 }
 #endif
+
+#ifndef HAVE_STRNLEN
+size_t strnlen(const char *s, size_t max)
+{
+    size_t len;
+  
+    for (len = 0; len < max; len++) {
+        if (s[len] == '\0') {
+            break;
+        }
+    }
+    return len;  
+}
+#endif
index 6ae3fab2b0d51ac2a6191652376333e40c817c2f..61994a80d2af9b1df194aec07ae32f5ce92c9535 100644 (file)
@@ -101,7 +101,7 @@ dnl Check for optional cracklib support
 AC_DEFUN([AC_NETATALK_CRACKLIB], [
 netatalk_cv_with_cracklib=no
 AC_ARG_WITH(cracklib,
-       [  --with-cracklib=DICT    enable/set location of cracklib dictionary],[
+       [  --with-cracklib[[=DICT]]  enable/set location of cracklib dictionary [[no]]],[
        if test "x$withval" != "xno" ; then
                cracklib="$withval"
                AC_CHECK_LIB(crack, main, [