macutils/mixed/macsave.c
2018-03-22 21:07:53 -05:00

96 lines
1.9 KiB
C

#include <unistd.h>
#include <string.h>
#include "globals.h"
#include "../util/patchlevel.h"
#include "../fileio/wrfile.h"
#include "../fileio/wrfileopt.h"
#include "../util/util.h"
#define LOCALOPT "ilqVH"
void macbinary();
static void usage();
static char options[128];
int main(int argc, char **argv)
{
int c;
extern int optind;
extern char *optarg;
int errflg;
set_wrfileopt(0);
set_s_wrfileopt(1);
(void)strcat(options, get_wrfileopt());
(void)strcat(options, LOCALOPT);
errflg = 0;
while((c = getopt(argc, argv, options)) != EOF) {
if(!wrfileopt((char)c)) {
switch(c) {
case 'l':
list++;
break;
case 'q':
query++;
break;
case 'i':
info_only++;
break;
case '?':
errflg++;
break;
case 'H':
give_wrfileopt();
(void)fprintf(stderr, "Macsave specific options:\n");
(void)fprintf(stderr,
"-i:\tgive information only, do not save\n");
(void)fprintf(stderr, "-l:\tgive listing\n");
(void)fprintf(stderr,
"-q:\tquery for every file/folder before saving\n");
(void)fprintf(stderr,
"-V:\tgive information about this version\n");
(void)fprintf(stderr, "-H:\tthis message\n");
(void)fprintf(stderr, "Default is silent saving\n");
exit(0);
case 'V':
(void)fprintf(stderr, "Version %s, ", VERSION);
(void)fprintf(stderr, "patchlevel %d", PATCHLEVEL);
(void)fprintf(stderr, "%s.\n", get_mina());
exit(0);
}
}
}
if(errflg || optind != argc) {
usage();
exit(1);
}
infp = stdin;
if(info_only || query) {
list++;
}
c = getc(infp);
(void)ungetc(c, infp);
switch(c) {
case 0:
macbinary();
break;
default:
(void)fprintf(stderr, "Input is not MacBinary\n");
exit(1);
}
exit(0);
/* NOTREACHED */
}
static void usage()
{
(void)fprintf(stderr, "Usage: macsave [-%s]\n", options);
(void)fprintf(stderr, "Use \"macsave -H\" for help.\n");
}