home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
progm
/
cpgms.zip
/
CENTER.C
< prev
next >
Wrap
C/C++ Source or Header
|
1985-11-17
|
3KB
|
132 lines
/*
This program centers all input lines on a given line length.
*/
#include "stdio.h"
#define EOF 0x1a
#define ERROR 0
#define CPMEOF 0X1A
#define NULL 0
#define EOS 0
#define DeSmet 1
char *documentation[] = {
"center centers input lines.",
" center [flags] [file] [<file] [>file]",
"",
"Flags are single characters preceeded by '-':",
" l<n> use a line length of <n> (default is 80).",
"",
"Input is from the given file or stdin if no file is named.",
"Output is to stdout. To print add >PRN: to your command.",
0 };
int debug = 0;
int lflag = 80;
main(argc, argv)
char *argv[];
{
register char *p;
register int c, i;
int nfile;
char tolower();
FILE fdta;
if (argc == 2 && argv[1][0] == '?' && argv[1][1] == 0) {
help(documentation);
return;
}
nfile = argc-1;
for (i=1; i < argc; ++i) {
p = argv[i];
if (*p == '-') {
++p;
while (c = *p++) {
switch(tolower(c)) {
case '?':
help(documentation);
break;
case 'D':
case 'd':
debug++;
break;
case 'L':
case 'l':
lflag = atoi(p); /* convert to numeric */
while (*p) /* then skip number */
p++;
break;
default:
usage("Unknown flag");
}
}
argv[i] = 0;
--nfile;
}
}
if (nfile == 0)
fdta = stdin;
else
for (i=1; i < argc; ++i)
if (argv[i] != 0) {
if((fdta = fopen(argv[i],"r")) == NULL)
cant(argv[i]);
break;
}
center(fdta, argv[i]);
if (fdta != stdin)
fclose(fdta);
}
/*******************************************************/
usage(s)
char *s;
{
puts("?LIST-E-");
puts(s);
puts("\n");
puts("Usage: center [-flags] [file] [<file] [>file]. \n");
puts(" center ? for help\n");
exit(1);
}
/*******************************************************/
center(fdin,filenm)
FILE fdin;
char *filenm;
{
char *cp, *wp;
int countr, len;
char c, line[256];
while (wp = cp = fgets(line, sizeof(line), fdin)) {
#if DeSmet
while (*wp)
if (*wp++ == '\n')
wp[-1] = ' ';
#endif
len = strlen(trim(line)); /* get non-blank length */
/* output leading blanks */
for (countr=1; countr < (lflag - len)/2; countr++)
putc(' ', stdout);
/* output non-blank chars */
while (c = *cp++)
putc(c, stdout);
putc('\n', stdout); /* end of record */
}
}