HardenedBSD/usr.bin/file2c/file2c.c
Poul-Henning Kamp b71255826d This is a small little program used to execute a bad practice a clean way :-)
It will read a file on stdin and write it as decimal integers on stdout,
this is useful for embedding files in c-sources.

There are a few places where this is needed, and this is a better way than
the current practice of hand-editing the sources.

The command:

date | file2c 'const char date[] = {' ',0};'

will produce:

const char date[] = {
83,97,116,32,74,97,110,32,50,56,32,49,54,58,52,55,58,51,51,32,80,83,84,
32,49,57,57,53,10
,0};

The manual page is 2 lines longer than the source :-)
1995-01-29 00:49:57 +00:00

47 lines
931 B
C

/*
* ----------------------------------------------------------------------------
* "THE BEER-WARE LICENSE" (Revision 42):
* <phk@login.dknet.dk> wrote this file. As long as you retain this notice you
* can do whatever you want with this stuff. If we meet some day, and you think
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
* $Id$
*
*/
#include <stdio.h>
int
main(int argc, char **argv)
{
int i,j,k;
char s[10];
if (argc > 1)
printf("%s\n",argv[1]);
k = 0;
j = 0;
while((i = getchar()) != EOF) {
if(k++) {
putchar(',');
j++;
}
if (j > 70) {
putchar('\n');
j = 0;
}
printf("%d",i);
if (i > 99)
j += 3;
else if (i > 9)
j += 2;
else
j++;
}
putchar('\n');
if (argc > 2)
printf("%s\n",argv[2]);
return 0;
}