+\f
+/**
+ ** add_user_group - create a group for a user and add user to group
+ **
+ ** Inputs:
+ ** argv[0] - login
+ **
+ ** Description:
+ ** - verify specified user exists
+ ** - create a list of same name as user
+ ** - add user as a member of the list
+ **
+ **/
+
+add_user_group(q, argv)
+ struct query *q;
+ char *argv[];
+##{
+## char *login;
+## int exists;
+## int users_id;
+## int list_id;
+## int gid;
+
+ login = argv[0];
+
+ /* verify user exists */
+## repeat retrieve (users_id = users.#users_id) where users.#login = @login
+## inquire_equel (exists = "rowcount")
+ if (exists != 1) return(SMS_USER);
+
+ /* verify list does not exist */
+## repeat retrieve (exists = any(list.name where list.name = @login))
+ if (exists) return(SMS_LIST);
+
+ /* get new list_id */
+## repeat retrieve (list_id = values.value) where values.name = "list_id"
+ list_id++;
+## repeat replace values (value = @list_id) where values.name = "list_id"
+
+ /* create the list */
+## repeat append list (name = @login, #list_id = @list_id, flags = 1,
+## desc = "User Group", acl_id = @list_id,
+## expdate = "today" + "5 years", modtime = "now")
+
+ /* add user to list */
+## repeat append members (#list_id = @list_id, member_type = "USER",
+## member_id = @users_id)
+
+ /* get new gid */
+## range of g is groups
+## range of v is values
+## repeat retrieve (gid = v.value) where v.name = "gid"
+ exists = 1;
+ while (exists) {
+ gid++;
+## repeat retrieve (exists = any(g.#gid where g.#gid = @gid))
+ }
+## repeat replace v (value = @gid) where v.name = "gid"
+
+ /* add list to group table */
+## repeat append groups (#list_id = @list_id, ltid = list.tid, #gid = @gid)
+## where list.#list_id = @list_id
+
+ /* and we're done */
+ return(SMS_SUCCESS);
+##}
+