summaryrefslogtreecommitdiff
path: root/source3/lib/util_getent.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/lib/util_getent.c')
-rw-r--r--source3/lib/util_getent.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/source3/lib/util_getent.c b/source3/lib/util_getent.c
index 475b0da87b..7c045fccb2 100644
--- a/source3/lib/util_getent.c
+++ b/source3/lib/util_getent.c
@@ -239,6 +239,37 @@ static struct sys_userlist *add_members_to_userlist(struct sys_userlist *list_he
return list_head;
}
+/*****************************************************************
+ Splits passed user or group name to domain and user/group name parts
+ Returns True if name was splitted and False otherwise.
+*****************************************************************/
+
+static BOOL split_domain_and_name(const char *name, char *domain,
+ char* username)
+{
+ char *p = strchr(name,*lp_winbind_separator());
+
+
+ /* Parse a string of the form DOMAIN/user into a domain and a user */
+ DEBUG(10,("split_domain_and_name: checking whether name |%s| local or "
+ "not\n", name));
+
+ if (p) {
+ fstrcpy(username, p+1);
+ fstrcpy(domain, name);
+ domain[PTR_DIFF(p, name)] = 0;
+ } else if (lp_winbind_use_default_domain()) {
+ fstrcpy(username, name);
+ fstrcpy(domain, lp_workgroup());
+ } else {
+ return False;
+ }
+
+ DEBUG(10,("split_domain_and_name: all is fine, domain is |%s| and "
+ "name is |%s|\n", domain, username));
+ return True;
+}
+
/****************************************************************
Get the list of UNIX users in a group.
We have to enumerate the /etc/group file as some UNIX getgrnam()