void check_twobits (void) { #define TWOBITS(a, b) \ ((CNST_LIMB(1) << (a)) | (CNST_LIMB(1) << (b))) refmpn_zero (x, SIZE); x[0] = TWOBITS (1, 0); check (); refmpn_zero (x, SIZE); x[0] = TWOBITS (GMP_NUMB_BITS-1, 1); check (); refmpn_zero (x, SIZE); x[0] = CNST_LIMB(1); x[1] = CNST_LIMB(1); check (); refmpn_zero (x, SIZE); x[0] = CNST_LIMB(1) << (GMP_NUMB_BITS-1); x[1] = CNST_LIMB(1); check (); refmpn_zero (x, SIZE); x[1] = TWOBITS (1, 0); check (); refmpn_zero (x, SIZE); x[1] = CNST_LIMB(1); x[2] = CNST_LIMB(1); check (); }
int main(int ac, char *av[]) { int c; struct timeval tp; #ifdef DEBUG char *optstr = "A:ab:def:G:ghikOpt:U:uwx:z"; #else /* DEBUG */ char *optstr = "A:ab:ef:G:ghikOpt:U:uwx:"; #endif /* DEBUG */ Program = av[0]; gettimeofday(&tp, NULL); Now = tp.tv_sec; while ((c = getopt(ac, av, optstr)) != EOF) { switch (c) { case 'A': /* arg (admin set) */ OptFlags |= OPTA; ProcAdminArg(optarg); break; case 'a': OptFlags |= OPTa; AddRecord(SAM_QUOTA_ADMIN, -1); break; case 'b': /* arg (block count) */ OptFlags |= OPTb; ProcBlockArg(optarg); break; #ifdef DEBUG case 'd': OptFlags |= OPTd; dflag++; break; #endif /* DEBUG */ case 'e': OptFlags |= OPTe; eflag++; pflag++; break; case 'f': /* arg (file count) */ OptFlags |= OPTf; ProcFileArg(optarg); break; case 'G': /* arg (group ID) */ OptFlags |= OPTG; ProcGroupArg(optarg); break; case 'g': OptFlags |= OPTg; AddRecord(SAM_QUOTA_GROUP, getegid()); break; case 'h': /* help. No return */ Help(0); break; case 'i': OptFlags |= OPTi; iflag = INIT_LIMITS_ZERO; break; case 'k': OptFlags |= OPTk; kflag++; break; case 'O': /* Don't print total counts */ OptFlags |= OPTO; tflag = 0; break; case 'p': OptFlags |= OPTp; pflag++; break; case 't': /* arg (grace period) */ OptFlags |= OPTt; ProcTimeArg(optarg); break; case 'U': /* arg (user ID) */ OptFlags |= OPTU; ProcUserArg(optarg); break; case 'u': OptFlags |= OPTu; AddRecord(SAM_QUOTA_USER, geteuid()); break; case 'w': OptFlags |= OPTw; wflag = 0; break; case 'x': /* arg (expiry) */ OptFlags |= OPTx; ProcExpireArg(optarg); break; #ifdef DEBUG case 'z': OptFlags |= OPTz; iflag = INIT_ALL_ZERO; break; #endif /* DEBUG */ default: Help(1); } } for (; optind < ac; optind++) { ProcFile(av[optind]); } /* * Check options for validity. */ #define TWOBITS(a, b, c) ((a & (b | c)) == (b | c)) if (OptFlags & OPTMASK_Set) { if (NFiles == 0 || (OptFlags & (OPTa | OPTg | OPTu))) { fprintf(stderr, "%s: The options require a file.\n", Program); Help(1); } } else { /* just reporting */ } if (TWOBITS(OptFlags, OPTa, OPTA) || TWOBITS(OptFlags, OPTg, OPTG) || TWOBITS(OptFlags, OPTu, OPTU)) { fprintf(stderr, "%s: Incorrect option usage.\n", Program); Help(1); } if (!Err) ProcessFiles(); return (Err ? 10 : 0); }