コード例 #1
0
ファイル: search.c プロジェクト: BrianB86/Bad-Grep
/* Extension of SLSearch, because I don't want to be messy and creating
 * structs to search for words inside of other methods. Keep that here.
 */ 
int SLSearchWord(SortedListPtr head, char* word)
{
	WordPtr target = createWordStruct(word);
	void *castToSearch = (void*)target;
	int result = SLSearch(head,castToSearch);
	target->filestats = NULL;
	destroyWordStruct(target);
	return result;
}
コード例 #2
0
ファイル: indexer.c プロジェクト: rshnn/indexer
/*
	process Token will add the (token, filename) tuple to the TokenList object.
		Duplicate (token, filename) will increment frequency.
		New tuples will create new objects to be added to the nested sorted-lists.

	@param word 	: Token to be added
	@param filename : Filename associated with word
*/
void processToken(char* word, char* filename)
{
	Token 		*searchToken;
	fileRecord 	*searchRecord;
	Token   	*newToken 	= malloc(sizeof(Token));
	fileRecord  *newRecord 	= malloc(sizeof(fileRecord));
	
	if (newRecord == NULL || newToken == NULL) {
		fprintf(stderr, "errno %d\n", errno);
		fprintf(stderr, "mesg: %s\n", strerror(errno));
		exit(-1);
	}

	newToken->word    	 	= word;
	newToken->fileList   	= NULL;
	newRecord->filename 	= copyFileName(filename);
	newRecord->frequency	= 1;

	if( (searchToken = SLSearch(TokenList, newToken, compareRecordName)) != NULL ){

		if( (searchRecord = SLSearch(searchToken->fileList, newRecord, compareRecordName)) != NULL ){
			
			int freq = searchRecord->frequency;
			newRecord->frequency = freq+1;
			SLInsert(searchToken->fileList, newRecord);
			SLRemove(searchToken->fileList, searchRecord);			

		}
		else{
			SLInsert(searchToken->fileList, newRecord);
		}
		destroyTokenStruct(newToken);
	}
	else{
		newToken->fileList = SLCreate(compareRecordStructs, destroyFileRecord);
		SLInsert(newToken->fileList, newRecord);
		SLInsert(TokenList, newToken);
	}

}