param/loadparm.c: Fix for bad volume label, found by TAKAHASHI Motonobu
authorJeremy Allison <jra@samba.org>
Thu, 28 Jun 2001 23:21:43 +0000 (23:21 +0000)
committerJeremy Allison <jra@samba.org>
Thu, 28 Jun 2001 23:21:43 +0000 (23:21 +0000)
Samba Users Group Japan. Ensure same as in 2.2.x codebase.
Jeremy.
(This used to be commit 5a5d33b9464fe6289e55dbfd229d2859914b9293)

source3/param/loadparm.c

index 4ba219adbf0f7fe7c124cf829ad540d2879117eb..a6bfab880a90c19180cc58acbc8b2f58313458d3 100644 (file)
@@ -997,7 +997,7 @@ static struct parm_struct parm_table[] = {
        {"root preexec close", P_BOOL, P_LOCAL, &sDefault.bRootpreexecClose, NULL, NULL, FLAG_SHARE},
        {"root postexec", P_STRING, P_LOCAL, &sDefault.szRootPostExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT},
        {"available", P_BOOL, P_LOCAL, &sDefault.bAvailable, NULL, NULL, FLAG_BASIC | FLAG_SHARE | FLAG_PRINT},
-       {"volume", P_STRING, P_LOCAL, &sDefault.volume, NULL, NULL, FLAG_SHARE},
+       {"volume", P_STRING, P_LOCAL, &sDefault.volume, NULL, NULL, FLAG_SHARE | FLAG_DOS_STRING},
        {"fstype", P_STRING, P_LOCAL, &sDefault.fstype, NULL, NULL, FLAG_SHARE},
        {"set directory", P_BOOLREV, P_LOCAL, &sDefault.bNo_set_dir, NULL, NULL, FLAG_SHARE},
        {"source environment", P_STRING, P_GLOBAL, &Globals.szSourceEnv, handle_source_env, NULL, 0},
@@ -3439,20 +3439,14 @@ int lp_servicenumber(char *pszServiceName)
 }
 
 /*******************************************************************
-  a useful volume label function
-  ******************************************************************/
+ A useful volume label function. Returns a string in DOS codepage.
+********************************************************************/
+
 char *volume_label(int snum)
 {
        char *ret = lp_volume(snum);
-       if (!*ret) {
-               /* lp_volume returns a unix charset - lp_servicename returns a
-                  dos codepage - convert so volume_label() always returns UNIX.
-               */
-               char *p = dos_to_unix(lp_servicename(snum), False);
-               int len = strlen(p)+1;
-               ret = (char *)talloc(lp_talloc, len);
-               memcpy(ret, p, len);
-       }
+       if (!*ret)
+               return lp_servicename(snum);
        return (ret);
 }