FreeCalypso > hg > freecalypso-tools
view ffstools/tiffs-wrappers/tiffs-8m.c @ 728:8e7f6cca385b
tiffs-8m wrapper utility written
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 28 Aug 2020 05:03:54 +0000 |
parents | |
children |
line wrap: on
line source
/* * tiffs-8m is a wrapper around tiffs similar to mokoffs: we pass the user's * command along, together with any options, but insert the 64x15 FFS * organization argument automatically, and translate -f into -o0x700000. */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <unistd.h> extern char tiffs_prog_pathname[]; char *imgfile; char *aopt, *ropt; int fflag, Oflag; char **passon_argv; int passon_argc; int output_argc; char **output_argv; main(argc, argv) char **argv; { extern int optind; extern char *optarg; int c; char **sp, **dp; while ((c = getopt(argc, argv, "+a:fOr:")) != EOF) switch (c) { case 'a': aopt = optarg; continue; case 'f': fflag++; continue; case 'O': Oflag++; continue; case 'r': ropt = optarg; continue; default: usage: fprintf(stderr, "usage: %s [global-options] <imgfile> <op> ...\n", argv[0]); exit(1); } if (argc - optind < 2) goto usage; imgfile = argv[optind++]; passon_argv = argv + optind; passon_argc = argc - optind; output_argc = passon_argc + 3; if (fflag) output_argc++; if (Oflag) output_argc++; if (aopt) output_argc += 2; if (ropt) output_argc += 2; output_argv = malloc(sizeof(char *) * (output_argc + 1)); if (!output_argv) { perror("malloc for tiffs argument list"); exit(1); } dp = output_argv; *dp++ = "tiffs"; if (fflag) *dp++ = "-o0x700000"; if (Oflag) *dp++ = "-O"; if (aopt) { *dp++ = "-a"; *dp++ = aopt; } if (ropt) { *dp++ = "-r"; *dp++ = ropt; } *dp++ = imgfile; *dp++ = "64x15"; for (sp = passon_argv; *sp; sp++) *dp++ = *sp; *dp = 0; execvp(tiffs_prog_pathname, output_argv); perror(tiffs_prog_pathname); exit(1); }