Category : C Source Code
Archive   : MSPELL1_.ZIP
Filename : MDICT.C

 
Output of file : MDICT.C contained in archive : MSPELL1_.ZIP
/* MDICT: Main Dictionary processing for MicroSPELL 1.0
Spell Checker and Corrector

(C)opyright May 1987 by Daniel Lawrence
All Rights Reserved
*/

#include
#include "dopt.h"
#include "dstruct.h"
#include "ddef.h"
#include "dsfx.h"

#if CMPRS
/* compression function globals */
char lastword[NSTRING]; /* last word from dictionary */
#endif

mopen() /* open the main dicionary */

{
/* if it is already open, close it down */
if (mdptr != NULL)
fclose(mdptr);

/* open op the main dictionary... */
if ((mdptr = popen(mdfile)) == NULL) {
printf("%%Can not find main dictionary\n");
return(FALSE);
}

return(TRUE);
}

mclose() /* close the dictionary down */

{
/* if it is already open, close it down */
if (mdptr != NULL)
fclose(mdptr);
mdptr = NULL;
}

char *nxtmword() /* get the next word from the main dictionary */

{
static char word[NSTRING]; /* word to return */
#if CMPRS
char *gcword();
#endif

/* is it already closed? */
if (mdptr == NULL)
return(hivalue);

/* get the next word */
#if CMPRS
if (gcword(word) == NULL) {
#else
if (fgets(word, NSTRING - 1, mdptr) == NULL) {
#endif
/* no more left!!!! close out */
fclose(mdptr);
mdptr = NULL;
return(hivalue);
}

/* all's well, dump the return and return the word */
#if CMPRS == 0
word[strlen(word) - 1] = 0;
#endif
return(word);
}

#if CMPRS
char *gcword(word) /* get the next compressed word */

char *word; /* buffer to place word in */

{
register int c; /* current character from file */
register char *wptr; /* ptr into word to return */
register char *lptr; /* pointer int last word */
int same; /* # of common characters from last word */
int suffix; /* index of common suffix */
int fgetc();

/* first grab the #same count */
same = fgetc(mdptr);
if (same == EOF) /* at EOF... return NULL */
return(NULL);
same -= 'A';

/* and copy things across */
wptr = word;
lptr = lastword;
while (same-- > 0)
*wptr++ = *lptr++;

c = fgetc(mdptr);
#if EBCDIC
/* opposite high bit flags */
while (c > 128) {
#else
while (c < 128) {
#endif
*wptr++ = c;
c = fgetc(mdptr);
}

*wptr = 0;

/* calculate the suffix to add... */
suffix = c & 127;
if (suffix != NSUFFIX)
strcpy(wptr, sfx[suffix]);

/* save the current uncompressed word */
strcpy(lastword, word);

/* and return the word */
return(word);
}
#endif


  3 Responses to “Category : C Source Code
Archive   : MSPELL1_.ZIP
Filename : MDICT.C

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/