diff options
author | phk <phk@FreeBSD.org> | 1995-01-29 00:49:57 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 1995-01-29 00:49:57 +0000 |
commit | 44d9c7e9b3d448bf116a13c6bd8ebb5d7c8ffe36 (patch) | |
tree | 74d96360e3e3de678927ef324e7928a057b7d3dd /usr.bin | |
parent | 1c4f0da002bee304102c51e111fb0008aa0c8634 (diff) | |
download | FreeBSD-src-44d9c7e9b3d448bf116a13c6bd8ebb5d7c8ffe36.zip FreeBSD-src-44d9c7e9b3d448bf116a13c6bd8ebb5d7c8ffe36.tar.gz |
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 :-)
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/file2c/Makefile | 6 | ||||
-rw-r--r-- | usr.bin/file2c/file2c.1 | 48 | ||||
-rw-r--r-- | usr.bin/file2c/file2c.c | 46 |
3 files changed, 100 insertions, 0 deletions
diff --git a/usr.bin/file2c/Makefile b/usr.bin/file2c/Makefile new file mode 100644 index 0000000..f19c125 --- /dev/null +++ b/usr.bin/file2c/Makefile @@ -0,0 +1,6 @@ +# $Id: Makefile,v 1.3 1994/09/24 02:55:45 davidg Exp $ + +PROG= file2c +MAN1= file2c.1 + +.include <bsd.prog.mk> diff --git a/usr.bin/file2c/file2c.1 b/usr.bin/file2c/file2c.1 new file mode 100644 index 0000000..c2dda08 --- /dev/null +++ b/usr.bin/file2c/file2c.1 @@ -0,0 +1,48 @@ +.\"---------------------------------------------------------------------------- +.\" "THE BEER-WARE LICENSE" (Revision 42): +.\" <phk@freebsd.org> wrote this file. As long as you retain this notice, you +.\" can do whatever you want with this file. 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$ +.\" +.Dd Jan 28, 1995 +.Dt FILE2C 1 +.Os +.Sh NAME +.Nm file2c +.Nd convert file to c-source. +.Sh SYNOPSIS +.Nm file2c +.Op "string" +.Op "string" +.Sh DESCRIPTION +The +.Nm file2c +utility reads a file from stdin and writes it to stdout, converting each +byte to its decimal representation on the fly. +.Pp +If the first +.Op string +is present, it is printed before the data, if the second +.Op string +is present, it is printed after the data. +.Pp +This program is used to embedd binary or other files into C source files, +for instance as a char[]. +.Sh EXAMPLE +The command: +.Bd -literal -offset indent +date | file2c 'const char date[] = {' ',0};' +.Ed +.Pp +will produce: +.Bd -literal -offset indent +const char date[] = { +83,97,116,32,74,97,110,32,50,56,32,49,54,58,50,56,58,48,53, +32,80,83,84,32,49,57,57,53,10 +,0}; +.Ed + + diff --git a/usr.bin/file2c/file2c.c b/usr.bin/file2c/file2c.c new file mode 100644 index 0000000..0bad904 --- /dev/null +++ b/usr.bin/file2c/file2c.c @@ -0,0 +1,46 @@ +/* + * ---------------------------------------------------------------------------- + * "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; +} |