 etc/afpd/desktop.c                 |   37 ++++++++++++++++++++++++++++++++++++-
 etc/afpd/status.c                  |    2 +-
 etc/afpd/volume.c                  |   30 ++++++------------------------
 libatalk/cnid/cdb/cnid_cdb_close.c |    2 +-
 libatalk/cnid/cnid.c               |    4 ++--
 libatalk/cnid/db3/cnid_db3_close.c |    2 +-
 libatalk/cnid/dbd/cnid_dbd.c       |    2 +-
 macros/cups.m4                     |    2 +-
 macros/quota-check.m4              |    2 +-
 9 files changed, 50 insertions(+), 33 deletions(-)

Index: etc/afpd/desktop.c
===================================================================
RCS file: /cvsroot/netatalk/netatalk/etc/afpd/desktop.c,v
retrieving revision 1.37
diff -u -p -r1.37 desktop.c
--- etc/afpd/desktop.c	29 Sep 2006 09:39:16 -0000	1.37
+++ etc/afpd/desktop.c	21 Sep 2009 19:05:16 -0000
@@ -40,6 +40,20 @@
 #include "mangle.h"
 
 
+typedef struct _U2MMAP {
+    char *mname;
+    char *uname;
+} U2MMAP;
+
+U2MMAP u2mmap[] = {
+    { "Network Trash Folder", ".AppleTrash" },
+    { "Temporary Items", ".AppleTemp" },
+    { "TheVolumeSettingsFolder", ".AppleVolumeSettings" },
+    { "TheFindByContentFolder", ".AppleFindByContent" },
+    { 0L, 0L } /* end of list */
+};
+
+
 int afp_opendt(obj, ibuf, ibuflen, rbuf, rbuflen )
 AFPObj  *obj _U_;
 char	*ibuf, *rbuf;
@@ -626,7 +640,8 @@ char *mtoupath(const struct vol *vol, ch
     size_t       inplen;
     size_t       outlen;
     u_int16_t	 flags = 0;
-        
+    U2MMAP       *u2m;
+
     if ( *mpath == '\0' ) {
         return( "." );
     }
@@ -654,6 +669,15 @@ char *mtoupath(const struct vol *vol, ch
     m = mpath;
     u = upath;
 
+    u2m = u2mmap;
+    while( u2m->mname )
+    {
+        if (strcmp(m, u2m->mname) == 0) {
+            m = u2m->uname;
+        }
+        u2m++;
+    }
+
     inplen = strlen(m);
     outlen = MAXPATHLEN;
 
@@ -677,6 +701,7 @@ char *utompath(const struct vol *vol, ch
     char        *m, *u;
     u_int16_t    flags = CONV_IGNORE | CONV_UNESCAPEHEX;
     size_t       outlen;
+    U2MMAP       *u2m;
 
     m = mpath;
     outlen = strlen(upath);
@@ -697,6 +722,7 @@ char *utompath(const struct vol *vol, ch
         LOG(log_error, logtype_afpd, "Conversion from %s to %s for %s (%u) failed.", vol->v_volcodepage, vol->v_maccodepage, u, ntohl(id));
 	goto utompath_error;
     }
+    mpath[outlen] = 0; 
 
     if (!(flags & CONV_REQMANGLE)) 
         flags = 0;
@@ -706,6 +732,15 @@ char *utompath(const struct vol *vol, ch
     if (utf8)
         flags |= 2;
 
+    u2m = u2mmap;
+    while( u2m->mname )
+    {
+        if (strcmp(mpath, u2m->uname) == 0) {
+            strcpy(mpath, u2m->mname);
+        }
+        u2m++;
+    }
+
     m = mangle(vol, mpath, outlen, upath, id, flags);
 
 #ifdef DEBUG
Index: etc/afpd/status.c
===================================================================
RCS file: /cvsroot/netatalk/netatalk/etc/afpd/status.c,v
retrieving revision 1.23
diff -u -p -r1.23 status.c
--- etc/afpd/status.c	5 Apr 2009 07:22:06 -0000	1.23
+++ etc/afpd/status.c	21 Sep 2009 19:05:16 -0000
@@ -182,7 +182,7 @@ static u_int16_t status_signature(char *
     }
     usersign = options->signature + 5;
         if (strlen(usersign) < 3) 
-	    LOG(log_warning, logtype_afpd, "Signature %s is very short !", 
+	    LOG(log_warning, logtype_afpd, "Signature %s is very short!", 
 			    options->signature);
     
         memset(data, 0, 16);
Index: etc/afpd/volume.c
===================================================================
RCS file: /cvsroot/netatalk/netatalk/etc/afpd/volume.c,v
retrieving revision 1.90
diff -u -p -r1.90 volume.c
--- etc/afpd/volume.c	11 Sep 2009 09:14:16 -0000	1.90
+++ etc/afpd/volume.c	21 Sep 2009 19:05:17 -0000
@@ -56,6 +56,7 @@ char *strchr (), *strrchr ();
 #include "unix.h"
 #include "mangle.h"
 #include "fork.h"
+#include "desktop.h"
 
 extern int afprun(int root, char *cmd, int *outfd);
 
@@ -420,7 +421,7 @@ static void volset(struct vol_option *op
         setoption(options, save, VOLOPT_ROLIST, val);
 
     } else if (optionok(tmp, "codepage:", val)) {
-	LOG (log_error, logtype_afpd, "The old codepage system has been removed. Please make sure to read the documentation !!!!");
+	LOG (log_error, logtype_afpd, "The old codepage system has been removed. Please make sure to read the documentation!");
 	/* Make sure we don't screw anything */
 	exit (EXITERR_CONF);
     } else if (optionok(tmp, "volcharset:", val)) {
@@ -1949,7 +1950,7 @@ int	ibuflen _U_, *rbuflen;
     }
 
     if ( NULL == ( volume->v_vol = find_charset_functions(volume->v_volcodepage)) || volume->v_vol->flags & CHARSET_ICONV ) {
-	LOG (log_warning, logtype_afpd, "WARNING: volume encoding %s is *not* supported by netatalk, expect problems !!!!", volume->v_volcodepage);
+	LOG (log_warning, logtype_afpd, "WARNING: volume encoding %s is *not* supported by netatalk, expect problems!", volume->v_volcodepage);
     }	
 
     if (!volume->v_maccodepage)
@@ -2320,44 +2321,27 @@ int wincheck(const struct vol *vol, cons
  */
 static int create_special_folder (const struct vol *vol, const struct _special_folder *folder)
 {
-	char 		*p,*q,*r;
+	char 		*p;
     	struct adouble	ad;
 	u_int16_t	attr;
 	struct stat	st;
 	int		ret;
 
-
-	p = (char *) malloc ( strlen(vol->v_path)+strlen(folder->name)+2);
+	p = (char *) malloc (MAXPATHLEN);
 	if ( p == NULL) {
 		LOG(log_error, logtype_afpd,"malloc failed");
 		exit (EXITERR_SYS);
 	}
 
-	q=strdup(folder->name);
-	if ( q == NULL) {
-		LOG(log_error, logtype_afpd,"malloc failed");
-		exit (EXITERR_SYS);
-	}
-
 	strcpy(p, vol->v_path);
 	strcat(p, "/");
-
-	r=q;
-	while (*r) {
-    		if ((vol->v_casefold & AFPVOL_MTOUUPPER))
-			*r=toupper(*r);
-    		else if ((vol->v_casefold & AFPVOL_MTOULOWER))
-			*r=tolower(*r);
-		r++;
-	}
-	strcat(p, q);
+	strcat(p, mtoupath(vol, (char *)folder->name, (cnid_t)0, 0));
 
     	if ( (ret = stat( p, &st )) < 0 ) {
 		if (folder->precreate) {
 		    if (ad_mkdir(p, folder->mode)) {
 			LOG(log_debug, logtype_afpd,"Creating '%s' failed in %s: %s", p, vol->v_path, strerror(errno));
 			free(p);
-			free(q);
 			return -1;
                     }
 		    ret = 0;
@@ -2370,7 +2354,6 @@ static int create_special_folder (const 
 		if (ad_open( p, vol_noadouble(vol) | ADFLAGS_HF|ADFLAGS_DIR,
                  	O_RDWR|O_CREAT, 0666, &ad) < 0) {
 			free (p);
-			free(q);
 			return (-1);
 		}
     		if ((ad_get_HF_flags( &ad ) & O_CREAT) ) {
@@ -2396,7 +2379,6 @@ static int create_special_folder (const 
         	ad_close( &ad, ADFLAGS_HF );
 	}
 	free(p);
-	free(q);
 	return 0;
 }
 
Index: libatalk/cnid/cnid.c
===================================================================
RCS file: /cvsroot/netatalk/netatalk/libatalk/cnid/cnid.c,v
retrieving revision 1.5
diff -u -p -r1.5 cnid.c
--- libatalk/cnid/cnid.c	20 Jul 2009 18:33:07 -0000	1.5
+++ libatalk/cnid/cnid.c	21 Sep 2009 19:05:17 -0000
@@ -49,7 +49,7 @@ void cnid_register(struct _cnid_module *
     /* Check if our module is already registered. */
     list_for_each(ptr, &modules)
         if (0 == strcmp(list_entry(ptr, cnid_module, db_list)->name, module->name)) {
-        LOG(log_error, logtype_afpd, "Module with name [%s] is already registered !", module->name);
+        LOG(log_error, logtype_afpd, "Module with name [%s] is already registered!", module->name);
         return;
     }
 
@@ -184,7 +184,7 @@ void cnid_close(struct _cnid_db *db)
 u_int32_t flags;
 
     if (NULL == db) {
-        LOG(log_error, logtype_afpd, "Error: cnid_close called with NULL argument !");
+        LOG(log_error, logtype_afpd, "Error: cnid_close called with NULL argument!");
         return;
     }
     /* cnid_close free db */
Index: libatalk/cnid/cdb/cnid_cdb_close.c
===================================================================
RCS file: /cvsroot/netatalk/netatalk/libatalk/cnid/cdb/cnid_cdb_close.c,v
retrieving revision 1.2
diff -u -p -r1.2 cnid_cdb_close.c
--- libatalk/cnid/cdb/cnid_cdb_close.c	28 Apr 2005 20:49:59 -0000	1.2
+++ libatalk/cnid/cdb/cnid_cdb_close.c	21 Sep 2009 19:05:17 -0000
@@ -13,7 +13,7 @@ void cnid_cdb_close(struct _cnid_db *cdb
     CNID_private *db;
 
     if (!cdb) {
-	    LOG(log_error, logtype_afpd, "cnid_close called with NULL argument !");
+	    LOG(log_error, logtype_afpd, "cnid_close called with NULL argument!");
 	    return;
     }
 
Index: libatalk/cnid/db3/cnid_db3_close.c
===================================================================
RCS file: /cvsroot/netatalk/netatalk/libatalk/cnid/db3/cnid_db3_close.c,v
retrieving revision 1.2
diff -u -p -r1.2 cnid_db3_close.c
--- libatalk/cnid/db3/cnid_db3_close.c	28 Apr 2005 20:49:59 -0000	1.2
+++ libatalk/cnid/db3/cnid_db3_close.c	21 Sep 2009 19:05:17 -0000
@@ -32,7 +32,7 @@ void cnid_db3_close(struct _cnid_db *cdb
     int rc;
 
     if (!cdb) {
-	    LOG(log_error, logtype_afpd, "cnid_close called with NULL argument !");
+	    LOG(log_error, logtype_afpd, "cnid_close called with NULL argument!");
 	    return;
     }
 
Index: libatalk/cnid/dbd/cnid_dbd.c
===================================================================
RCS file: /cvsroot/netatalk/netatalk/libatalk/cnid/dbd/cnid_dbd.c,v
retrieving revision 1.9
diff -u -p -r1.9 cnid_dbd.c
--- libatalk/cnid/dbd/cnid_dbd.c	21 Jul 2009 13:41:16 -0000	1.9
+++ libatalk/cnid/dbd/cnid_dbd.c	21 Sep 2009 19:05:18 -0000
@@ -475,7 +475,7 @@ void cnid_dbd_close(struct _cnid_db *cdb
     CNID_private *db;
 
     if (!cdb) {
-        LOG(log_error, logtype_cnid, "cnid_close called with NULL argument !");
+        LOG(log_error, logtype_cnid, "cnid_close called with NULL argument!");
         return;
     }
 
Index: macros/cups.m4
===================================================================
RCS file: /cvsroot/netatalk/netatalk/macros/cups.m4,v
retrieving revision 1.2
diff -u -p -r1.2 cups.m4
--- macros/cups.m4	28 Apr 2005 20:50:05 -0000	1.2
+++ macros/cups.m4	21 Sep 2009 19:05:18 -0000
@@ -42,7 +42,7 @@ AC_DEFUN([NETATALK_AC_CUPS], [
 
 
 	AC_ARG_WITH(spooldir,
-       	[  --with-spooldir=PATH     path for spooldir used for CUPS support (LOCALSTATEDIR/spool/netatalk)],[
+       	[  --with-spooldir=PATH    path for spooldir used for CUPS support (LOCALSTATEDIR/spool/netatalk)],[
 
 	        if test "$withval" = "no"; then
         	       if test x"$spool_required" == x"yes"; then
Index: macros/quota-check.m4
===================================================================
RCS file: /cvsroot/netatalk/netatalk/macros/quota-check.m4,v
retrieving revision 1.6
diff -u -p -r1.6 quota-check.m4
--- macros/quota-check.m4	20 Jul 2005 23:58:21 -0000	1.6
+++ macros/quota-check.m4	21 Sep 2009 19:05:18 -0000
@@ -4,7 +4,7 @@ dnl FIXME: This is in now way complete.
 
 AC_DEFUN([AC_CHECK_QUOTA], [
 	AC_ARG_ENABLE(quota,
-	[  --enable-quota           Turn on quota support (default=auto)])
+	[  --enable-quota          Turn on quota support (default=auto)])
 
 	if test x$enable_quota != xno; then
 	QUOTA_LIBS=""
