1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-11 16:58:40 +03:00

Separate out get_user_home_dir() from get_user_home_service_dir().

Jeremy.
This commit is contained in:
Jeremy Allison -
parent 0fcca6c627
commit c1b97226db
4 changed files with 51 additions and 44 deletions

View File

@ -97,10 +97,7 @@ static char *automount_path(const char *user_name)
/* use the passwd entry as the default */
/* this will be the default if WITH_AUTOMOUNT is not used or fails */
if (((pass = Get_Pwnam(user_name))!=NULL) && (pass->pw_dir != NULL))
pstrcpy(server_path, pass->pw_dir );
else
*server_path = '\0';
pstrcpy(server_path, get_user_home_dir(user_name));
#if (defined(HAVE_NETGROUP) && defined (WITH_AUTOMOUNT))
@ -117,7 +114,6 @@ static char *automount_path(const char *user_name)
}
} else {
/* NIS key lookup failed: default to user home directory from password file */
pstrcpy(server_path, get_user_home_dir(user_name));
DEBUG(5, ("NIS lookup failed. Using Home path from passwd file. Home path is: %s\n", server_path ));
}
}

View File

@ -41,6 +41,25 @@ BOOL name_is_local(const char *name)
****************************************************************************/
char *get_user_home_dir(const char *user)
{
static struct passwd *pass;
/* Ensure the user exists. */
pass = Get_Pwnam(user);
if (!pass)
return(NULL);
/* Return home directory from struct passwd. */
return(pass->pw_dir);
}
/****************************************************************************
Get a users service home directory.
****************************************************************************/
char *get_user_service_home_dir(const char *user)
{
static struct passwd *pass;
int snum;

View File

@ -3104,15 +3104,16 @@ static void dump_copy_map(BOOL *pcopymap)
/***************************************************************************
Return TRUE if the passed service number is within range.
***************************************************************************/
BOOL lp_snum_ok(int iService)
{
return (LP_SNUM_OK(iService) && ServicePtrs[iService]->bAvailable);
}
/***************************************************************************
auto-load some home services
Auto-load some home services.
***************************************************************************/
static void lp_add_auto_services(char *str)
{
char *s;
@ -3128,34 +3129,30 @@ static void lp_add_auto_services(char *str)
homes = lp_servicenumber(HOMES_NAME);
for (p = strtok(s, LIST_SEP); p; p = strtok(NULL, LIST_SEP))
{
char *home = get_user_home_dir(p);
for (p = strtok(s, LIST_SEP); p; p = strtok(NULL, LIST_SEP)) {
char *home = get_user_service_home_dir(p);
if (lp_servicenumber(p) >= 0)
continue;
if (home && homes >= 0)
{
lp_add_home(p, homes, home);
}
}
SAFE_FREE(s);
}
/***************************************************************************
auto-load one printer
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)
{
if (lp_servicenumber(name) < 0) {
lp_add_printer(name, printers);
if ((i = lp_servicenumber(name)) >= 0)
{
if ((i = lp_servicenumber(name)) >= 0) {
string_set(&ServicePtrs[i]->comment, comment);
ServicePtrs[i]->autoloaded = True;
}
@ -3163,59 +3160,57 @@ void lp_add_one_printer(char *name, char *comment)
}
/***************************************************************************
have we loaded a services file yet?
Have we loaded a services file yet?
***************************************************************************/
BOOL lp_loaded(void)
{
return (bLoaded);
}
/***************************************************************************
unload unused services
Unload unused services.
***************************************************************************/
void lp_killunused(BOOL (*snumused) (int))
{
int i;
for (i = 0; i < iNumServices; i++)
{
for (i = 0; i < iNumServices; i++) {
if (!VALID(i))
continue;
if (!snumused || !snumused(i))
{
if (!snumused || !snumused(i)) {
ServicePtrs[i]->valid = False;
free_service(ServicePtrs[i]);
}
}
}
/***************************************************************************
unload a service
Unload a service.
***************************************************************************/
void lp_killservice(int iServiceIn)
{
if (VALID(iServiceIn))
{
if (VALID(iServiceIn)) {
ServicePtrs[iServiceIn]->valid = False;
free_service(ServicePtrs[iServiceIn]);
}
}
/***************************************************************************
save the curent values of all global and sDefault parameters into the
defaults union. This allows swat and testparm to show only the
changed (ie. non-default) parameters.
Save the curent values of all global and sDefault parameters into the
defaults union. This allows swat and testparm to show only the
changed (ie. non-default) parameters.
***************************************************************************/
static void lp_save_defaults(void)
{
int i;
for (i = 0; parm_table[i].label; i++)
{
for (i = 0; parm_table[i].label; i++) {
if (i > 0 && parm_table[i].ptr == parm_table[i - 1].ptr)
continue;
switch (parm_table[i].type)
{
switch (parm_table[i].type) {
case P_LIST:
lp_list_copy(&(parm_table[i].def.lvalue),
*(char ***)parm_table[i].ptr);
@ -3255,16 +3250,15 @@ static void lp_save_defaults(void)
/*******************************************************************
Set the server type we will announce as via nmbd.
********************************************************************/
static void set_server_role(void)
{
server_role = ROLE_STANDALONE;
switch (lp_security())
{
switch (lp_security()) {
case SEC_SHARE:
{
if (lp_domain_logons())
{
if (lp_domain_logons()) {
DEBUG(0,
("Server's Role (logon server) conflicts with share-level security\n"));
}
@ -3274,8 +3268,7 @@ static void set_server_role(void)
case SEC_DOMAIN:
case SEC_ADS:
{
if (lp_domain_logons())
{
if (lp_domain_logons()) {
server_role = ROLE_DOMAIN_BDC;
break;
}
@ -3284,8 +3277,7 @@ static void set_server_role(void)
}
case SEC_USER:
{
if (lp_domain_logons())
{
if (lp_domain_logons()) {
server_role = ROLE_DOMAIN_PDC;
break;
}

View File

@ -127,7 +127,7 @@ int find_service(fstring service)
/* now handle the special case of a home directory */
if (iService < 0)
{
char *phome_dir = get_user_home_dir(service);
char *phome_dir = get_user_service_home_dir(service);
if(!phome_dir)
{
@ -136,7 +136,7 @@ int find_service(fstring service)
* be a Windows to unix mapped user name.
*/
if(map_username(service))
phome_dir = get_user_home_dir(service);
phome_dir = get_user_service_home_dir(service);
}
DEBUG(3,("checking for home directory %s gave %s\n",service,