Ejemplo n.º 1
0
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 ();
}
Ejemplo n.º 2
0
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);
}