home *** CD-ROM | disk | FTP | other *** search
/ PC Shareware 1999 March / PCShareware-3-99.iso / IMPLE / DJGPP.RAR / DJGPP2 / XLIB-SR0.ZIP / SRC / XLIBEMU / MAKXFDIR.C < prev    next >
C/C++ Source or Header  |  1994-02-01  |  2KB  |  89 lines

  1. /* $Id: makxfdir.c 1.1 1994/02/01 14:35:01 ulrich Exp $ */
  2. /*
  3.  * Create xfonts.dir.
  4.  */
  5.  
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <fcntl.h>
  9.  
  10. int
  11. main(int argc, char *argv[])
  12. {
  13.   char *outname = NULL;
  14.   FILE *outfile = NULL;
  15.   char *fntname;
  16.   FILE *fntfile;
  17.   char *program;
  18.   int c, i;
  19.   char buf[512];
  20.   char *p;
  21.   
  22.   program = argv[0];
  23.  
  24.   if (argc <= 1 || strcmp (argv[1],"-?") == 0) {
  25.     fprintf (stderr, "usage: %s [-o file] font1.fnt ...\n", program);
  26.     exit (1);
  27.   }
  28.   if (strcmp (argv[1], "-o") == 0 && argc >= 3) {
  29.     outname = argv[2];
  30.     outfile = fopen (outname, "w+");
  31.     argc -= 2;
  32.     argv += 2;
  33.   }
  34.   if (outfile == NULL)
  35.     outfile = stdout;
  36.  
  37.   setmode (fileno (outfile), O_BINARY);
  38.  
  39.   while (argc > 1)
  40.     {
  41.       --argc;
  42.       ++argv;
  43.  
  44.       fntname = *argv;
  45.       fntfile = fopen (fntname, "rb");
  46.       if (fntfile == NULL) {
  47.     fprintf (stderr, "%s: warning: cannot open \"%s\"\n",
  48.          program, fntname);
  49.     continue;
  50.       }
  51.       while ((c = fgetc (fntfile)) != EOF)
  52.     {
  53.       if (c != '\n') continue;
  54.  
  55.       p = buf;
  56.       if ((*p++ = fgetc(fntfile)) != 'F') continue;
  57.       if ((*p++ = fgetc(fntfile)) != 'O') continue;
  58.       if ((*p++ = fgetc(fntfile)) != 'N') continue;
  59.       if ((*p++ = fgetc(fntfile)) != 'T') continue;
  60.       if ((*p++ = fgetc(fntfile)) != ' ') continue;
  61.       for (i = 5; i < sizeof(buf)-1; i++)
  62.         if ((*p++ = fgetc(fntfile)) == '\n')
  63.           break;
  64.       *p++ = 0;
  65.  
  66.       for (i = strlen(fntname) - 1; i >= 0; --i)
  67.         if (fntname[i] == '/'
  68.         || fntname[i] == '\\'
  69.         || fntname[i] == ':')
  70.           break;
  71.       
  72.       fputs (fntname + i + 1, outfile);
  73.       fputc (':', outfile);
  74.       fputs (buf, outfile);
  75.       break;
  76.     }
  77.       if (c == EOF) {
  78.     fprintf (stderr, "%s: warning: FONT not found in \"%s\"\n",
  79.          program, fntname);
  80.       }
  81.       fclose (fntfile);
  82.     }
  83.   if (outname)    /* do not close stdout */
  84.     fclose (outfile);
  85.  
  86.   return (0);
  87. }
  88.  
  89.