Beispiel #1
0
int
dumpcg(void)
{
	time_t cgtime;
	off_t cur;
	int i, j;

	printf("\ncg %d:\n", disk.d_lcg);
	cur = fsbtodb(&afs, cgtod(&afs, disk.d_lcg)) * disk.d_bsize;
	switch (disk.d_ufs) {
	case 2:
		cgtime = acg.cg_time;
		printf("magic\t%x\ttell\t%jx\ttime\t%s",
		    acg.cg_magic, (intmax_t)cur, ctime(&cgtime));
		printf("cgx\t%d\tndblk\t%d\tniblk\t%d\tinitiblk %d\tunrefs %d\n",
		    acg.cg_cgx, acg.cg_ndblk, acg.cg_niblk, acg.cg_initediblk,
		    acg.cg_unrefs);
		break;
	case 1:
		cgtime = acg.cg_old_time;
		printf("magic\t%x\ttell\t%jx\ttime\t%s",
		    acg.cg_magic, (intmax_t)cur, ctime(&cgtime));
		printf("cgx\t%d\tncyl\t%d\tniblk\t%d\tndblk\t%d\n",
		    acg.cg_cgx, acg.cg_old_ncyl, acg.cg_old_niblk,
		    acg.cg_ndblk);
		break;
	default:
		break;
	}
	printf("nbfree\t%d\tndir\t%d\tnifree\t%d\tnffree\t%d\n",
	    acg.cg_cs.cs_nbfree, acg.cg_cs.cs_ndir,
	    acg.cg_cs.cs_nifree, acg.cg_cs.cs_nffree);
	printf("rotor\t%d\tirotor\t%d\tfrotor\t%d\nfrsum",
	    acg.cg_rotor, acg.cg_irotor, acg.cg_frotor);
	for (i = 1, j = 0; i < afs.fs_frag; i++) {
		printf("\t%d", acg.cg_frsum[i]);
		j += i * acg.cg_frsum[i];
	}
	printf("\nsum of frsum: %d", j);
	if (afs.fs_contigsumsize > 0) {
		for (i = 1; i < afs.fs_contigsumsize; i++) {
			if ((i - 1) % 8 == 0)
				printf("\nclusters %d-%d:", i,
				    afs.fs_contigsumsize - 1 < i + 7 ?
				    afs.fs_contigsumsize - 1 : i + 7);
			printf("\t%d", cg_clustersum(&acg)[i]);
		}
		printf("\nclusters size %d and over: %d\n",
		    afs.fs_contigsumsize,
		    cg_clustersum(&acg)[afs.fs_contigsumsize]);
		printf("clusters free:\t");
		pbits(cg_clustersfree(&acg), acg.cg_nclusterblks);
	} else
		printf("\n");
	printf("inodes used:\t");
	pbits(cg_inosused(&acg), afs.fs_ipg);
	printf("blks free:\t");
	pbits(cg_blksfree(&acg), afs.fs_fpg);
	return (0);
}
Beispiel #2
0
/*
 * Convert string to number and display in various formats.
 * If s is NULL, then use the number farg instead.  If the input
 * string cannot be interpreted, return non-zero, or zero on success.
 */
int reprint_number (char *s, Float farg)
{
    ieeefloat F;
    if (s == NULL)
	F.f = farg;
    else
    {
	if (s[0]=='0' && s[1]=='x') { /* it's an integer */
	    if (parse_int (s, F.i)) {
		printf ("can't parse integer <%s>\n", s);
		return 1;
	    }
	} else {
            char *endptr;
            errno = 0;
	    F.f = strtod (s, &endptr);
            if (errno != 0)
                return 1;
            for (; isspace(*endptr); endptr++)
                ;
            if (*endptr != '\0')
                return 1;
        }
    }

#if DOUBLEPRECISION
    /* 49 bits of precision is 49*log_10(2)=14.75 dec.digits of precision */
	printf ("double  %24.16e\n   hex  %08x %08x\n",
	    F.f, F.i[0], F.i[1]);
#else
	printf (" float  %12.7e\n   hex  %08x\n", F.f, F.i[0]);
#endif
    printf ("binary  %s ", pbits (F.ieee.s, 1));
    printf ("%s ", pbits (F.ieee.e, EXPONENTWIDTH));
    printf ("%s ", pbits (F.ieee.m, MANTISSAWIDTH));
#if DOUBLEPRECISION
    printf ("%s", pbits (F.ieee.m2, 32));
#endif
    printf ("\n  type  ");

    /* now print out what type of number it is */
    if (F.ieee.e == 0)
        if (ZEROMANTISSA(F))
            printf ("%s zero",
                    (F.ieee.s ? "Negative" : "Positive"));
        else
            printf ("Subnormal");
    else if (F.ieee.e == FULLEXPONENT)
        if (ZEROMANTISSA(F))
            printf ("%s infinity",
                    (F.ieee.s ? "Negative" : "Positive"));
        else
            printf ("%s NaN",
                    (F.ieee.m & (1<<(MANTISSAWIDTH-1))
		     ? "Quiet"
		     : "Signalling"));
    else
        printf ("Normal");

    /* test the pis??? routines */
    printf (" (%c%c%c%c)\n",
	    (pisnan    (F.f) ? 'N' : 'n'),
	    (pisinf    (F.f) ? 'I' : 'i'),
	    (pisfinite (F.f) ? 'F' : 'f'),
	    (pisnormal (F.f) ? 'L' : 'l'));

    return 0;
}