This is pfb2ps.c in view mode; [Download] [Up]
/* pfb2ps.c - Copyright 1991-05-12 Erik Wallin, d87-ewa@nada.kth.se.
This program may be distributed freely, modified or included in
other free programs long as this copyright notice is still
included.
pfb2ps is a filter for converting postscript fonts stored in a binary
format used by PC-programs. (.PFM files) The output will be a plain
text file.
Note that you have to pipe the .PFM file into pfb2ps.
pfb2ps <xxx.pfb >xxx.ps
*/
#include <stdio.h>
#include <sys/malloc.h>
#define HEX_PER_LINE 32
int getlen()
{
int c1,c2,c3,c4;
c1 = getchar();
c2 = getchar();
c3 = getchar();
c4 = getchar();
return c1 + (256 * (c2 + 256 * (c3 + 256 * c4)));
}
void main ()
{
int t, l, i;
unsigned char *buf;
while(!feof(stdin))
{
if (getchar() != 128)
{
fprintf(stderr, "Magic number (128) not found or no input on stdin.\n");
exit (-1);
}
t = getchar();
fprintf(stderr, "Type: %d, ", t);
switch (t) {
case 1:
l = getlen();
fprintf(stderr, " plain text, length %d\n", l);
buf = (void *) malloc(l);
if (fread(buf, sizeof(unsigned char), l, stdin) != l)
{
fprintf(stderr, "Wrong length of ascii field: %d or could not read file.\n", l);
exit (-1);
}
if (fwrite(buf, sizeof(unsigned char), l, stdout) != l)
{
fprintf(stderr, "Could not write stdout.\n");
exit (-1);
}
free(buf);
break;
case 2:
l = getlen();
fprintf(stderr, " binary data, length %d\n", l);
buf = (void *) malloc(l);
if (fread(buf, sizeof(unsigned char), l, stdin) != l)
{
fprintf(stderr, "Wrong length of binary field: %d or could not read file.\n", l);
exit (-1);
}
for(i = 0;i < l ;i++)
{
printf("%2.2X", buf[i]);
if (!((i+1) % HEX_PER_LINE))
printf("\n");
}
printf("\n");
free(buf);
break;
case 3:
fprintf(stderr, "End of file\n");
exit(0);
break;
default:
{
fprintf(stderr, "Unknown field type: %d\n", t);
exit(-1);
}
}
}
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.