mathas_a@maths.su.oz.au (andrew) (05/27/90)
To compile it use the command: cc -Oo prespell prespell.c where you have dumped the code below into a file called "prespell.c". To use it type prespell < filename.tex | spell [If you're using csh, you can alias this nicely as: alias check 'prespell < \!*.tex | spell' and then just type "check filename" ...] Andrew - who needs silly quotes anyway ################################################################# #include <stdio.h> #define WORDLENGTH 100 #define NOTFOUND -1 int instr(char s[], char t[]); int readword(void); main() { int ch; while ((ch = getchar()) != EOF) { if (ch == '\\') ch = readword(); putchar(ch); } return 0; } int readword(void) { int ch,i; char word[WORDLENGTH]; for (i = 0; (word[i] = ch = getchar()) != EOF; i++) { if (ch == ' ' || ch == '\t') return ch = ' '; else if (ch == '\n') return ch; else if (ch == '{') { word[i+1] = '\0'; if (instr("new", word) != NOTFOUND || instr("begin", word) != NOTFOUND || instr("end", word) != NOTFOUND || instr("def", word) != NOTFOUND || instr("label", word) != NOTFOUND || instr("ref", word) != NOTFOUND || instr("cite", word) != NOTFOUND || instr("include", word) != NOTFOUND) { while ((ch = getchar()) != EOF && ch != '}') ; return ch = ' '; } } } return ch = NULL; } int instr(char s[], char t[]) { int spos, tpos; if (s[0] == '\0') return 0; for (tpos = 0; t[tpos] != '\0'; tpos++) { for (; s[0] != t[tpos] && t[tpos] != '\0'; tpos++) ; if (t[tpos] == '\0') return NOTFOUND; for (spos = 0; s[spos] == t[spos+tpos] && s[spos] != '\0' && t[spos+tpos] != '\0'; spos++) ; if (s[spos] == '\0') return tpos; } return NOTFOUND; }
mathas_a@maths.su.oz.au (andrew) (05/27/90)
So yes, the code can be improved and tidied up, but I'll Message-ID: <1990May27.032527.22410@metro.ucc.su.OZ.AU> Date: 27 May 90 03:25:27 GMT Sender: news@metro.ucc.su.OZ.AU (news) Organization: Uni Computing Service, Uni of Sydney, Australia Lines: 87 To compile it use the command: cc -Oo prespell prespell.c where you have dumped the code below into a file called "prespell.c". To use it type prespell < filename.tex | spell [If you're using csh, you can alias this nicely as: alias check 'prespell < \!*.tex | spell' and then just type "check filename" ...] Andrew - who needs silly quotes anyway ################################################################# #include <stdio.h> #define WORDLENGTH 100 #define NOTFOUND -1 int instr(char s[], char t[]); int readword(void); main() { int ch; while ((ch = getchar()) != EOF) { if (ch == '\\') ch = readword(); putchar(ch); } return 0; } int readword(void) { int ch,i; char word[WORDLENGTH]; for (i = 0; (word[i] = ch = getchar()) != EOF; i++) { if (ch == ' ' || ch == '\t') return ch = ' '; else if (ch == '\n') return ch; else if (ch == '{') { word[i+1] = '\0'; if (instr("new", word) != NOTFOUND || instr("begin", word) != NOTFOUND || instr("end", word) != NOTFOUND || instr("def", word) != NOTFOUND || instr("label", word) != NOTFOUND || instr("ref", word) != NOTFOUND || instr("cite", word) != NOTFOUND || instr("include", word) != NOTFOUND) { while ((ch = getchar()) != EOF && ch != '}') ; return ch = ' '; } } } return ch = NULL; } int instr(char s[], char t[]) { int spos, tpos; if (s[0] == '\0') return 0; for (tpos = 0; t[tpos] != '\0'; tpos++) { for (; s[0] != t[tpos] && t[tpos] != '\0'; tpos++) ; if (t[tpos] == '\0') return NOTFOUND; for (spos = 0; s[spos] == t[spos+tpos] && s[spos] != '\0' && t[spos+tpos] != '\0'; spos++) ; if (s[spos] == '\0') return tpos; } return NOTFOUND; }