From: Jeremy Allison Date: Thu, 28 Jun 2001 23:21:43 +0000 (+0000) Subject: param/loadparm.c: Fix for bad volume label, found by TAKAHASHI Motonobu X-Git-Tag: samba-2.2.5pre1~1890^2~16 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5a5d33b9464fe6289e55dbfd229d2859914b9293;p=thirdparty%2Fsamba.git param/loadparm.c: Fix for bad volume label, found by TAKAHASHI Motonobu Samba Users Group Japan. Ensure same as in 2.2.x codebase. Jeremy. --- diff --git a/source/param/loadparm.c b/source/param/loadparm.c index 4ba219adbf0..a6bfab880a9 100644 --- a/source/param/loadparm.c +++ b/source/param/loadparm.c @@ -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); }