home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / sharware / utility / PACKERS / LZH / LHASRC.EXE / LZH2ASM.C < prev    next >
C/C++ Source or Header  |  1991-01-06  |  1KB  |  66 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "typedef.h"
  5.  
  6. struct hdr {
  7.     uchar    size;
  8.     uchar    sum;
  9.     uchar    method[5];
  10.     ulong    packed;
  11.     ulong    original;
  12.     ulong    time;
  13.     ushort    attr;
  14.     uchar    fnlen;
  15.     uchar    fname[256];
  16. } header;
  17.  
  18. FILE *f0, *f1;
  19.  
  20. char title[] = "DATA\tsegment\tbyte public 'DATA'\n"
  21.                "\t\tpublic\tNAM_\n"
  22.                "NAM_\tdb\t\t";
  23.  
  24. char foot[]  = "\n"
  25.                "DATA\tends\n"
  26.                "\t\tend\n";
  27.  
  28. int main(int argc, char *argv[])
  29. {
  30.     int i, c, d;
  31.     char *p;
  32.  
  33.     f0 = fopen(argv[1], "rb");
  34.     if (f0 == NULL) exit(1);
  35.     f1 = fopen(argv[2], "w");
  36.     if (f1 == NULL) exit(1);
  37.  
  38.     fread(&header, 1, 2, f0);
  39.     fread(header.method, 1, header.size, f0);
  40.     do {
  41.         p = strstr(title, "NAM");
  42.         if (p) strncpy(p, argv[1], 3);
  43.     } while (p);
  44.     fprintf(f1, "%s", title);
  45.     fprintf(f1, "0%02lxh, 0%02lxh, 0%02lxh, 0%02lxh",
  46.             header.packed & 0xff, (header.packed >> 8) & 0xff,
  47.             header.original & 0xff, (header.original >> 8) & 0xff);
  48.     i = 4;
  49.     d = getc(f0);
  50.     while ((c = getc(f0)) != EOF) {
  51.         if (i == 8) {
  52.             fprintf(f1, "\n\t\tdb\t\t");
  53.             i = 0;
  54.         } else {
  55.             fputc(',', f1);
  56.             fputc(' ', f1);
  57.         }
  58.         fprintf(f1, "0%02xh", d);
  59.         d = c;
  60.         i++;
  61.     }
  62.     fprintf(f1, "%s", foot);
  63.     fclose(f1);
  64.     return 0;
  65. }
  66.