SWISH *SwishInit(char *indexfiles) { StringList *sl = NULL; SWISH *sw; int i; sw = SwishNew(); if (!indexfiles || !*indexfiles) { set_progerr(INDEX_FILE_ERROR, sw, "No index file supplied" ); return sw; } /* Parse out index files, and append to indexlist */ sl = parse_line(indexfiles); if ( 0 == sl->n ) { set_progerr(INDEX_FILE_ERROR, sw, "No index file supplied" ); return sw; } for (i = 0; i < sl->n; i++) addindexfile(sw, sl->word[i]); if (sl) freeStringList(sl); if ( !sw->lasterror ) SwishAttach(sw); return sw; }
const char *SwishWordsByLetter(SWISH * sw, char *filename, char c) { IndexFILE *indexf; indexf = sw->indexlist; while (indexf) { if (!strcasecmp(indexf->line, filename)) { return getfilewords(sw, c, indexf); } indexf = indexf->next; } /* Not really an "WORD_NOT_FOUND" error */ set_progerr(WORD_NOT_FOUND, sw, "Invalid index file '%s' passed to SwishWordsByLetter", filename ); return NULL; }
FUZZY_WORD *SwishFuzzy( SWISH *sw, const char *index_name, char *word ) { /* create FUZZY object like SwishFuzzyWord does, but with named index */ IndexFILE *indexf = indexf_by_name( sw, index_name ); if ( !sw ) progerr("SwishFuzzy requires a valid swish handle"); if ( !indexf ) { set_progerr( HEADER_READ_ERROR, sw, "Index file '%s' is not an active index file", index_name ); return( NULL ); } if ( !word ) return NULL; return fuzzy_convert( indexf->header.fuzzy_data, word ); }