|
|
researchv10 Norman
#include <stdio.h>
#define STDIN (char *)0
int col=0;
int lastc=0;
int nprintfiles=0;
int sflag=0;
int tflag=0;
main(argc, argv)
char *argv[];
{
while(argc > 1) {
--argc; argv++;
if(argv[0][0] == '-'){
switch(argv[0][1]){
case 's':
sflag++;
break;
case 't':
tflag++;
break;
}
}else{
printfile(argv[0]);
nprintfiles++;
}
}
if(nprintfiles == 0)
printfile(STDIN);
}
printfile(s)
register char *s;
{
register c;
register FILE *f=s? fopen(s, "r"): stdin;
if(f == NULL){
perror(s);
return;
}
while((c=getc(f)) != EOF)
if(sflag)
sput(c);
else
put(c);
fclose(f);
}
sput(c)
register c;
{
if((c>=' ' && c<='~') || c=='\t' || c=='\n')
putchar(c);
}
put(c)
register c;
{
register inc=c;
if (c=='\n') {
if(lastc == ' ') {
putchar('\\');
putchar('n');
}
} else {
if (col >= (72-4-2)) {
putchar('\\');
putchar('\n');
putchar('\t');
col = 8;
}
if(tflag && c=='\t')
col |= 7;
else if (c=='\b' || c=='\\' || c=='\t') {
putchar('\\');
c = c=='\b'? 'b' : c=='\t'? 't' : '\\';
col++;
} else if ((c&0200) || c<' ' || c=='\177') {
putchar('\\');
putchar(((c>>6)&03)+'0');
putchar(((c>>3)&07)+'0');
c = ( c &07)+'0';
col += 3;
}
col++;
}
putchar(c);
if(c == '\n')
col=0;
lastc=inc;
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.