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
|
|
|
/*
|
|
|
|
* ----------------------------------------------------------------------------
|
|
|
|
* "THE BEER-WARE LICENSE" (Revision 42):
|
2002-03-25 13:53:46 +00:00
|
|
|
* <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
|
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
|
|
|
* 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
|
|
|
|
* ----------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
|
2002-06-30 05:25:07 +00:00
|
|
|
#include <sys/cdefs.h>
|
|
|
|
__FBSDID("$FreeBSD$");
|
|
|
|
|
2005-05-15 06:26:59 +00:00
|
|
|
#include <limits.h>
|
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
|
|
|
#include <stdio.h>
|
2005-05-15 06:26:59 +00:00
|
|
|
#include <stdlib.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
|
|
static void
|
|
|
|
usage(void)
|
|
|
|
{
|
|
|
|
|
|
|
|
fprintf(stderr, "usage: %s [-n count] [-x] [prefix [suffix]]\n",
|
|
|
|
getprogname());
|
|
|
|
exit(1);
|
|
|
|
}
|
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
|
|
|
|
|
|
|
int
|
2005-05-15 01:07:36 +00:00
|
|
|
main(int argc, char *argv[])
|
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
|
|
|
{
|
2005-05-15 06:26:59 +00:00
|
|
|
int c, count, linepos, maxcount, radix;
|
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
|
|
|
|
2005-05-15 06:26:59 +00:00
|
|
|
maxcount = 0;
|
|
|
|
radix = 10;
|
|
|
|
while ((c = getopt(argc, argv, "n:x")) != -1) {
|
|
|
|
switch (c) {
|
|
|
|
case 'n': /* Max. number of bytes per line. */
|
|
|
|
maxcount = strtol(optarg, NULL, 10);
|
|
|
|
break;
|
|
|
|
case 'x': /* Print hexadecimal numbers. */
|
|
|
|
radix = 16;
|
|
|
|
break;
|
|
|
|
case '?':
|
|
|
|
default:
|
|
|
|
usage();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
argc -= optind;
|
|
|
|
argv += optind;
|
|
|
|
|
|
|
|
if (argc > 0)
|
|
|
|
printf("%s\n", argv[0]);
|
|
|
|
count = linepos = 0;
|
|
|
|
while((c = getchar()) != EOF) {
|
|
|
|
if (count) {
|
2005-05-15 01:07:36 +00:00
|
|
|
putchar(',');
|
2005-05-15 06:26:59 +00:00
|
|
|
linepos++;
|
2005-05-15 01:07:36 +00:00
|
|
|
}
|
2005-05-15 06:26:59 +00:00
|
|
|
if ((maxcount == 0 && linepos > 70) ||
|
|
|
|
(maxcount > 0 && count >= maxcount)) {
|
2005-05-15 01:07:36 +00:00
|
|
|
putchar('\n');
|
2005-05-15 06:26:59 +00:00
|
|
|
count = linepos = 0;
|
2005-05-15 01:07:36 +00:00
|
|
|
}
|
2005-05-15 06:26:59 +00:00
|
|
|
switch (radix) {
|
|
|
|
case 10:
|
|
|
|
linepos += printf("%d", c);
|
|
|
|
break;
|
|
|
|
case 16:
|
|
|
|
linepos += printf("0x%02x", c);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
abort();
|
|
|
|
}
|
|
|
|
count++;
|
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
|
|
|
}
|
2005-05-15 01:07:36 +00:00
|
|
|
putchar('\n');
|
2005-05-15 06:26:59 +00:00
|
|
|
if (argc > 1)
|
|
|
|
printf("%s\n", argv[1]);
|
2005-05-15 01:07:36 +00:00
|
|
|
return (0);
|
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
|
|
|
}
|