diff --git a/source3/Makefile.in b/source3/Makefile.in index 2bbb3c52503..671bd8ed7e9 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -398,7 +398,8 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) \ lib/wins_srv.o \ lib/util_str.o lib/clobber.o lib/util_sid.o lib/util_uuid.o \ lib/util_unistr.o lib/util_file.o \ - lib/util.o lib/util_sock.o lib/sock_exec.o lib/util_sec.o \ + lib/util.o lib/util_names.o \ + lib/util_sock.o lib/sock_exec.o lib/util_sec.o \ lib/substitute.o lib/dbwrap_util.o \ lib/ms_fnmatch.o lib/select.o lib/errmap_unix.o \ lib/tallocmsg.o lib/dmallocmsg.o \ diff --git a/source3/include/proto.h b/source3/include/proto.h index f53c52c6635..934697eda4f 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -1125,15 +1125,18 @@ bool nt_time_is_set(const NTTIME *nt); char *get_user_home_dir(TALLOC_CTX *mem_ctx, const char *user); struct passwd *Get_Pwnam_alloc(TALLOC_CTX *mem_ctx, const char *user); +/* The following definitions come from lib/util_names.c */ +void gfree_netbios_names(void); +bool set_global_myname(const char *myname); +const char *global_myname(void); +bool set_global_myworkgroup(const char *myworkgroup); +const char *lp_workgroup(void); + /* The following definitions come from lib/util.c */ enum protocol_types get_Protocol(void); void set_Protocol(enum protocol_types p); bool all_zero(const uint8_t *ptr, size_t size); -bool set_global_myname(const char *myname); -const char *global_myname(void); -bool set_global_myworkgroup(const char *myworkgroup); -const char *lp_workgroup(void); bool set_global_scope(const char *scope); const char *global_scope(void); void gfree_names(void); diff --git a/source3/lib/util.c b/source3/lib/util.c index 2339cfcc2a7..88e4557d60b 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -73,50 +73,10 @@ static enum remote_arch_types ra_type = RA_UNKNOWN; Definitions for all names. ***********************************************************************/ -static char *smb_myname; -static char *smb_myworkgroup; static char *smb_scope; static int smb_num_netbios_names; static char **smb_my_netbios_names; -/*********************************************************************** - Allocate and set myname. Ensure upper case. -***********************************************************************/ - -bool set_global_myname(const char *myname) -{ - SAFE_FREE(smb_myname); - smb_myname = SMB_STRDUP(myname); - if (!smb_myname) - return False; - strupper_m(smb_myname); - return True; -} - -const char *global_myname(void) -{ - return smb_myname; -} - -/*********************************************************************** - Allocate and set myworkgroup. Ensure upper case. -***********************************************************************/ - -bool set_global_myworkgroup(const char *myworkgroup) -{ - SAFE_FREE(smb_myworkgroup); - smb_myworkgroup = SMB_STRDUP(myworkgroup); - if (!smb_myworkgroup) - return False; - strupper_m(smb_myworkgroup); - return True; -} - -const char *lp_workgroup(void) -{ - return smb_myworkgroup; -} - /*********************************************************************** Allocate and set scope. Ensure upper case. ***********************************************************************/ @@ -184,8 +144,7 @@ static bool set_my_netbios_names(const char *name, int i) void gfree_names(void) { - SAFE_FREE( smb_myname ); - SAFE_FREE( smb_myworkgroup ); + gfree_netbios_names(); SAFE_FREE( smb_scope ); free_netbios_names_array(); free_local_machine_name(); diff --git a/source3/lib/util_names.c b/source3/lib/util_names.c new file mode 100644 index 00000000000..1ad9cd317cb --- /dev/null +++ b/source3/lib/util_names.c @@ -0,0 +1,72 @@ +/* + Unix SMB/CIFS implementation. + Samba utility functions + Copyright (C) Andrew Tridgell 1992-1998 + Copyright (C) Jeremy Allison 2001-2007 + Copyright (C) Simo Sorce 2001 + Copyright (C) Jim McDonough 2003 + Copyright (C) James Peach 2006 + Copyright (C) Andrew Bartlett 2010 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "includes.h" + +static char *smb_myname; +static char *smb_myworkgroup; + +/*********************************************************************** + Allocate and set myname. Ensure upper case. +***********************************************************************/ + +bool set_global_myname(const char *myname) +{ + SAFE_FREE(smb_myname); + smb_myname = SMB_STRDUP(myname); + if (!smb_myname) + return False; + strupper_m(smb_myname); + return True; +} + +const char *global_myname(void) +{ + return smb_myname; +} + +/*********************************************************************** + Allocate and set myworkgroup. Ensure upper case. +***********************************************************************/ + +bool set_global_myworkgroup(const char *myworkgroup) +{ + SAFE_FREE(smb_myworkgroup); + smb_myworkgroup = SMB_STRDUP(myworkgroup); + if (!smb_myworkgroup) + return False; + strupper_m(smb_myworkgroup); + return True; +} + +const char *lp_workgroup(void) +{ + return smb_myworkgroup; +} + +void gfree_netbios_names(void) +{ + SAFE_FREE( smb_myname ); + SAFE_FREE( smb_myworkgroup ); +}