+++ /dev/null
-/* $Header$
- *
- * This program will change UIDs on users who are not active so that
- * no UIDs are > 32000.
- */
-
-#include <stdio.h>
-#include <strings.h>
-#include <ctype.h>
-#include <sys/time.h>
-#include <moira.h>
-#include <moira_site.h>
-
-#define MAX_ID_VALUE 31999
-#define MIN_ID_VALUE 101
-
-
-char *program;
-
-main(argc, argv)
-int argc;
-char **argv;
-##{
- char buf[BUFSIZ], *p;
- struct save_queue *sq;
- int found, status, wait, i;
-## int id, uid;
-
- program = "uidfix";
- init_krb_err_tbl();
- init_sms_err_tbl();
-
- for (i = 1; i < argc; i++) {
- if (!strcmp(argv[i], "-w"))
- wait++;
- else if (!strcmp(argv[i], "-D"))
- setenv("ING_SET", "set printqry");
- else
- fprintf(stderr, "Usage: %s [-w] [-D]\n", argv[0]);
- }
-
-## ingres sms
-## range of u is users
-
- found = 0;
- sq = sq_create();
-
-## retrieve (id = u.users_id)
-## where u.#uid >= 32000 and (u.status = 0 or u.status = 4) {
- sq_save_data(sq, id);
- found++;
-## }
-
- printf("Found %d users to change.\n", found);
-
- while (sq_get_data(sq, &id)) {
- uid = set_next_object_id("uid", 1);
-## replace u (#uid = uid) where u.users_id = id
- if (wait) {
- printf("Next");
- fflush(stdout);
- gets(buf);
- }
- }
-## exit
- exit(0);
-##}
-
-
-set_next_object_id(object, limit)
- char *object;
- int limit;
-##{
-## char *name;
-## int rowcount, exists, value;
-
- name = object;
-## begin transaction
-## repeat retrieve (value = values.#value) where values.#name = @name
-## inquire_equel(rowcount = "rowcount")
- if (rowcount != 1) {
-## abort
- return(0);
- }
-
-## retrieve (exists = any(users.name where users.name = value))
-## inquire_equel(rowcount = "rowcount")
- if (rowcount != 1) {
-## abort
- return(0);
- }
- while (exists) {
- value++;
- if (limit && value > MAX_ID_VALUE)
- value = MIN_ID_VALUE;
-## retrieve (exists = any(users.name where users.name = value))
- }
-
-## repeat replace values (#value = @value) where values.#name = @name
-## end transaction
- return(value);
-##}