#include <string.h>
#ifndef NORCSID
-static char *RcsId = "$Id$";
+static char* RcsId = "$Id$";
#endif
-#define MAXBUF 256
+#define MAXBUF 256
#define MAXTAB 10000
-#define COMCOM '-'
-#define FILECOM '%'
+#define COMCOM '-'
+#define FILECOM '%'
-int InputForm = 'c'; /* default input format (and, currently, only one) */
+int InputForm = 'c'; /* default input format (and, currently, only one) */
char OutputForm[MAXBUF] = "%s,\n";
- /* format for spitting out a string */
-char *Table[MAXTAB];
-char *ProgCall; /* callname of this program */
-int TabSize = 128; /* default size of generated table */
-char *InitialValue; /* initial value of all table entries */
-
-void option(char *);
-void option_F(char *);
-void InitTable(char *);
+/* format for spitting out a string */
+char* Table[MAXTAB];
+char* ProgCall; /* callname of this program */
+int TabSize = 128; /* default size of generated table */
+char* InitialValue; /* initial value of all table entries */
+
+void option(char*);
+void option_F(char*);
+void InitTable(char*);
void PrintTable(void);
-int process(char *, int);
-int c_proc(char *, char *);
-int setval(int, char *);
-int quoted(char **);
-void DoFile(char *);
-
-int
-main(int argc, char *argv[])
+int process(char*, int);
+int c_proc(char*, char*);
+int setval(int, char*);
+int quoted(char**);
+void DoFile(char*);
+
+int main(int argc, char* argv[])
{
ProgCall = *argv++;
argc--;
- while (argc-- > 0) {
- if (**argv == COMCOM) {
+ while (argc-- > 0)
+ {
+ if (**argv == COMCOM)
+ {
option(*argv++);
}
- else {
- if (! process(*argv++, InputForm)) {
+ else
+ {
+ if (!process(*argv++, InputForm))
+ {
exit(1);
}
}
/*NOTREACHED*/
}
-char *
-Salloc(char *s)
+char* Salloc(char* s)
{
- char *ns = strdup(s);
+ char* ns = strdup(s);
- if (!ns) {
+ if (!ns)
+ {
fprintf(stderr, "%s: out of memory\n", ProgCall);
exit(1);
}
return ns;
}
-void
-option(char *str)
+void option(char* str)
{
/* note that *str indicates the source of the option:
either COMCOM (from command line) or FILECOM (from a file).
*/
- switch (*++str) {
-
- case ' ': /* command */
- case '\t':
- case '\0':
- break;
- case 'I': /* for future extension */
- InputForm = *++str;
- break;
- case 'f': /* input from file ... */
- if (*++str == '\0') {
- fprintf(stderr, "%s: -f: name expected\n", ProgCall);
- exit(1);
- }
- DoFile(str);
- break;
- case 'F': /* new output format string */
- option_F(++str);
- break;
- case 'T': /* insert text literally */
- printf("%s\n", ++str);
- break;
- case 'p': /* print table */
- PrintTable();
- break;
- case 'C': /* clear table */
- InitTable((char *)0);
- break;
- case 'i': /* initialize table with given value */
- if (*++str == '\0') {
- InitTable((char *)0);
- }
- else InitTable(str);
- break;
- case 'S':
+ switch (*++str)
{
- int i = atoi(++str);
- if (i <= 0 || i > MAXTAB) {
- fprintf(stderr, "%s: size would exceed maximum\n",
- ProgCall);
- }
- else {
- TabSize = i;
+ case ' ': /* command */
+ case '\t':
+ case '\0':
+ break;
+ case 'I': /* for future extension */
+ InputForm = *++str;
+ break;
+ case 'f': /* input from file ... */
+ if (*++str == '\0')
+ {
+ fprintf(stderr, "%s: -f: name expected\n", ProgCall);
+ exit(1);
+ }
+ DoFile(str);
+ break;
+ case 'F': /* new output format string */
+ option_F(++str);
+ break;
+ case 'T': /* insert text literally */
+ printf("%s\n", ++str);
+ break;
+ case 'p': /* print table */
+ PrintTable();
+ break;
+ case 'C': /* clear table */
+ InitTable((char*)0);
+ break;
+ case 'i': /* initialize table with given value */
+ if (*++str == '\0')
+ {
+ InitTable((char*)0);
+ }
+ else
+ InitTable(str);
+ break;
+ case 'S':
+ {
+ int i = atoi(++str);
+
+ if (i <= 0 || i > MAXTAB)
+ {
+ fprintf(stderr, "%s: size would exceed maximum\n",
+ ProgCall);
+ }
+ else
+ {
+ TabSize = i;
+ }
+ break;
}
- break;
- }
- default:
- fprintf(stderr, "%s: bad option -%s\n", ProgCall, str);
+ default:
+ fprintf(stderr, "%s: bad option -%s\n", ProgCall, str);
}
}
-void
-option_F(char *form)
+void option_F(char* form)
{
int len;
- char *cp;
+ char* cp;
/*
* The format string must have one '%s' and no other '%'.
exit(1);
}
-void
-InitTable(char *ival)
+void InitTable(char* ival)
{
int i;
- for (i = 0; i < TabSize; i++) {
+ for (i = 0; i < TabSize; i++)
+ {
Table[i] = 0;
}
InitialValue = 0;
- if (ival) {
+ if (ival)
+ {
InitialValue = Salloc(ival);
}
}
-void
-PrintTable(void)
+void PrintTable(void)
{
int i;
- for (i = 0; i < TabSize; i++) {
- if (Table[i]) {
+ for (i = 0; i < TabSize; i++)
+ {
+ if (Table[i])
+ {
printf(OutputForm, Table[i]);
}
- else if (InitialValue) {
+ else if (InitialValue)
+ {
printf(OutputForm, InitialValue);
}
- else {
+ else
+ {
printf(OutputForm, "0");
}
}
}
-int
-process(char *str, int format)
+int process(char* str, int format)
{
- char *cstr = str;
- char *Name = cstr; /* overwrite original string! */
+ char* cstr = str;
+ char* Name = cstr; /* overwrite original string! */
/* strip of the entry name
*/
- while (*str && *str != ':') {
- if (*str == '\\') {
+ while (*str && *str != ':')
+ {
+ if (*str == '\\')
+ {
++str;
}
*cstr++ = *str++;
}
- if (*str != ':') {
+ if (*str != ':')
+ {
fprintf(stderr, "%s: bad specification: \"%s\", ignored\n",
- ProgCall, Name);
+ ProgCall, Name);
return 0;
}
*cstr = '\0';
str++;
- switch (format) {
+ switch (format)
+ {
- case 'c':
- return c_proc(str, Name);
- default:
- fprintf(stderr, "%s: bad input format\n", ProgCall);
+ case 'c':
+ return c_proc(str, Name);
+ default:
+ fprintf(stderr, "%s: bad input format\n", ProgCall);
}
return 0;
}
-int
-c_proc(char *str, char *Name)
+int c_proc(char* str, char* Name)
{
int ch, ch2;
- char *name = Salloc(Name);
+ char* name = Salloc(Name);
- while (*str) {
- if (*str == '\\') {
+ while (*str)
+ {
+ if (*str == '\\')
+ {
ch = quoted(&str);
}
- else {
+ else
+ {
ch = *str++ & 0377;
}
- if (*str == '-') {
- if (*++str == '\\') {
+ if (*str == '-')
+ {
+ if (*++str == '\\')
+ {
ch2 = quoted(&str);
}
- else {
+ else
+ {
ch2 = (*str++ & 0377);
- if (!ch2) str--;
+ if (!ch2)
+ str--;
}
- if (ch > ch2) {
+ if (ch > ch2)
+ {
fprintf(stderr, "%s: bad range\n", ProgCall);
return 0;
}
- while (ch <= ch2) {
- if (! setval(ch, name)) return 0;
+ while (ch <= ch2)
+ {
+ if (!setval(ch, name))
+ return 0;
ch++;
}
}
- else {
- if (! setval(ch, name)) return 0;
+ else
+ {
+ if (!setval(ch, name))
+ return 0;
}
}
return 1;
}
-int
-setval(int ch, char *nm)
+int setval(int ch, char* nm)
{
- char **p = &Table[ch];
+ char** p = &Table[ch];
- if (ch < 0 || ch >= TabSize) {
+ if (ch < 0 || ch >= TabSize)
+ {
fprintf(stderr, "Illegal index: %d\n", ch);
return 0;
}
- if (*(p = &Table[ch])) {
+ if (*(p = &Table[ch]))
+ {
fprintf(stderr, "Warning: redefinition of index %d\n", ch);
}
*p = nm;
return 1;
}
-int
-quoted(char **pstr)
+int quoted(char** pstr)
{
int ch;
int i;
- char *str = *pstr;
+ char* str = *pstr;
- if ((*++str >= '0') && (*str <= '9')) {
+ if ((*++str >= '0') && (*str <= '9'))
+ {
ch = 0;
- for (i = 0; i < 3; i++) {
+ for (i = 0; i < 3; i++)
+ {
ch = 8 * ch + (*str - '0');
if (*++str < '0' || *str > '9')
break;
}
}
- else {
- switch (*str++) {
- case 'n':
- ch = '\n';
- break;
- case 't':
- ch = '\t';
- break;
- case 'b':
- ch = '\b';
- break;
- case 'r':
- ch = '\r';
- break;
- case 'f':
- ch = '\f';
- break;
- case 'v':
- ch = 013;
- break;
- default :
- ch = *(str - 1);
- break;
+ else
+ {
+ switch (*str++)
+ {
+ case 'n':
+ ch = '\n';
+ break;
+ case 't':
+ ch = '\t';
+ break;
+ case 'b':
+ ch = '\b';
+ break;
+ case 'r':
+ ch = '\r';
+ break;
+ case 'f':
+ ch = '\f';
+ break;
+ case 'v':
+ ch = 013;
+ break;
+ default:
+ ch = *(str - 1);
+ break;
}
}
*pstr = str;
return ch & 0377;
}
-char *
-getln(char *s, int n, FILE *fp)
+char* getln(char* s, int n, FILE* fp)
{
int c = getc(fp);
- char *str = s;
+ char* str = s;
- while (n--) {
- if (c == EOF) {
+ while (n--)
+ {
+ if (c == EOF)
+ {
return NULL;
}
- else
- if (c == '\n') {
+ else if (c == '\n')
+ {
*str++ = '\0';
return s;
}
#define BUFSIZE 1024
-void
-DoFile(char *name)
+void DoFile(char* name)
{
char text[BUFSIZE];
- FILE *fp;
+ FILE* fp;
- if ((fp = fopen(name, "r")) == NULL) {
+ if ((fp = fopen(name, "r")) == NULL)
+ {
fprintf(stderr, "%s: cannot read file %s\n", ProgCall, name);
exit(1);
}
- while (getln(text, BUFSIZE, fp) != NULL) {
- if (text[0] == FILECOM) {
+ while (getln(text, BUFSIZE, fp) != NULL)
+ {
+ if (text[0] == FILECOM)
+ {
option(text);
}
- else {
- if (! process(text, InputForm)) {
+ else
+ {
+ if (!process(text, InputForm))
+ {
exit(1);
}
}