mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
91 lines
1.8 KiB
C
91 lines
1.8 KiB
C
/*
|
|
* ----------------------------------------------------------------------------
|
|
* "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 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
|
|
* ----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include <sys/cdefs.h>
|
|
#include <limits.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
static void
|
|
usage(void)
|
|
{
|
|
|
|
fprintf(stderr, "usage: %s [-sx] [-n count] [prefix [suffix]]\n",
|
|
getprogname());
|
|
exit(1);
|
|
}
|
|
|
|
int
|
|
main(int argc, char *argv[])
|
|
{
|
|
int c, count, linepos, maxcount, pretty, radix;
|
|
|
|
maxcount = 0;
|
|
pretty = 0;
|
|
radix = 10;
|
|
while ((c = getopt(argc, argv, "n:sx")) != -1) {
|
|
switch (c) {
|
|
case 'n': /* Max. number of bytes per line. */
|
|
maxcount = strtol(optarg, NULL, 10);
|
|
break;
|
|
case 's': /* Be more style(9) comliant. */
|
|
pretty = 1;
|
|
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) {
|
|
putchar(',');
|
|
linepos++;
|
|
}
|
|
if ((maxcount == 0 && linepos > 70) ||
|
|
(maxcount > 0 && count >= maxcount)) {
|
|
putchar('\n');
|
|
count = linepos = 0;
|
|
}
|
|
if (pretty) {
|
|
if (count) {
|
|
putchar(' ');
|
|
linepos++;
|
|
} else {
|
|
putchar('\t');
|
|
linepos += 8;
|
|
}
|
|
}
|
|
switch (radix) {
|
|
case 10:
|
|
linepos += printf("%d", c);
|
|
break;
|
|
case 16:
|
|
linepos += printf("0x%02x", c);
|
|
break;
|
|
default:
|
|
abort();
|
|
}
|
|
count++;
|
|
}
|
|
putchar('\n');
|
|
if (argc > 1)
|
|
printf("%s\n", argv[1]);
|
|
return (0);
|
|
}
|