#include <stdio.h>
#include <string.h>
#include <ctype.h>

main (int argc, char *argv[]) {
	int c,i,n,q;
	FILE *in, *out;
	char input_file  [FILENAME_MAX];
	char output_file [FILENAME_MAX];

	if (argc > 1) {
		strcpy (input_file,argv[1]);
		if (in = fopen (input_file,"r")) {
			if (argc > 2) strcpy (output_file,argv[2]);
			else {
				strcpy (output_file,input_file);
				strcat (output_file,".bin");
				}
			if (out = fopen (output_file,"wb")) {
				n = 0;
				q = 0;
				while ((c = fgetc (in)) != EOF) {
					if (isxdigit (c)) {
						i = c - '0';
						if (i > 9) i -= 7;
						n *= 16;
						n += i;
						q = 1;
						}
					else {
						if (q && isspace (c)) {
							fputc (n,out);
							n = 0;
							q = 0;
							}
						}
					}
				fclose (out);
				}
			else {
				printf ("Error: could not open output file %s\n",output_file);
				exit (1);
				}
			fclose (in);
			}
		else {
			printf ("Error: could not open input file %s\n",input_file);
			exit (1);
			}
		}
	else {
		printf ("Usage: %s input_file [output_file]\n",argv[0]);
		exit (0);
		}
	}

