+
+ case 'U':
+ case 'S':
+ if (i != 1 || argv[0][2]) { /* gross! */
+ fprintf(stderr, "-U and -S options must be separate\n");
+ exit(1);
+ }
+ argc++, argv--; /* backup - yuk */
+ goto doUS;
+
+ default:
+ fprintf(stderr, "Invalid option %c\n", argv[0][1]);
+ exit(1);
+ }
+ }
+
+#define optfile(f) {if (argc < 2) \
+ { fprintf(stderr, "Missing filename\n"); exit(1); } \
+ argc--, argv++; f = argv[0]; }
+
+doUS:
+ for (argc--, argv++; argc && argv[0][0] == '-'; argc--, argv++) {
+ switch(argv[0][1]) {
+ case 'U':
+ optfile(usracct);
+ break;
+
+ case 'S':
+ optfile(savacct);
+ break;
+
+ default:
+ fprintf(stderr, "Invalid option %c\n", argv[0][1]);
+ exit(1);