#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>

int main (int argc, char *argv[])
{
    int fd;
    int nread;
    unsigned char buf[1024];
    int done = 0;
    int i;
    int count = 0;
    
    if (argc != 2) {
	printf ("Usage: comp <filename>\n");
	exit (0);
    }


    fd = open (argv[1], O_RDONLY);
    if (fd < 0) {
	fprintf (stderr, "Unable to open file %s: %s\n", argv[1], strerror (errno));
	exit (1);
    }
  
    printf ("char compiler_bytecode[] = \n\"");
    do {
	nread = read (fd, buf, 1024);
	if (nread < 1024)
	    done = 1;

	for (i = 0; i < nread; i++) {
	    printf ("\\x%.2x", (unsigned int) buf[i]);
	    count++;
	    if (!(count % 20)) {
		printf ("\"\n\"");
	    }
	}
    } while (!done);
    printf ("\";\n\n");

    return (0);
}

    


syntax highlighted by Code2HTML, v. 0.9.1