e2fsprogs/resize/test_extent.c
Theodore Ts'o d1154eb460 Shorten compile commands run by the build system
The DEFS line in MCONFIG had gotten so long that it exceeded 4k, and
this was starting to cause some tools heartburn.  It also made "make
V=1" almost useless, since trying to following the individual commands
run by make was lost in the noise of all of the defines.

So fix this by putting the configure-generated defines in lib/config.h
and the directory pathnames to lib/dirpaths.h.

In addition, clean up some vestigal defines in configure.in and in the
Makefiles to further shorten the cc command lines.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2011-09-18 17:34:37 -04:00

125 lines
2.4 KiB
C

/*
* test_extent.c --- tester for the extent abstraction
*
* Copyright (C) 1997, 1998 by Theodore Ts'o and
* PowerQuest, Inc.
*
* Copyright (C) 1999, 2000 by Theosore Ts'o
*
* %Begin-Header%
* This file may be redistributed under the terms of the GNU Public
* License.
* %End-Header%
*/
#include "config.h"
#include "resize2fs.h"
void do_test(FILE *in, FILE *out);
void do_test(FILE *in, FILE *out)
{
char buf[128];
char *cp, *cmd, *arg1, *arg2;
__u64 num1, num2;
__u64 size;
errcode_t retval;
ext2_extent extent = 0;
const char *no_table = "# No extent table\n";
while (!feof(in)) {
if (!fgets(buf, sizeof(buf), in))
break;
/*
* Ignore comments
*/
if (buf[0] =='#')
continue;
/*
* Echo command
*/
fputs(buf, out);
cp = strchr(buf, '\n');
if (cp)
*cp = '\0';
/*
* Parse command line; simple, at most two arguments
*/
cmd = buf;
num1 = num2 = 0;
arg1 = arg2 = 0;
cp = strchr(buf, ' ');
if (cp) {
*cp++ = '\0';
arg1 = cp;
num1 = strtoul(arg1, 0, 0);
cp = strchr(cp, ' ');
}
if (cp) {
*cp++ = '\0';
arg2 = cp;
num2 = strtoul(arg2, 0, 0);
}
if (!strcmp(cmd, "create")) {
retval = ext2fs_create_extent_table(&extent, num1);
if (retval) {
handle_error:
fprintf(out, "# Error: %s\n",
error_message(retval));
continue;
}
continue;
}
if (!extent) {
fputs(no_table, out);
continue;
}
if (!strcmp(cmd, "free")) {
ext2fs_free_extent_table(extent);
extent = 0;
} else if (!strcmp(cmd, "add")) {
retval = ext2fs_add_extent_entry(extent, num1, num2);
if (retval)
goto handle_error;
} else if (!strcmp(cmd, "lookup")) {
num2 = ext2fs_extent_translate(extent, num1);
fprintf(out, "# Answer: %llu%s\n", num2,
num2 ? "" : " (not found)");
} else if (!strcmp(cmd, "dump")) {
ext2fs_extent_dump(extent, out);
} else if (!strcmp(cmd, "iter_test")) {
retval = ext2fs_iterate_extent(extent, 0, 0, 0);
if (retval)
goto handle_error;
while (1) {
retval = ext2fs_iterate_extent(extent,
&num1, &num2, &size);
if (retval)
goto handle_error;
if (!size)
break;
fprintf(out, "# %llu -> %llu (%llu)\n",
num1, num2, size);
}
} else
fputs("# Syntax error\n", out);
}
}
#ifdef __GNUC__
#define ATTR(x) __attribute__(x)
#else
#define ATTR(x)
#endif
int main(int argc ATTR((unused)), char **argv ATTR((unused)))
{
do_test(stdin, stdout);
exit(0);
}