#include <getopt.h>
#endif
+#define argis(a, b) (!strcmp(*arg + 1, a) || !strcmp(*arg + 1, b))
+
RCSID("$Header$");
int get_pobox(int argc, char **argv, void *callarg);
{
char *mrarg[3];
char *address, *uname;
+ char **arg = argv;
+ char *server = NULL;
int c, setflag, splitflag, prevflag, status;
setflag = splitflag = prevflag = 0;
if (argc > 5)
usage();
- while ((c = getopt(argc, argv, "s:S:pu:")) != -1)
- switch (c)
- {
- case 's':
- setflag++;
- address = optarg;
- break;
-
- case 'S':
- splitflag++;
- address = optarg;
- break;
-
- case 'p':
- prevflag++;
- break;
-
- case 'u':
- uname = optarg;
- break;
-
- default:
+ while (++arg - argv < argc)
+ {
+ if (**arg == '-')
+ {
+ if (argis("s", "set")) {
+ if (arg - argv < argc - 1) {
+ arg++;
+ setflag++;
+ address = *arg;
+ } else
+ usage();
+ }
+ else if (argis("S", "split")) {
+ if (arg - argv < argc - 1) {
+ arg++;
+ splitflag++;
+ address = *arg;
+ } else
+ usage();
+ }
+ else if (argis("p", "previous"))
+ prevflag++;
+ else if (argis("u", "username")) {
+ if (arg - argv < argc - 1) {
+ arg++;
+ uname = *arg;
+ } else
+ usage();
+ }
+ else if (argis("db", "database")) {
+ if (arg - argv < argc - 1) {
+ arg++;
+ server = *arg;
+ } else
+ usage();
+ }
+ }
+ else if (uname == NULL)
+ uname = *arg;
+ else
usage();
- break;
- }
- if (argc == 2 && optind == 1 && !uname)
- uname = argv[optind++];
+ }
- if (optind != argc || (prevflag + splitflag + setflag > 1))
+ if (prevflag + splitflag + setflag > 1)
usage();
if (!uname)
}
mrarg[0] = uname;
- if (mrcl_connect(NULL, "chpobox", 2, 1) != MRCL_SUCCESS)
+ if (mrcl_connect(server, "chpobox", 2, 1) != MRCL_SUCCESS)
exit(1);
if (setflag || splitflag)
void usage(void)
{
- fprintf(stderr, "Usage: %s [-s|-S address] [-p] [-u user]\n", whoami);
+ fprintf(stderr, "Usage: %s [-s|-S address] [-p] [-u user] [-db database]\n", whoami);
exit(1);
}