mirror of
https://github.com/samba-team/samba.git
synced 2025-12-11 08:23:49 +03:00
Ensure browse.dat is written and read in UNIX character set format.
Jeremy.
This commit is contained in:
@@ -237,6 +237,7 @@ BOOL cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32 stype,
|
|||||||
p += 4;
|
p += 4;
|
||||||
|
|
||||||
pstrcpy(p, workgroup);
|
pstrcpy(p, workgroup);
|
||||||
|
unix_to_dos(p, True);
|
||||||
p = skip_string(p,1);
|
p = skip_string(p,1);
|
||||||
|
|
||||||
if (cli_api(cli,
|
if (cli_api(cli,
|
||||||
|
|||||||
@@ -49,13 +49,13 @@ static FILE *fp;
|
|||||||
|
|
||||||
/*******************************************************************
|
/*******************************************************************
|
||||||
This is the NetServerEnum callback.
|
This is the NetServerEnum callback.
|
||||||
|
Note sname and comment are in UNIX codepage format.
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
static void callback(const char *sname, uint32 stype, const char *comment)
|
static void callback(const char *sname, uint32 stype, const char *comment)
|
||||||
{
|
{
|
||||||
fprintf(fp,"\"%s\" %08X \"%s\"\n", sname, stype, comment);
|
fprintf(fp,"\"%s\" %08X \"%s\"\n", sname, stype, comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************
|
/*******************************************************************
|
||||||
Synchronise browse lists with another browse server.
|
Synchronise browse lists with another browse server.
|
||||||
Log in on the remote server's SMB port to their IPC$ service,
|
Log in on the remote server's SMB port to their IPC$ service,
|
||||||
@@ -67,6 +67,7 @@ static void sync_child(char *name, int nm_type,
|
|||||||
char *fname)
|
char *fname)
|
||||||
{
|
{
|
||||||
extern fstring local_machine;
|
extern fstring local_machine;
|
||||||
|
fstring unix_workgroup;
|
||||||
static struct cli_state cli;
|
static struct cli_state cli;
|
||||||
uint32 local_type = local ? SV_TYPE_LOCAL_LIST_ONLY : 0;
|
uint32 local_type = local ? SV_TYPE_LOCAL_LIST_ONLY : 0;
|
||||||
struct nmb_name called, calling;
|
struct nmb_name called, calling;
|
||||||
@@ -101,14 +102,20 @@ static void sync_child(char *name, int nm_type,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* All the cli_XX functions take UNIX character set. */
|
||||||
|
fstrcpy(unix_workgroup, cli.server_domain?cli.server_domain:workgroup);
|
||||||
|
dos_to_unix(unix_workgroup, True);
|
||||||
|
|
||||||
/* Fetch a workgroup list. */
|
/* Fetch a workgroup list. */
|
||||||
cli_NetServerEnum(&cli, cli.server_domain?cli.server_domain:workgroup,
|
cli_NetServerEnum(&cli, unix_workgroup,
|
||||||
local_type|SV_TYPE_DOMAIN_ENUM,
|
local_type|SV_TYPE_DOMAIN_ENUM,
|
||||||
callback);
|
callback);
|
||||||
|
|
||||||
/* Now fetch a server list. */
|
/* Now fetch a server list. */
|
||||||
if (servers) {
|
if (servers) {
|
||||||
cli_NetServerEnum(&cli, workgroup,
|
fstrcpy(unix_workgroup, workgroup);
|
||||||
|
dos_to_unix(unix_workgroup, True);
|
||||||
|
cli_NetServerEnum(&cli, unix_workgroup,
|
||||||
local?SV_TYPE_LOCAL_LIST_ONLY:SV_TYPE_ALL,
|
local?SV_TYPE_LOCAL_LIST_ONLY:SV_TYPE_ALL,
|
||||||
callback);
|
callback);
|
||||||
}
|
}
|
||||||
@@ -248,6 +255,9 @@ static void complete_sync(struct sync_record *s)
|
|||||||
|
|
||||||
ptr = line;
|
ptr = line;
|
||||||
|
|
||||||
|
/* The line is written in UNIX character set. Convert to DOS codepage. */
|
||||||
|
unix_to_dos(line,True);
|
||||||
|
|
||||||
if (!next_token(&ptr,server,NULL,sizeof(server)) ||
|
if (!next_token(&ptr,server,NULL,sizeof(server)) ||
|
||||||
!next_token(&ptr,type_str,NULL, sizeof(type_str)) ||
|
!next_token(&ptr,type_str,NULL, sizeof(type_str)) ||
|
||||||
!next_token(&ptr,comment,NULL, sizeof(comment))) {
|
!next_token(&ptr,comment,NULL, sizeof(comment))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user