77a77c66d1
after that many values have been printed. The line length is not considered anymore. o Add option -x. The -x option will cause the byte values to be printed in hexadecimal instead of decimal. o Bump WARNS to 6. o Update the manpage accordingly.
80 lines
1.6 KiB
C
80 lines
1.6 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>
|
|
__FBSDID("$FreeBSD$");
|
|
|
|
#include <limits.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
static void
|
|
usage(void)
|
|
{
|
|
|
|
fprintf(stderr, "usage: %s [-n count] [-x] [prefix [suffix]]\n",
|
|
getprogname());
|
|
exit(1);
|
|
}
|
|
|
|
int
|
|
main(int argc, char *argv[])
|
|
{
|
|
int c, count, linepos, maxcount, radix;
|
|
|
|
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) {
|
|
putchar(',');
|
|
linepos++;
|
|
}
|
|
if ((maxcount == 0 && linepos > 70) ||
|
|
(maxcount > 0 && count >= maxcount)) {
|
|
putchar('\n');
|
|
count = linepos = 0;
|
|
}
|
|
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);
|
|
}
|