FreeCalypso > hg > freecalypso-tools
diff ffstools/tiffs-mkfs/main.c @ 705:12ae93940467
tiffs-mkfs program written, compiles
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 20 May 2020 06:55:58 +0000 |
parents | |
children | 178ed445021d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ffstools/tiffs-mkfs/main.c Wed May 20 06:55:58 2020 +0000 @@ -0,0 +1,67 @@ +#include <sys/types.h> +#include <sys/param.h> +#include <stdio.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> +#include "struct.h" +#include "globals.h" + +void +process_cmdline(argc, argv) + char **argv; +{ + extern int optind; + extern char *optarg; + int c; + + while ((c = getopt(argc, argv, "c:f:m:")) != EOF) + switch (c) { + case 'c': + chunk_size_max = strtoul(optarg, 0, 0); + continue; + case 'f': + if (*optarg != '/') { + fprintf(stderr, + "error: format name must begin with \'/\'\n"); + exit(1); + } + format_name = optarg; + continue; + case 'm': + block_files_max = strtoul(optarg, 0, 0); + continue; + default: +usage: fprintf(stderr, + "usage: %s [options] <org> <srcdir> <outfile>\n", + argv[0]); + exit(1); + } + if (argc - optind != 3) + goto usage; + parse_org_arg(argv[optind]); + input_host_dir = argv[optind+1]; + output_filename = argv[optind+2]; +} + +main(argc, argv) + char **argv; +{ + process_cmdline(argc, argv); + if (!format_name) + format_name = "/"; + preen_chunk_size_max(); + preen_block_files_max(); + /* input phase */ + read_dir_level(&root, input_host_dir, 0); + sort_dir_level(&root); + /* output phase */ + prepare_output_buffers(); + open_output_file(); + create_root_dir(); + process_dir_level(&root); + finish_output(); + close(output_fd); + exit(0); +}