static int _smb_create_user(const char *domain, const char *unix_username, const char *homedir) { TALLOC_CTX *ctx = talloc_tos(); char *add_script; int ret; add_script = talloc_strdup(ctx, lp_adduser_script()); if (!add_script || !*add_script) { return -1; } add_script = talloc_all_string_sub(ctx, add_script, "%u", unix_username); if (!add_script) { return -1; } if (domain) { add_script = talloc_all_string_sub(ctx, add_script, "%D", domain); if (!add_script) { return -1; } } if (homedir) { add_script = talloc_all_string_sub(ctx, add_script, "%H", homedir); if (!add_script) { return -1; } } ret = smbrun(add_script,NULL); flush_pwnam_cache(); DEBUG(ret ? 0 : 3, ("smb_create_user: Running the command `%s' gave %d\n", add_script,ret)); return ret; }
static const char *tstring(TALLOC_CTX *ctx, time_t t) { char *buf; buf = talloc_strdup(ctx, time_to_asc(t)); if (!buf) { return ""; } buf = talloc_all_string_sub(ctx, buf, " ", " "); if (!buf) { return ""; } return buf; }
int smb_set_primary_group(const char *unix_group, const char* unix_user) { char *add_script = NULL; int ret = -1; /* defer to scripts */ if ( *lp_setprimarygroup_script() ) { TALLOC_CTX *ctx = talloc_tos(); add_script = talloc_strdup(ctx, lp_setprimarygroup_script()); if (!add_script) { return -1; } add_script = talloc_all_string_sub(ctx, add_script, "%g", unix_group); if (!add_script) { return -1; } add_script = talloc_string_sub(ctx, add_script, "%u", unix_user); if (!add_script) { return -1; } ret = smbrun(add_script,NULL); flush_pwnam_cache(); DEBUG(ret ? 0 : 3,("smb_set_primary_group: " "Running the command `%s' gave %d\n",add_script,ret)); if (ret == 0) { smb_nscd_flush_group_cache(); } return ret; } return -1; }