File: macsave.c

package info (click to toggle)
macutils 2.0b3-13
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 788 kB
  • ctags: 1,436
  • sloc: ansic: 12,655; makefile: 656
file content (96 lines) | stat: -rwxr-xr-x 1,929 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include "globals.h"
#include "../util/patchlevel.h"
#include "../fileio/wrfile.h"
#include "../fileio/wrfileopt.h"
#include "../util/util.h"

#define LOCALOPT	"ilqVH"

extern char *strcat();
void macbinary();

static void usage();

static char options[128];

int main(argc, argv)
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");
}