+ prog = *argv;
+ while (--argc > 0)
+ {
+ if (**++argv == '-')
+ {
+ switch (argv[0][1])
+ {
+ case 'h':
+ case 'H':
+ fprintf (stderr, "iso2709dump [options] [file]\n");
+ fprintf (stderr, "If no file is specified stdin is used\n");
+ fprintf (stderr, "Options:\n");
+ fprintf (stderr, " -p no Starting position\n");
+ fprintf (stderr, " -l end Ending position\n");
+ fprintf (stderr, " -o file Raw MARC output file\n");
+ fprintf (stderr, " -v Verbose\n");
+ fprintf (stderr, " -q Quiet mode\n");
+ exit (1);
+ case 'p':
+ if (argv[0][2])
+ start_pos = atoi (argv[0]+2);
+ else if (argc > 0)
+ {
+ --argc;
+ start_pos = atoi (*++argv);
+ }
+ else
+ {
+ fprintf (stderr, "%s: missing start pos\n", prog);
+ exit (1);
+ }
+ break;
+ case 'l':
+ if (argv[0][2])
+ end_pos = atoi (argv[0]+2);
+ else if (argc > 0)
+ {
+ --argc;
+ end_pos = atoi (*++argv);
+ }
+ else
+ {
+ fprintf (stderr, "%s: missing end pos\n", prog);
+ exit (1);
+ }
+ break;
+ case 'o':
+ if (argv[0][2])
+ output_file = argv[0]+2;
+ else if (argc > 0)
+ {
+ --argc;
+ output_file = *++argv;
+ }
+ else
+ {
+ fprintf (stderr, "%s: missing output file\n", prog);
+ exit (1);
+ }
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ case 'q':
+ quiet = 1;
+ break;
+ default:
+ fprintf (stderr, "%s: unknown option %s; use -h for help\n",
+ prog, *argv);
+ exit (1);
+ }
+ }
+ else
+ input_file = *argv;
+ }
+ if (input_file)
+ {
+ inf = fopen (input_file, "r");
+ if (!inf)
+ {
+ fprintf (stderr, "%s: cannot open %s: %s\n",
+ prog, input_file, strerror (errno));
+ exit (1);
+ }
+ }
+ if (output_file)
+ {
+ outf = fopen (output_file, "w");
+ if (!outf)
+ {
+ fprintf (stderr, "%s: cannot open %s: %s\n",
+ prog, output_file, strerror (errno));
+ exit (1);
+ }
+ }
+ while ((buf = iso2709_read (inf)))