Initial release.
This commit is contained in:
parent
0e283f9f62
commit
a9cee145d7
|
@ -0,0 +1,9 @@
|
|||
BINDIR=/usr/local/bin
|
||||
CC = gcc
|
||||
CFLAGS = -Wall -ansi -pedantic -O2 -g
|
||||
fix2var: fix2var.o
|
||||
$(CC) $^ -lant -o $@
|
||||
|
||||
install: $(BINDIR)/fix2var
|
||||
$(BINDIR)/%: %
|
||||
install $< $@
|
|
@ -0,0 +1,94 @@
|
|||
char fix2var_c_rcs_id[] =
|
||||
"$Id: fix2var.c,v 1.1 1996-08-30 12:25:22 hjp Exp $";
|
||||
/*
|
||||
* fix2var - convert fixed length record data to line oriented format
|
||||
*
|
||||
* This program simply copies fixed length chunks from a file to
|
||||
* stdout. Each chunk is terminated with a '\n' character.
|
||||
* Optionally trailing white space can be stripped.
|
||||
*
|
||||
* $Log: fix2var.c,v $
|
||||
* Revision 1.1 1996-08-30 12:25:22 hjp
|
||||
* Initial release.
|
||||
*
|
||||
*/
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <ant/io.h>
|
||||
#include <ant/alloc.h>
|
||||
|
||||
char *cmnd;
|
||||
|
||||
unsigned long width = 80;
|
||||
int strip = 1;
|
||||
|
||||
void usage(void) {
|
||||
fprintf(stderr, "Usage: %s [-l width] [file ...]\n", cmnd);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
void fix2var(const char *filename) {
|
||||
FILE *fp;
|
||||
char *buf = emalloc(width+1);
|
||||
size_t rc;
|
||||
int i;
|
||||
|
||||
if (strcmp(filename, "-") == 0) {
|
||||
fp = stdin;
|
||||
} else {
|
||||
fp = efopen(filename, "r");
|
||||
}
|
||||
while ((rc = fread (buf, 1, width, fp)) != 0 && (rc != (size_t)-1)) {
|
||||
if (rc < width) {
|
||||
fprintf(stderr, "%s: warning: short record (%lu bytes)"
|
||||
" encountered\n", cmnd, (unsigned long)rc);
|
||||
}
|
||||
assert (rc <= INT_MAX);
|
||||
if (strip) {
|
||||
for (i = rc - 1; i >= 0 && isspace(buf[i]); i--);
|
||||
buf[i+1] = '\0';
|
||||
} else {
|
||||
buf[rc] = '\0';
|
||||
}
|
||||
puts(buf);
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
free(buf);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
int c;
|
||||
int i;
|
||||
char *p;
|
||||
|
||||
cmnd = argv[0];
|
||||
|
||||
while ((c = getopt(argc, argv, "sw:")) != EOF) {
|
||||
switch (c) {
|
||||
case 's':
|
||||
strip= 1;
|
||||
break;
|
||||
case 'w':
|
||||
width= strtoul(optarg, &p, 0);
|
||||
if (width == 0 || *p) usage();
|
||||
break;
|
||||
case '?':
|
||||
usage();
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
if (optind == argc) {
|
||||
fix2var("-");
|
||||
} else {
|
||||
for (i = optind; i < argc; i++) {
|
||||
fix2var(argv[i]);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue