/*********************************************************************** this function will create a map that will be used to prevent the insertion of common words ***********************************************************************/ void container::create_map() { ifstream file; string user_input; file.open("commonWords.txt", ios_base::in); //start reading if file opened successfully if(file.is_open()) { while(!file.eof()) { getline(file, user_input, '\n'); //prevents from re-reading the last line of the file if(file.eof()) { break; } user_input = trim_spaces_of_string(user_input); user_input = convert_to_upper(user_input); //insert into map map[user_input]++; } file.close(); } }
/*********************************************************************** //This function will parse a line for individual words, //Also, check if word is 1 of top 100 most common and ignore, //Else, insert into trie. ***********************************************************************/ void container::process_line(string line, int page_number, int line_number) { int word_count = 0; string token; istringstream iss(line); //parse line for individual words while(getline(iss, token, ' ')) { //token contains individual word. //store TOKEN into vector, will be used to reference nearby //words. vector_insertPattern(token,page_number,line_number); token = convert_to_upper(token); token = remove_nonAlphaNumberic(token); token = trim_spaces_of_string(token); //determine if it is a common word. //IF NOT COMMON, INSERT INTO TRIE HERE if(map[token] != 1 && !token.empty()) { //will split word into suffixes and insert each suffix into trie suffixTree.wordSplit(token,page_number,line_number,word_count); prefixTree.insert_pattern(token,page_number,line_number,word_count,INITIAL_INDEX); } word_count++; } }
void bi_add_bl_build_sig(char *bld_sig) { int pos; char *value; char *ptr; if (!bld_sig || (bl_build_sig_count >= MAX_BL_BUILD_SIG)) { return; } value = (char *)memchr((void *)bld_sig, '=', MAX_BLD_SIG_ITEM); if (!value) { return; } pos = value - bld_sig; ptr = bl_build_sigs[bl_build_sig_count].item; strlcpy(ptr, bld_sig, pos+1); convert_to_upper(ptr); ptr = bl_build_sigs[bl_build_sig_count].value; strlcpy(ptr, value+1, MAX_BLD_SIG_VALUE); bl_build_sig_count++; return; }
void parse_provides (char * id, char * version, char * package, int line) { char * p; char real_version[128]; char internal_id[128]; mangle_version (real_version, sizeof(real_version), version, package); strcpy (internal_id, "provides_"); strcat (internal_id, convert_to_upper (id)); p = get_variable_package (internal_id); if (p) { char * q = get_variable_package (internal_id); if (strcmp (package, q)) { fatal_exit ("Conflicting packages, package %s already" " provides '%s' with version '%s'\n", package, id, get_variable (internal_id)); } return; } log_info (T_EXEC, "package %s provides %s version %s\n", package, id, version); var_add_weak_declaration (package, internal_id, real_version, version, TYPE_NUMERIC, package, line, T_EXEC); mark_var_generated (internal_id); mark_var_provide (internal_id); package_provider_added = 1; }
char * parse_get_variable_comment (char * name, char * package, int line) { char * content; content = get_variable_comment (convert_to_upper (name)); if (!content) { fatal_exit ("unknown variable '%s' in %s, line %d\n", name, package, line); } return content; }
void parse_depends (char * id, char * version, char * package, int regexp, char * file, int line) { char * p; char internal_id[128]; char real_version[128]; if (!regexp) mangle_version (real_version, sizeof(real_version), version, ""); else strcpy (real_version, version); if (!final_pass) { return; } strcpy (internal_id, "provides_"); strcat (internal_id, convert_to_upper (id)); p = get_variable (internal_id); if (p) { int err=0; if (!regexp) { err = strncmp (p, real_version, strlen(real_version)); } else { err = regexp_chkvar (internal_id, p, 0, real_version); } if (err) { fatal_exit ("(%s:%d) Version mismatch, package '%s' depends on " "'%s', version %s, but '%s' has version %s\n", file, line, package, id, real_version, id, p); } } else { fatal_exit ("(%s:%d) Package missing, %s depends on %s, " "which is either not present or not enabled\n", file, line, package, id); } }