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);
+}