FreeCalypso > hg > freecalypso-tools
view ffstools/tiffs-wrappers/pirffs.c @ 752:c79aaed75bd8
compile-fc-batt: allow possible third field in source lines
Battery tables maintained in the fc-battery-conf repository will now
have a third field added, defining thresholds for the battery bars icon,
and there will be a new utility to compile them into the new
/etc/batterytab2 file read by the FC Tourmaline version of our
FCHG driver. For backward compatibility with the original Magnetite
version of FCHG, compile-fc-batt remains the tool for compiling the
original /etc/batterytab file format, and it needs to ignore the
newly added third field in battery table sources.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 05 Nov 2020 20:37:55 +0000 |
parents | e7502631a0f9 |
children |
line wrap: on
line source
/* * pirffs is a wrapper around tiffs: we pass the user's command along, * together with any options, but insert the 256x18 FFS organization argument * automatically. */ #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; 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:r:")) != EOF) switch (c) { case 'a': aopt = optarg; 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 (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 (aopt) { *dp++ = "-a"; *dp++ = aopt; } if (ropt) { *dp++ = "-r"; *dp++ = ropt; } *dp++ = imgfile; *dp++ = "256x18"; for (sp = passon_argv; *sp; sp++) *dp++ = *sp; *dp = 0; execvp(tiffs_prog_pathname, output_argv); perror(tiffs_prog_pathname); exit(1); }