/* **** PSCASS **** * * This program reads the data specific section of a postscript * cassette program and produces a postscript program to create * the complete postscript program. * */ #include #include #include #include #ifdef __MSDOS__ #define DIRSLASH '\\' #else #define DIRSLASH '/' #endif void do_help(char *); void do_usage(char *); void prologue_ps(FILE *); main(int argc,char **argv) { /* generate postscript program(s) to produce cassettes */ char *Prog; /* program name */ FILE *fp; /* input file */ FILE *ofp=stdout; /* output file */ char *p; /* misc pointer */ int c; /* input character */ if ((Prog = strrchr(argv[0],DIRSLASH)) == NULL) Prog = argv[0]; else Prog++; /* program name */ #ifdef __MSDOS__ if ((p = strrchr(Prog,'.')) != NULL) *p = '\0'; for (p = Prog; *p != '\0'; p++) if (isupper(*p)) *p = tolower(*p); #endif if (argc == 1) { /* no arguments, display a message & quit */ do_help(Prog); return 0; } for (argc--, argv++; argc > 0; argc--, argv++) { /* process all programs */ if (argv[0][0] == '-') switch(argv[0][1]) { /* command option - do it */ case 'h': /* help */ do_help(Prog); return 0; case 'o': /* output file */ if (argv[0][2] == '\0') { /* output file is next argument */ argc--; argv++; /* shift argument out */ p = argv[0]; } else { /* file name immediately after -o */ p = argv[0] + 2; } if ((ofp = fopen(p,"w")) == NULL) { /* bad file name */ fprintf(stderr,"%s: Can't open output file %s!\n", Prog, p); return 1; } break; default: fprintf(stderr,"%s: Invalid option (%s)\n", Prog, argv[0]); do_usage(Prog); return 2; } else { /* not option - must be file name */ if ((fp = fopen(argv[0],"r")) == NULL) { fprintf(stderr,"%s: Can't open file %s.\n", Prog, argv[0]); continue; } prologue_ps(ofp); /* generate prologue */ while((c = fgetc(fp)) != EOF) fputc(c,ofp); /* copy program */ if (ofp != stdout) fclose(ofp); /* close if actual file */ } } return 0; } void do_help(char *Prog) { /* print help message */ int i; /* loop variable */ char *msg[] = { "This program inserts cass.ps in front of a PostScript program file.\n", "The output from this program is a PostScript program that prints covers.\n", "\nThis program may be used as an alternative to using the language defined\n", "by the pscover program to create cassette covers.\n", NULL}; for (i=0; msg[i] != NULL; i++) fprintf(stderr,msg[i], Prog); do_usage(Prog); } void do_usage(char *Prog) { /* print usage message */ int i; /* loop variable */ char *msg[] = { "\nUsage:\t%s [-o outfile] pspgm ...\n", "-OR- for help, type:\n", "\t%s -h\n", "Where:\n", "\toutfile\tis the output file to create (default is stdout)\n", "\tpspgm\tis the postscript program to create the covers\n", NULL}; for (i=0; msg[i] != NULL; i++) fprintf(stderr,msg[i],Prog); }