char *username, *whoami;
char *newlogin, *uid, *shell, *winshell, *last, *first, *middle, *u_status;
-char *clearid, *class, *comment, *secure;
+char *clearid, *class, *comment, *secure, *winhomedir, *winprofiledir;
static char *states[] = {
"Registerable (0)",
list_res_flag = update_res_flag = unformatted_flag = verbose = noauth = 0;
newlogin = uid = shell = winshell = last = first = middle = NULL;
u_status = clearid = class = comment = secure = NULL;
+ winhomedir = winprofiledir = NULL;
reservation_add_queue = reservation_remove_queue = NULL;
whoami = argv[0];
} else
usage(argv);
}
+ else if (argis("wh", "winhomedir")) {
+ if (arg - argv < argc - 1) {
+ arg++;
+ update_flag++;
+ winhomedir = *arg;
+ } else
+ usage(argv);
+ }
+ else if (argis("wp", "winprofiledir")) {
+ if (arg - argv < argc - 1) {
+ arg++;
+ update_flag++;
+ winprofiledir = *arg;
+ } else
+ usage(argv);
+ }
else if (argis("ar", "addreservation")) {
if (arg - argv < argc - 1) {
arg++;
}
/* fire up Moira */
- status = mrcl_connect(server, "stanley", 8, !noauth);
+ status = mrcl_connect(server, "stanley", 11, !noauth);
if (status == MRCL_AUTH_ERROR)
{
com_err(whoami, 0, "Try the -noauth flag if you don't "
argv[U_SECURE] = secure;
else
argv[U_SECURE] = "0";
+ if (winhomedir)
+ argv[U_WINHOMEDIR] = winhomedir;
+ else
+ argv[U_WINHOMEDIR] = "[AFS]";
+ if (winprofiledir)
+ argv[U_WINPROFILEDIR] = winprofiledir;
+ else
+ argv[U_WINPROFILEDIR] = "[AFS]";
- status = wrap_mr_query("add_user_account", 13, argv, NULL, NULL);
+ status = wrap_mr_query("add_user_account", 15, argv, NULL, NULL);
if (status)
{
com_err(whoami, status, "while adding user account.");
argv[11] = old_argv[10];
argv[12] = old_argv[11];
argv[13] = old_argv[12];
+ argv[14] = old_argv[13];
+ argv[15] = old_argv[14];
argv[0] = username;
if (newlogin)
argv[11] = comment;
if (secure)
argv[13] = secure;
+ if (winhomedir)
+ argv[14] = winhomedir;
+ if (winprofiledir)
+ argv[15] = winprofiledir;
- status = wrap_mr_query("update_user_account", 14, argv, NULL, NULL);
+ status = wrap_mr_query("update_user_account", 16, argv, NULL, NULL);
if (status)
com_err(whoami, status, "while updating user.");
argv[U_WINCONSOLESHELL]);
printf("Account is: %-20s MIT ID number: %s\n",
UserState(atoi(argv[U_STATE])), argv[U_MITID]);
+ printf("Windows Home Directory: %s\n", argv[U_WINHOMEDIR]);
+ printf("Windows Profile Directory: %s\n", argv[U_WINPROFILEDIR]);
status = atoi(argv[U_STATE]);
if (status == 0 || status == 2)
{
{
int status;
- printf("Login name: %s\n", argv[U_NAME]);
- printf("Full name: %s, %s %s\n", argv[U_LAST], argv[U_FIRST],
+ printf("Login name: %s\n", argv[U_NAME]);
+ printf("Full name: %s, %s %s\n", argv[U_LAST], argv[U_FIRST],
argv[U_MIDDLE]);
- printf("User id: %s\n", argv[U_UID]);
- printf("Class: %s\n", argv[U_CLASS]);
- printf("Login shell: %s\n", argv[U_SHELL]);
- printf("Windows Console Shell: %s\n", argv[U_WINCONSOLESHELL]);
- printf("Account is: %s\n", UserState(atoi(argv[U_STATE])));
- printf("MIT ID number: %s\n", argv[U_MITID]);
+ printf("User id: %s\n", argv[U_UID]);
+ printf("Class: %s\n", argv[U_CLASS]);
+ printf("Login shell: %s\n", argv[U_SHELL]);
+ printf("Windows Console Shell: %s\n", argv[U_WINCONSOLESHELL]);
+ printf("Account is: %s\n", UserState(atoi(argv[U_STATE])));
+ printf("MIT ID number: %s\n", argv[U_MITID]);
+ printf("Windows Home Directory: %s\n", argv[U_WINHOMEDIR]);
+ printf("Windows Profile Directory: %s\n", argv[U_WINPROFILEDIR]);
status = atoi(argv[U_STATE]);
if (status == 0 || status == 2)
- printf("Secure: %s secure Account Coupon to register\n",
+ printf("Secure: %s secure Account Coupon to register\n",
atoi(argv[U_SECURE]) ? "Needs" : "Does not need");
- printf("Comments: %s\n", argv[U_COMMENT]);
- printf("Created by: %s\n", argv[U_CREATOR]);
- printf("Created on: %s\n", argv[U_CREATED]);
- printf("Last mod by: %s\n", argv[U_MODBY]);
- printf("Last mod on: %s\n", argv[U_MODTIME]);
- printf("Last mod with: %s\n", argv[U_MODWITH]);
+ printf("Comments: %s\n", argv[U_COMMENT]);
+ printf("Created by: %s\n", argv[U_CREATOR]);
+ printf("Created on: %s\n", argv[U_CREATED]);
+ printf("Last mod by: %s\n", argv[U_MODBY]);
+ printf("Last mod on: %s\n", argv[U_MODTIME]);
+ printf("Last mod with: %s\n", argv[U_MODWITH]);
}
void usage(char **argv)
"-lr | -listreservation");
fprintf(stderr, USAGE_OPTIONS_FORMAT, "-ar | -addreservation reservation",
"-dr | -deletereservation reservation");
+ fprintf(stderr, USAGE_OPTIONS_FORMAT, "-wh | -winhomedir winhomedir",
+ "-wp | -winprofiledir winprofiledir");
fprintf(stderr, USAGE_OPTIONS_FORMAT, "-u | -unformatted",
"-n | -noauth");
fprintf(stderr, USAGE_OPTIONS_FORMAT, "-v | -verbose",
"modtime", "modby", "modwith",
};
+static char *gual3_fields[] = {
+ "login",
+ "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
+ "status", "clearid", "class", "comments", "signature", "secure", "modtime",
+ "modby", "modwith", "created", "creator",
+};
+
static char *gual_fields[] = {
"login",
- "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
+ "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
"status", "clearid", "class", "comments", "signature", "secure",
- "modtime", "modby", "modwith", "created", "creator",
+ "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
+ "creator",
};
static char *gubl2_fields[] = {
"modtime", "modby", "modwith",
};
-static char *guau_fields[] = {
+static char *guau3_fields[] = {
"unix_uid",
"login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
"status", "clearid", "class", "comments", "signature", "secure",
"modtime", "modby", "modwith", "created", "creator",
};
+static char *guau_fields[] = {
+ "unix_uid",
+ "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
+ "status", "clearid", "class", "comments", "signature", "secure",
+ "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
+ "creator",
+};
+
static char *guan2_fields[] = {
"first", "last",
"login", "unix_uid", "shell", "last", "first", "middle", "status",
"modtime", "modby", "modwith",
};
-static char *guan_fields[] = {
+static char *guan3_fields[] = {
"first", "last",
"login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
"status", "clearid", "class", "comments", "signature", "secure",
"modtime", "modby", "modwith", "created", "creator",
};
+static char *guan_fields[] = {
+ "first", "last",
+ "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
+ "status", "clearid", "class", "comments", "signature", "secure",
+ "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
+ "creator",
+};
+
static struct validate guan2_validate =
{
0,
"modtime", "modby", "modwith",
};
-static char *guac_fields[] = {
+static char *guac3_fields[] = {
"class",
"login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
"status", "clearid", "class", "comments", "signature", "secure",
"modtime", "modby", "modwith", "created", "creator",
};
+static char *guac_fields[] = {
+ "class",
+ "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
+ "status", "clearid", "class", "comments", "signature", "secure",
+ "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
+ "creator",
+};
+
static char *guam2_fields[] = {
"clearid",
"login", "unix_uid", "shell", "last", "first", "middle", "status",
"modtime", "modby", "modwith",
};
-static char *guam_fields[] = {
+static char *guam3_fields[] = {
"clearid",
"login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
"status", "clearid", "class", "comments", "signature", "secure",
"modtime", "modby", "modwith", "created", "creator",
};
+static char *guam_fields[] = {
+ "clearid",
+ "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
+ "status", "clearid", "class", "comments", "signature", "secure",
+ "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
+ "creator",
+};
+
static char *gubu2_fields[] = {
"unix_uid",
"login", "unix_uid", "shell", "last", "first", "middle", "status",
"clearid", "class", "comments", "signature", "secure",
};
-static char *auac_fields[] = {
+static char *auac3_fields[] = {
"login", "unix_uid", "shell", "winconsoleshell", "last", "first",
"middle", "status", "clearid", "class", "comments", "signature", "secure",
};
+static char *auac_fields[] = {
+ "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
+ "status", "clearid", "class", "comments", "signature", "secure",
+ "winhomedir", "winprofiledir",
+};
+
static struct valobj auac2_valobj[] = {
{V_CHAR, 0, USERS_TABLE, "login"},
{V_NUM, 1},
{V_NUM, 11},
};
+static struct valobj auac3_valobj[] = {
+ {V_CHAR, 0, USERS_TABLE, "login"},
+ {V_NUM, 1},
+ {V_CHAR, 2, USERS_TABLE, "shell"},
+ {V_CHAR, 3, USERS_TABLE, "winconsoleshell"},
+ {V_CHAR, 4, USERS_TABLE, "last"},
+ {V_CHAR, 5, USERS_TABLE, "first"},
+ {V_CHAR, 6, USERS_TABLE, "middle"},
+ {V_NUM, 7},
+ {V_CHAR, 8, USERS_TABLE, "clearid"},
+ {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
+ {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
+ {V_NUM, 12},
+};
+
static struct valobj auac_valobj[] = {
{V_CHAR, 0, USERS_TABLE, "login"},
{V_NUM, 1},
{V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
{V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
{V_NUM, 12},
+ {V_LEN, 13, USERS_TABLE, "winhomedir"},
+ {V_LEN, 14, USERS_TABLE, "winprofiledir"},
};
static struct validate auac2_validate = {
followup_ausr,
};
+static struct validate auac3_validate = {
+ auac3_valobj,
+ 12,
+ "login",
+ "login = '%s'",
+ 1,
+ "users_id",
+ 0,
+ setup_ausr,
+ followup_ausr,
+};
+
static struct validate auac_validate = {
auac_valobj,
- 12,
+ 14,
"login",
"login = '%s'",
1,
followup_ausr,
};
+static struct validate ausr3_validate = {
+ auac3_valobj,
+ 10,
+ "login",
+ "login = '%s'",
+ 1,
+ "users_id",
+ 0,
+ setup_ausr,
+ followup_ausr,
+};
+
static struct validate ausr_validate = {
auac_valobj,
- 10,
+ 12,
"login",
"login = '%s'",
1,
"clearid", "class", "comments", "signature", "secure",
};
-static char *uuac_fields[] = {
+static char *uuac3_fields[] = {
"login",
"newlogin", "unix_uid", "shell", "winconsoleshell", "last", "first",
"middle", "status", "clearid", "class", "comments", "signature", "secure",
};
+static char *uuac_fields[] = {
+ "login",
+ "newlogin", "unix_uid", "shell", "winconsoleshell", "last", "first",
+ "middle", "status", "clearid", "class", "comments", "signature", "secure",
+ "winhomedir", "winprofiledir",
+};
+
static struct valobj uuac2_valobj[] = {
{V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
{V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
{V_NUM, 12},
};
+static struct valobj uuac3_valobj[] = {
+ {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
+ {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
+ {V_NUM, 2},
+ {V_CHAR, 3, USERS_TABLE, "shell"},
+ {V_CHAR, 4, USERS_TABLE, "winconsoleshell"},
+ {V_CHAR, 5, USERS_TABLE, "first"},
+ {V_CHAR, 6, USERS_TABLE, "last"},
+ {V_CHAR, 7, USERS_TABLE, "middle"},
+ {V_NUM, 8},
+ {V_CHAR, 9, USERS_TABLE, "clearid"},
+ {V_TYPE, 10, 0, "class", 0, MR_BAD_CLASS},
+ {V_ID, 11, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
+ {V_NUM, 13},
+};
+
static struct valobj uuac_valobj[] = {
{V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
{V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
{V_TYPE, 10, 0, "class", 0, MR_BAD_CLASS},
{V_ID, 11, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
{V_NUM, 13},
+ {V_LEN, 14, USERS_TABLE, "winhomedir"},
+ {V_LEN, 15, USERS_TABLE, "winprofiledir"},
};
static struct validate uuac2_validate = {
set_modtime_by_id,
};
+static struct validate uuac3_validate = {
+ uuac3_valobj,
+ 13,
+ 0,
+ 0,
+ 0,
+ "users_id",
+ 0,
+ setup_ausr,
+ set_modtime_by_id,
+};
+
static struct validate uuac_validate = {
uuac_valobj,
- 13,
+ 15,
0,
0,
0,
set_modtime_by_id,
};
+static struct validate uusr3_validate = {
+ uuac3_valobj,
+ 11,
+ 0,
+ 0,
+ 0,
+ "users_id",
+ 0,
+ setup_ausr,
+ set_modtime_by_id,
+};
+
static struct validate uusr_validate = {
uuac_valobj,
- 11,
+ 13,
0,
0,
0,
"u",
USERS_TABLE,
"u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
- gual_fields,
+ gual3_fields,
18,
"u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
1,
&gubl_validate,
},
+ {
+ /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN, v11 */
+ "get_user_account_by_login",
+ "gual",
+ 11,
+ RETRIEVE,
+ "u",
+ USERS_TABLE,
+ "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
+ gual_fields,
+ 20,
+ "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
+ 1,
+ "u.login",
+ &gubl_validate,
+ },
+
{
/* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v2 */
"get_user_account_by_uid",
"u",
USERS_TABLE,
"u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
- guau_fields,
+ guau3_fields,
18,
"u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
1,
&gubu_validate,
},
+ {
+ /* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v11 */
+ "get_user_account_by_uid",
+ "guau",
+ 11,
+ RETRIEVE,
+ "u",
+ USERS_TABLE,
+ "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
+ guau_fields,
+ 20,
+ "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
+ 1,
+ "u.login",
+ &gubu_validate,
+ },
+
{
/* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v2 */
"get_user_account_by_name",
"u",
USERS_TABLE,
"u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
- guan_fields,
+ guan3_fields,
18,
"u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
2,
&guan_validate,
},
+ {
+ /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v11 */
+ "get_user_account_by_name",
+ "guan",
+ 11,
+ RETRIEVE,
+ "u",
+ USERS_TABLE,
+ "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
+ guan_fields,
+ 20,
+ "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
+ 2,
+ "u.login",
+ &guan_validate,
+ },
+
{
/* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v2 */
"get_user_account_by_class",
"u",
USERS_TABLE,
"u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
- guac_fields,
+ guac3_fields,
18,
"u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
1,
&guan_validate,
},
+ {
+ /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v11 */
+ "get_user_account_by_class",
+ "guac",
+ 11,
+ RETRIEVE,
+ "u",
+ USERS_TABLE,
+ "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
+ guac_fields,
+ 20,
+ "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
+ 1,
+ "u.login",
+ &guan_validate,
+ },
+
{
/* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v2 */
"get_user_account_by_id",
&guan_validate,
},
+ {
+ /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v11 */
+ "get_user_account_by_id",
+ "guai",
+ 11,
+ RETRIEVE,
+ "u",
+ USERS_TABLE,
+ "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
+ guam_fields,
+ 20,
+ "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
+ 1,
+ "u.login",
+ &guan_validate,
+ },
+
{
/* Q_GUBL - GET_USER_BY_LOGIN, v2 */
"get_user_by_login",
* but using up one argv element.
*/
"INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, %s, SYSDATE, %s)",
- auac_fields,
+ auac3_fields,
13,
NULL,
0,
NULL,
+ &auac3_validate,
+ },
+
+ {
+ /* Q_AUAC - ADD_USER_ACCOUNT, v11 */ /* uses prefetch_value() for users_id */
+ "add_user_account",
+ "auac",
+ 11,
+ APPEND,
+ "u",
+ USERS_TABLE,
+ /* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
+ * but using up one argv element.
+ */
+ "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, SYSDATE, %s)",
+ auac_fields,
+ 15,
+ NULL,
+ 0,
+ NULL,
&auac_validate,
},
"u",
USERS_TABLE,
"INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, %s, SYSDATE, %s)",
- auac_fields,
+ auac3_fields,
10,
0,
0,
NULL,
+ &ausr3_validate,
+ },
+
+ {
+ /* Q_AUSR - ADD_USER, v11 */ /* uses prefetch_value() for users_id */
+ "add_user",
+ "ausr",
+ 11,
+ APPEND,
+ "u",
+ USERS_TABLE,
+ "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, SYSDATE, %s)",
+ auac_fields,
+ 12,
+ 0,
+ 0,
+ NULL,
&ausr_validate,
},
USERS_TABLE,
/* See comment in auac about signature. */
"users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = NVL(CHR(0), '%s'), secure = %s",
- uuac_fields,
+ uuac3_fields,
13,
"users_id = %d",
1,
NULL,
+ &uuac3_validate,
+ },
+
+ {
+ /* Q_UUAC - UPDATE_USER_ACCOUNT, v11 */
+ "update_user_account",
+ "uuac",
+ 11,
+ UPDATE,
+ "u",
+ USERS_TABLE,
+ /* See comment in auac about signature. */
+ "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = NVL(CHR(0), '%s'), secure = %s, winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0))",
+ uuac_fields,
+ 15,
+ "users_id = %d",
+ 1,
+ NULL,
&uuac_validate,
},
"u",
USERS_TABLE,
"users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s'",
- uuac_fields,
+ uuac3_fields,
10,
"users_id = %d",
1,
NULL,
+ &uusr3_validate,
+ },
+
+ {
+ /* Q_UUSR - UPDATE_USER, v11 */
+ "update_user",
+ "uusr",
+ 11,
+ UPDATE,
+ "u",
+ USERS_TABLE,
+ "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0)) ",
+ uuac_fields,
+ 12,
+ "users_id = %d",
+ 1,
+ NULL,
&uusr_validate,
},