1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-04 08:22:08 +03:00

reverted lukes changes in param/

apparently they were not deliberate, they were probably a result of
Luke accidentally copying a CVS directory from one spot to another in
error
This commit is contained in:
Andrew Tridgell
-
parent ac91ef3093
commit 2d35d0cf1d
2 changed files with 139 additions and 0 deletions

View File

@ -119,6 +119,7 @@ typedef struct
char *szSMBPasswdFile;
char *szPasswordServer;
char *szSocketOptions;
char *szValidChars;
char *szWorkGroup;
char *szDomainAdminGroup;
char *szDomainGuestGroup;
@ -188,6 +189,7 @@ typedef struct
int lm_announce;
int lm_interval;
int shmem_size;
int client_code_page;
int announce_as; /* This is initialised in init_globals */
int machine_password_timeout;
int change_notify_timeout;
@ -498,8 +500,12 @@ static int default_server_announce;
#define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct))
/* prototypes for the special type handlers */
static BOOL handle_valid_chars(char *pszParmValue, char **ptr);
static BOOL handle_include(char *pszParmValue, char **ptr);
static BOOL handle_copy(char *pszParmValue, char **ptr);
static BOOL handle_character_set(char *pszParmValue, char **ptr);
static BOOL handle_coding_system(char *pszParmValue, char **ptr);
static BOOL handle_client_code_page(char *pszParmValue, char **ptr);
static BOOL handle_vfs_object(char *pszParmValue, char **ptr);
static BOOL handle_source_env(char *pszParmValue, char **ptr);
static BOOL handle_netbios_name(char *pszParmValue, char **ptr);
@ -609,6 +615,8 @@ static struct enum_list enum_ssl_version[] = {
static struct parm_struct parm_table[] = {
{"Base Options", P_SEP, P_SEPARATOR},
{"coding system", P_STRING, P_GLOBAL, &Globals.szCodingSystem, handle_coding_system, NULL, 0},
{"client code page", P_INTEGER, P_GLOBAL, &Globals.client_code_page, handle_client_code_page, NULL, 0},
{"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, NULL, FLAG_BASIC | FLAG_SHARE | FLAG_PRINT | FLAG_DOS_STRING},
{"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_SHARE | FLAG_PRINT | FLAG_DOS_STRING},
{"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_DOS_STRING},
@ -795,6 +803,7 @@ static struct parm_struct parm_table[] = {
{"Filename Handling", P_SEP, P_SEPARATOR},
{"strip dot", P_BOOL, P_GLOBAL, &Globals.bStripDot, NULL, NULL, 0},
{"character set", P_STRING, P_GLOBAL, &Globals.szCharacterSet, handle_character_set, NULL, 0},
{"mangled stack", P_INTEGER, P_GLOBAL, &Globals.mangled_stack, NULL, NULL, 0},
{"default case", P_ENUM, P_LOCAL, &sDefault.iDefaultCase, NULL, enum_case, FLAG_SHARE},
{"case sensitive", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL},
@ -907,6 +916,7 @@ static struct parm_struct parm_table[] = {
{"default", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, 0},
{"message command", P_STRING, P_GLOBAL, &Globals.szMsgCommand, NULL, NULL, 0},
{"dfree command", P_STRING, P_GLOBAL, &Globals.szDfree, NULL, NULL, 0},
{"valid chars", P_STRING, P_GLOBAL, &Globals.szValidChars, handle_valid_chars, NULL, 0},
{"remote announce", P_STRING, P_GLOBAL, &Globals.szRemoteAnnounce, NULL, NULL, 0},
{"remote browse sync", P_STRING, P_GLOBAL, &Globals.szRemoteBrowseSync, NULL, NULL, 0},
{"socket address", P_STRING, P_GLOBAL, &Globals.szSocketAddress, NULL, NULL, 0},
@ -1073,6 +1083,7 @@ static void init_globals(void)
string_set(&Globals.szNISHomeMapName, "auto.home");
#endif
#endif
Globals.client_code_page = DEFAULT_CLIENT_CODE_PAGE;
Globals.bTimeServer = False;
Globals.bBindInterfacesOnly = False;
Globals.bUnixPasswdSync = False;
@ -1142,6 +1153,12 @@ static void init_globals(void)
string_set(&Globals.szWinbindSeparator, "\\");
Globals.winbind_cache_time = 15;
/*
* This must be done last as it checks the value in
* client_code_page.
*/
interpret_coding_system(KANJI);
}
/***************************************************************************
@ -1427,6 +1444,7 @@ FN_GLOBAL_INTEGER(lp_security, &Globals.security)
FN_GLOBAL_INTEGER(lp_maxdisksize, &Globals.maxdisksize)
FN_GLOBAL_INTEGER(lp_lpqcachetime, &Globals.lpqcachetime)
FN_GLOBAL_INTEGER(lp_syslog, &Globals.syslog)
FN_GLOBAL_INTEGER(lp_client_code_page, &Globals.client_code_page)
static FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as)
FN_GLOBAL_INTEGER(lp_lm_announce, &Globals.lm_announce)
FN_GLOBAL_INTEGER(lp_lm_interval, &Globals.lm_interval)
@ -1642,6 +1660,7 @@ static int add_a_service(service * pservice, char *name)
if (name)
{
string_set(&iSERVICE(i).szService, name);
unix_to_dos(iSERVICE(i).szService, True);
}
return (i);
}
@ -2065,6 +2084,7 @@ static BOOL handle_netbios_name(char *pszParmValue, char **ptr)
* Convert from UNIX to DOS string - the UNIX to DOS converter
* isn't called on the special handlers.
*/
unix_to_dos(netbios_name, True);
pstrcpy(global_myname, netbios_name);
DEBUG(4,
@ -2192,6 +2212,66 @@ static BOOL handle_vfs_object(char *pszParmValue, char **ptr)
return True;
}
/***************************************************************************
handle the interpretation of the coding system parameter
*************************************************************************/
static BOOL handle_coding_system(char *pszParmValue, char **ptr)
{
string_set(ptr, pszParmValue);
interpret_coding_system(pszParmValue);
return (True);
}
/***************************************************************************
Handle the interpretation of the character set system parameter.
***************************************************************************/
static char *saved_character_set = NULL;
static BOOL handle_character_set(char *pszParmValue, char **ptr)
{
/* A dependency here is that the parameter client code page should be
set before this is called.
*/
string_set(ptr, pszParmValue);
strupper(*ptr);
saved_character_set = strdup(*ptr);
interpret_character_set(*ptr, lp_client_code_page());
return (True);
}
/***************************************************************************
Handle the interpretation of the client code page parameter.
We handle this separately so that we can reset the character set
parameter in case this came before 'client code page' in the smb.conf.
***************************************************************************/
static BOOL handle_client_code_page(char *pszParmValue, char **ptr)
{
Globals.client_code_page = atoi(pszParmValue);
if (saved_character_set != NULL)
interpret_character_set(saved_character_set,
lp_client_code_page());
return (True);
}
/***************************************************************************
handle the valid chars lines
***************************************************************************/
static BOOL handle_valid_chars(char *pszParmValue, char **ptr)
{
string_set(ptr, pszParmValue);
/* A dependency here is that the parameter client code page must be
set before this is called - as calling codepage_initialise()
would overwrite the valid char lines.
*/
codepage_initialise(lp_client_code_page());
add_char_string(pszParmValue);
return (True);
}
/***************************************************************************
handle the include operation
@ -2413,22 +2493,26 @@ BOOL lp_do_parameter(int snum, char *pszParmName, char *pszParmValue)
case P_STRING:
string_set(parm_ptr, pszParmValue);
if (parm_table[parmnum].flags & FLAG_DOS_STRING)
unix_to_dos(*(char **)parm_ptr, True);
break;
case P_USTRING:
string_set(parm_ptr, pszParmValue);
if (parm_table[parmnum].flags & FLAG_DOS_STRING)
unix_to_dos(*(char **)parm_ptr, True);
strupper(*(char **)parm_ptr);
break;
case P_GSTRING:
pstrcpy((char *)parm_ptr, pszParmValue);
if (parm_table[parmnum].flags & FLAG_DOS_STRING)
unix_to_dos((char *)parm_ptr, True);
break;
case P_UGSTRING:
pstrcpy((char *)parm_ptr, pszParmValue);
if (parm_table[parmnum].flags & FLAG_DOS_STRING)
unix_to_dos((char *)parm_ptr, True);
strupper((char *)parm_ptr);
break;
@ -2830,6 +2914,58 @@ BOOL lp_snum_ok(int iService)
}
/***************************************************************************
auto-load some home services
***************************************************************************/
static void lp_add_auto_services(char *str)
{
char *s;
char *p;
int homes;
if (!str)
return;
s = strdup(str);
if (!s)
return;
homes = lp_servicenumber(HOMES_NAME);
for (p = strtok(s, LIST_SEP); p; p = strtok(NULL, LIST_SEP))
{
char *home = get_user_home_dir(p);
if (lp_servicenumber(p) >= 0)
continue;
if (home && homes >= 0)
{
lp_add_home(p, homes, home);
}
}
free(s);
}
/***************************************************************************
auto-load one printer
***************************************************************************/
void lp_add_one_printer(char *name, char *comment)
{
int printers = lp_servicenumber(PRINTERS_NAME);
int i;
if (lp_servicenumber(name) < 0)
{
lp_add_printer(name, printers);
if ((i = lp_servicenumber(name)) >= 0)
{
string_set(&iSERVICE(i).comment, comment);
iSERVICE(i).autoloaded = True;
}
}
}
/***************************************************************************
have we loaded a services file yet?
***************************************************************************/
@ -2989,6 +3125,8 @@ BOOL lp_load(char *pszFname, BOOL global_only, BOOL save_defaults,
if (iServiceIndex >= 0)
bRetval = service_ok(iServiceIndex);
lp_add_auto_services(lp_auto_services());
if (add_ipc)
lp_add_ipc();

View File

@ -203,6 +203,7 @@ static int Continuation( char *line, int pos )
/* we should recognize if `\` is part of a multibyte character or not. */
while(pos2 <= pos) {
size_t skip = 0;
skip = get_character_len(line[pos2]);
if (skip) {
pos2 += skip;
} else if (pos == pos2) {