FreeCalypso > hg > freecalypso-tools
view ffstools/tiffs-mkfs/main.c @ 738:f19d12f5756f
doc/Target-boot-control: updated for DUART28C
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 16 Sep 2020 06:49:31 +0000 |
parents | 178ed445021d |
children |
line wrap: on
line source
#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:j:Jm:")) != 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 'j': journal_size = strtoul(optarg, 0, 0); continue; case 'J': no_journal = 1; 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_journal_size(); 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); if (!no_journal) create_journal(); finish_output(); close(output_fd); exit(0); }