X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/e84d51e9b945ba8a6ed66e3087f3e346e0e33e98..31b88f9ec3865936f428c33ae2ba554bc8f4f1ad:/clients/blanche/blanche.c diff --git a/clients/blanche/blanche.c b/clients/blanche/blanche.c index 4226b13b..8174e86c 100644 --- a/clients/blanche/blanche.c +++ b/clients/blanche/blanche.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -241,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(2); - } /* canonicalize string if necessary */ if (memberstruct->type == M_STRING && (p = strchr(memberstruct->name, '@'))) { @@ -306,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; @@ -391,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; @@ -447,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); }