int argc;
char **argv;
{
- int status;
+ int status, success;
char **arg = argv;
char *membervec[3], *motd;
struct member *memberstruct;
synclist = sq_create();
whoami = argv[0];
+ success = 1;
+
/* parse args, building addlist, dellist, & synclist */
while (++arg - argv < argc) {
if (**arg == '-')
else if (status != MR_USER || memberstruct->type != M_ANY) {
com_err(whoami, status, "while adding member %s to %s",
memberstruct->name, listname);
+ success = 0;
break;
}
case M_LIST:
} else if (status != MR_LIST || memberstruct->type != M_ANY) {
com_err(whoami, status, "while adding member %s to %s",
memberstruct->name, listname);
+ success = 0;
break;
}
case M_STRING:
membervec[1] = "STRING";
status = mr_query("add_member_to_list", 3, membervec,
scream, NULL);
- if (status != MR_SUCCESS)
+ if (status != MR_SUCCESS) {
com_err(whoami, status, "while adding member %s to %s",
memberstruct->name, listname);
+ success = 0;
+ }
else if (!strchr(memberstruct->name, '@') &&
!strchr(memberstruct->name, '!') &&
!strchr(memberstruct->name, '%')) {
membervec[1] = "KERBEROS";
status = mr_query("add_member_to_list", 3, membervec,
scream, NULL);
- if (status != MR_SUCCESS)
+ if (status != MR_SUCCESS) {
com_err(whoami, status, "while adding member %s to %s",
memberstruct->name, listname);
+ success = 0;
+ }
}
}
memberstruct->type != M_ANY) {
com_err(whoami, status, "while deleting member %s from %s",
memberstruct->name, listname);
+ success = 0;
break;
}
case M_LIST:
}
com_err(whoami, status, "while deleting member %s from %s",
memberstruct->name, listname);
+ success = 0;
break;
}
case M_STRING:
if (status == MR_STRING && memberstruct->type == M_ANY) {
com_err(whoami, 0, " Unable to find member %s to delete from %s",
memberstruct->name, listname);
+ success = 0;
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)
+ } else if (status != MR_SUCCESS) {
com_err(whoami, status, "while deleting member %s from %s",
memberstruct->name, listname);
+ success = 0;
+ }
break;
case M_KERBEROS:
membervec[1] = "KERBEROS";
status = mr_query("delete_member_from_list", 3, membervec,
scream, NULL);
- if (status != MR_SUCCESS)
+ if (status != MR_SUCCESS) {
com_err(whoami, status, "while deleting member %s from %s",
memberstruct->name, listname);
+ success = 0;
+ }
}
}
/* We're done! */
mr_disconnect();
- exit(0);
+ exit(success?0:1);
}
usage(argv)
while (fgets(buf, BUFSIZ, in))
if (memberstruct = parse_member(buf))
sq_save_data(queue, memberstruct);
- if (!feof(in))
+ if (!feof(in)) {
com_err(whoami, errno, "while reading from %s", filename);
+ exit(2);
+ }
}