X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/f1f92ff741afce557351964fdb1d4126e83c239a..31b88f9ec3865936f428c33ae2ba554bc8f4f1ad:/clients/blanche/blanche.c diff --git a/clients/blanche/blanche.c b/clients/blanche/blanche.c index 02107188..8174e86c 100644 --- a/clients/blanche/blanche.c +++ b/clients/blanche/blanche.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -105,7 +106,7 @@ char **argv; verbose++; else if (argis("r","recursive")) recursflg++; - else if (argis("S","server")) + else if (argis("S","server") || argis("db","database")) if (arg - argv < argc - 1) { ++arg; server = *arg; @@ -214,8 +215,10 @@ char **argv; if (syncflg) { status = mr_query("get_members_of_list", 1, &listname, get_list_members, (char *)memberlist); - if (status) - com_err(whoami, status, "getting members of list %s", listname); + if (status) { + com_err(whoami, status, "getting members of list %s", listname); + exit (2); + } while (sq_get_data(synclist, &memberstruct)) { struct save_queue *q; int removed = 0; @@ -239,14 +242,6 @@ char **argv; /* Process the add list */ while (sq_get_data(addlist, &memberstruct)) { - if ((memberstruct->type == M_STRING || - memberstruct->type == M_ANY) && - strchr(memberstruct->name, '\'')) { - fprintf(stderr, "Illegal character \"'\" in \"STRING:%s\", aborting blanche.\n", - memberstruct->name); - fprintf(stderr, "No changes were made.\n"); - exit(1); - } /* canonicalize string if necessary */ if (memberstruct->type == M_STRING && (p = strchr(memberstruct->name, '@'))) { @@ -304,9 +299,18 @@ char **argv; membervec[1] = "LIST"; status = mr_query("add_member_to_list", 3, membervec, scream, NULL); - if (status == MR_SUCCESS) - break; - else if (status != MR_LIST || memberstruct->type != M_ANY) { + if (status == MR_SUCCESS) { + if (!strcmp(membervec[0], getenv("USER"))) { + fprintf(stderr, "\nWARNING: \"LIST:%s\" was just added to list \"%s\".\n", + membervec[2], membervec[0]); + fprintf(stderr, "If you meant to add yourself to the list \"%s\", type:\n", membervec[2]); + fprintf(stderr, "\tblanche %s -d %s\t(to undo this)\n", + membervec[0], membervec[2]); + fprintf(stderr, "\tblanche %s -a %s\t(to add yourself to that list)\n", + membervec[2], membervec[0]); + } + break; + } else if (status != MR_LIST || memberstruct->type != M_ANY) { com_err(whoami, status, "while adding member %s to %s", memberstruct->name, listname); break; @@ -389,10 +393,15 @@ char **argv; membervec[1] = "STRING"; status = mr_query("delete_member_from_list", 3, membervec, scream, NULL); - if (status == MR_STRING && memberstruct->type == M_ANY) + if (status == MR_STRING && memberstruct->type == M_ANY) { com_err(whoami, 0, " Unable to find member %s to delete from %s", memberstruct->name, listname); - else if (status != MR_SUCCESS) + if (!strcmp(membervec[0], getenv("USER"))) { + fprintf(stderr, "(If you were trying to remove yourself from the list \"%s\",\n", membervec[2]); + fprintf(stderr, "the correct command is \"blanche %s -d %s\".)\n", + membervec[2], membervec[0]); + } + } else if (status != MR_SUCCESS) com_err(whoami, status, "while deleting member %s from %s", memberstruct->name, listname); break; @@ -445,7 +454,7 @@ char **argv; fprintf(stderr, " -dl | -deletelist filename\n"); fprintf(stderr, " -f | -file filename\n"); fprintf(stderr, " -n | -noauth\n"); - fprintf(stderr, " -S | -server host[:port]\n"); + fprintf(stderr, " -db | -database host[:port]\n"); fprintf(stderr, " -D | -debug\n"); exit(1); }