file format programs
hart at cp1.UUCP
hart at cp1.UUCP
Sun Aug 19 14:38:15 AEST 1984
echo fix.c
sed 's/^ //' > fix.c << 'Rod Hart was here'
#include <stdio.h>
#define LINEWIDTH 80
/*
* fix - Convert files to fix format.
*
* Fix format files use a single character to represent four bit
* nibbles. The characters start at character 0 (30H) and extend
* through the character ? (3FH). The first line contains the
* name of the original file (excluding path or disk specification)
* preceeded by a minus sign. The rest of the file contains 80
* characters per line.
*/
main(argc,argv)
int argc;
char **argv;
{
int c,column;
FILE *fd;
if (argc != 2) {
fprintf(stderr,"usage: fix file\n");
exit(-1);
}
argv++; /* skip command name */
if ((fd = fopen(*argv,"r")) == NULL) {
fprintf(stderr,"cannot open %s\n",*argv);
exit(-1);
}
printf("-%s\n",*argv); /* write filename line */
column=0;
for (c=fgetc(fd); c != EOF; c=fgetc(fd)) {
putchar(((c>>4) & 0xF)+'0');
putchar((c & 0xF)+'0');
column += 2;
if (column == LINEWIDTH) {
putchar('\n');
column=0;
}
}
}
Rod Hart was here
echo unfix.c
sed 's/^ //' > unfix.c << 'Rod Hart was here'
#include <stdio.h>
#define LINEWIDTH 80
/*
* unfix - Convert fix format files back to original form.
*
* Fix format files use a single character to represent four bit
* nibbles. The characters start at character 0 (30H) and extend
* through the character ? (3FH). The first line contains the
* name of the original file (excluding path or disk specification)
* preceeded by a minus sign. The rest of the file contains 80
* characters per line.
*/
main(argc,argv)
int argc;
char **argv;
{
int c,cout;
char filename[128];
char line[LINEWIDTH+1];
char *cp;
FILE *fd,*ofd;
if (argc != 2) {
fprintf(stderr,"usage: fix file\n");
exit(-1);
}
argv++; /* skip command name */
if ((fd = fopen(*argv,"r")) == NULL) {
fprintf(stderr,"cannot open %s\n",*argv);
exit(-1);
}
fgets(filename,128,fd); /* read filename line */
for (cp=filename; *cp != '\n' && cp < filename+128; cp++) ;
if (*cp == '\n') /* remove newline at end of line */
*cp = '\0';
if (filename[0] != '-') {
fprintf(stderr,"file is not in fix format\n");
exit(-1);
}
if ((ofd = fopen(&filename[1],"w")) == NULL) {
fprintf(stderr,"cannot open output file %s\n",&filename[1]);
exit(-1);
}
for (c=fgetc(fd); c != EOF; c=fgetc(fd)) {
if (c == '\n')
continue;
cout = (c-'0') << 4;
c = fgetc(fd);
cout |= c-'0';
putc(cout,ofd);
}
}
Rod Hart was here
--
======================================================================
signed: Rod Hart (wa3mez)
Chesapeake & Potomac Tel. Co.
Bell Atlantic Inc.
Silver Spring, Md.
gamma!cp1!hart - umcp-cs!cp1!hart - aplvax!cp1!hart
======================================================================
More information about the Comp.sources.unix
mailing list