- fprintf (stderr, "usage\n%s <file>\n", *argv);
- exit (1);
- }
- inf = fopen (argv[1], "r");
- if (!inf)
- {
- fprintf (stderr, "%s: cannot open %s:%s\n",
- *argv, argv[1], strerror (errno));
- exit (1);
- }
- if (fseek (inf, 0L, SEEK_END))
- {
- fprintf (stderr, "%s: cannot seek in %s:%s\n",
- *argv, argv[1], strerror (errno));
- exit (1);
+ no++;
+ switch (ret)
+ {
+ case 'c':
+ if (cfile)
+ fclose (cfile);
+ cfile = fopen (arg, "w");
+ break;
+ case 0:
+ inf = fopen (arg, "r");
+ if (!inf)
+ {
+ fprintf (stderr, "%s: cannot open %s:%s\n",
+ prog, arg, strerror (errno));
+ exit (1);
+ }
+ if (fseek (inf, 0L, SEEK_END))
+ {
+ fprintf (stderr, "%s: cannot seek in %s:%s\n",
+ prog, arg, strerror (errno));
+ exit (1);
+ }
+ file_size = ftell (inf);
+ if (fseek (inf, 0L, SEEK_SET))
+ {
+ fprintf (stderr, "%s: cannot seek in %s:%s\n",
+ prog, arg, strerror (errno));
+ exit (1);
+ }
+ buf = (char *)xmalloc (file_size);
+ if (!buf)
+ {
+ fprintf (stderr, "%s: cannot xmalloc: %s\n",
+ prog, strerror (errno));
+ exit (1);
+ }
+ if ((long) fread (buf, 1, file_size, inf) != file_size)
+ {
+ fprintf (stderr, "%s: cannot read %s: %s\n",
+ prog, arg, strerror (errno));
+ exit (1);
+ }
+ if (cfile)
+ {
+ fprintf (cfile, "char *marc_records[] = {\n");
+ }
+ for (p = buf; (ret = marc_display_ex (p, stdout, verbose)) > 0;)
+ {
+ if (cfile)
+ {
+ int i;
+ if (p != buf)
+ fprintf (cfile, ",");
+ fprintf (cfile, "{\n");
+ for (i = 0; i<ret; i++)
+ {
+ if ((i & 15) == 0)
+ fprintf (cfile, " \"");
+ fprintf (cfile, "\\x%02X", p[i] & 255);
+
+ if (i < ret - 1 && (i & 15) == 15)
+ fprintf (cfile, "\"\n");
+
+ }
+ fprintf (cfile, "\"\n}");
+ }
+ p += ret;
+ count++;
+ }
+ if (cfile)
+ {
+ fprintf (cfile, "};\n");
+ }
+ fclose (inf);
+ xfree (buf);
+ break;
+ case 'v':
+ verbose++;
+ break;
+ default:
+ fprintf (stderr, "Usage: %s [-c cfile] [-v] file...\n", prog);
+ exit (1);
+ }