home *** CD-ROM | disk | FTP | other *** search
- /* SOURCE: Source file processing for MicroSPELL 1.0
- Spell Checker and Corrector
-
- (C)opyright May 1987 by Daniel Lawrence
- All Rights Reserved
- */
-
- #include <stdio.h>
- #include "dopt.h"
- #include "dstruct.h"
- #include "ddef.h"
-
- WORD *getword() /* get the next word in the input stream */
-
- {
- register char *wp; /* ptr into word */
- register int len; /* length of word */
-
- static WORD rword; /* word to return */
- static char text[NSTRING]; /* text of word */
- /* text MUST immediatly follow rword for now */
-
- nextfile:
- /* first check if we need a new file */
- if (srcfile == NULL) {
- /* are we out of input files? */
- if (++sfnum >= numspell)
- return(NULL);
-
- /* open the next one! */
- srcfile = fopen(splname[sfnum], "r");
- if (srcfile == NULL) {
- printf("%%Can not open input file '%s'\n",
- splname[sfnum]);
- return(NULL);
- }
-
- /* and make sure we are ready for more... */
- iptr = NULL;
- srcline = -1;
- }
-
- /* skip off leading non-alphas */
- if (iptr)
- while (*iptr && !isletter(*iptr))
- iptr++;
-
- nextline:
- /* time to read a new line? */
- if (iptr == NULL || *iptr == 0) {
- if (fgets(iline, MAXLINE - 1, srcfile) == NULL) {
- fclose(srcfile);
- srcfile = NULL;
- goto nextfile;
- }
- iptr = iline;
- srcline++;
- }
-
- /* skip off leading non-alphas */
- while (*iptr && !isletter(*iptr))
- iptr++;
-
-
- if (*iptr == 0)
- goto nextline;
-
- /* and now set the word up */
- wp = &rword.w_text[0];
- rword.w_file = sfnum;
- rword.w_line = srcline;
- rword.w_col = iptr - &iline[0];
- while (*iptr && isletter(*iptr))
- *wp++ = *iptr++;
-
- /* terminate and return it... */
- *wp = 0;
- if (rword.w_text[1] == 0)
- goto nextfile;
-
- return(&rword);
- }
-