void TOPPASResources::load(const QString& file_name) { Param load_param; ParamXMLFile paramFile; paramFile.load(String(file_name), load_param); for (Param::ParamIterator it = load_param.begin(); it != load_param.end(); ++it) { StringList substrings; it.getName().split(':', substrings); if (substrings.size() != 2 || substrings.back() != "url_list" || (it->value).valueType() != DataValue::STRING_LIST) { std::cerr << "Invalid file format." << std::endl; return; } QString key = (substrings[0]).toQString(); StringList url_list = (it->value); QList<TOPPASResource> resource_list; for (StringList::const_iterator it = url_list.begin(); it != url_list.end(); ++it) { resource_list << TOPPASResource(QUrl(it->toQString())); } add(key, resource_list); } }
void Options::parsePluginStringData(const std::string &str, char separator1, char separator2) { StringList valueList; split(str, valueList, separator1); if (valueList.size() > 0) { StringList keyAndValue; for (StringList::iterator itr = valueList.begin(); itr != valueList.end(); ++itr) { split(*itr, keyAndValue, separator2); if (keyAndValue.size() > 1) { setPluginStringData(keyAndValue.front(), keyAndValue.back()); } else if (keyAndValue.size() > 0) { setPluginStringData(keyAndValue.front(), "true"); } keyAndValue.clear(); } } }
void readStringList(StringList& stringList) { uint32_t i = readUInt32BE(); while (i--) { stringList.push_back(std::string()); readString(stringList.back()); } }
String ConsoleUtils::breakString_(const OpenMS::String& input, const Size indentation, const Size max_lines) { // get the line length const Int line_len = ConsoleUtils::readConsoleSize_(); StringList result; Size short_line_len = line_len - indentation; if (short_line_len < 1) { std::cerr << "INTERNAL ERROR: cannot split lines into empty strings! see breakString_()"; return input; } for (Size i = 0; i < input.size(); ) { String line = input.substr(i, result.size() == 0 ? line_len : short_line_len); // first line has full length Size advance_size = line.size(); if (line.hasSubstring("\n")) { advance_size = 0; while (line.hasPrefix("\n")) { line = line.substr(1); ++advance_size; } // advance by # of \n's if (line.hasSubstring("\n")) line = line.prefix('\n'); advance_size += line.size(); // + actual chars } // check if we are using the full length and split a word at the same time // cut a little earlier in that case for nicer looks if (line.size() == (result.size() == 0 ? line_len : short_line_len) && short_line_len > 8 && line.rfind(' ') != String::npos) { String last_word = line.suffix(' '); if (last_word.length() < 4) { // shorten by last word (will move to the next line) line = line.prefix(line.size() - last_word.length()); advance_size -= last_word.size(); // + actual chars } } i += advance_size; String s_intend = (result.size() == 0 ? "" : String(indentation, ' ')); // first line no indentation String r = s_intend + (result.size() == 0 ? line : line.trim()); // intended lines get trimmed result.push_back(r); //(r.fillRight(' ', (UInt) line_len)); } if (result.size() > max_lines) // remove lines from end if we get too many (but leave the last one)... { String last = result.back(); result.erase(result.begin() + max_lines - 2, result.end()); result.push_back((String(indentation, ' ') + String("..."))); //.fillRight(' ',(UInt) line_len)); result.push_back(last); } // remove last " " from last line to prevent automatic linebreak //if (result.size()>0 && result[result.size()-1].hasSuffix(" ")) result[result.size()-1] = result[result.size()-1].substr(0,result[result.size()-1].size()-1); return ListUtils::concatenate(result, "\n"); }
String AbstractFileManager::joinComponents(const StringList& pathComponents) { if (pathComponents.empty()) return ""; StringStream result; for (unsigned int i = 0; i < pathComponents.size() - 1; i++) result << pathComponents[i] << pathSeparator(); result << pathComponents.back(); return result.str(); }
static int parseRelations() { depTable.clear(); confTable.clear(); char assistName[MAX_PATH]; sprintf(assistName, "%s\\%s\\%s", WtoA(getMiscPath(PATH_IPS)), BurnDrvGetTextA(DRV_NAME), "assistant.txt"); //parse ips dat and update the treewidget FILE* fp = fopen(assistName, "rt"); if (!fp) { return 1; } char s[1024]; char* p = NULL; string line; size_t nLen = 0; size_t pos = string::npos; while (!feof(fp)) { if (fgets(s, sizeof s, fp) != NULL) { p = s; // skip UTF-8 sig if (strncmp(p, UTF8_SIGNATURE, strlen(UTF8_SIGNATURE)) == 0) { p += strlen(UTF8_SIGNATURE); } if (p[0] == '#') { continue; // skip comment } getLine(p); line = p; pos = line.find(">"); if (pos != string::npos) { StringList depStrs = split2Str(line, ">"); string parent = *(depStrs.begin()); lowerString(parent); StringList children = stringSplit(depStrs.back(), ","); lowerTrimmed(children); depTable.insert(make_pair(parent, children)); } else { StringList conflicts = stringSplit(line, ","); lowerTrimmed(conflicts); confTable.push_back(conflicts); } } } return 0; }
String sanitizePath(const String &path) { // Standardize slashes to POSIX style String fixedPath = posixPath(path); // Check if path is absolute bool isAbsolute = isAbsolutePath(fixedPath); // Tokenize path StringList pathComponents; std::size_t start = 0; do { std::size_t separator = (std::min)(fixedPath.find('/', start), fixedPath.length()); String token = fixedPath.substr(start, separator - start); if (token.empty() || token == ".") { // a/./b -> a/b and a//b -> a/b } else if (token == "..") { if (pathComponents.empty()) { // ../a -> ../a // /../a -> /a if (!isAbsolute) pathComponents.push_back(token); } else { // ../../a -> ../../a // a/../c -> c if (pathComponents.back() == "..") pathComponents.push_back(token); else pathComponents.pop_back(); } } else { pathComponents.push_back(token); } start = separator + 1; } while (start < path.length()); // Figure out if we need to add a leading slash String prefix; if (strBeginsWith(fixedPath, "/")) prefix = "/"; // Return reassembled path return prefix + joinStrings(pathComponents, "/"); }
void SearchContext::searchProc() { int id = searchID_; HANDLE findHandle = INVALID_HANDLE_VALUE; StringList paths; paths = params_.paths; RegexList filespecRegexes; pcre *matchRegex = NULL; directoriesSearched_ = 0; directoriesSkipped_ = 0; filesSearched_ = 0; filesSkipped_ = 0; filesWithHits_ = 0; linesWithHits_ = 0; hits_ = 0; unsigned int startTick = GetTickCount(); bool filespecUsesRegexes = ((params_.flags & SF_FILESPEC_REGEXES) != 0); bool matchUsesRegexes = ((params_.flags & SF_MATCH_REGEXES) != 0); delete pokeData_; pokeData_ = new PokeData; if(matchUsesRegexes) { const char *error; int erroffset; int flags = 0; if(!(params_.flags & SF_MATCH_CASE_SENSITIVE)) flags |= PCRE_CASELESS; matchRegex = pcre_compile(params_.match.c_str(), flags, &error, &erroffset, NULL); if(!matchRegex) { MessageBox(window_, error, "Match Regex Error", MB_OK); goto cleanup; } } for(StringList::iterator it = params_.filespecs.begin(); it != params_.filespecs.end(); ++it) { std::string regexString = it->c_str(); if(!filespecUsesRegexes) convertWildcard(regexString); int flags = 0; if(!(params_.flags & SF_FILESPEC_CASE_SENSITIVE)) flags |= PCRE_CASELESS; const char *error; int erroffset; pcre *regex = pcre_compile(regexString.c_str(), flags, &error, &erroffset, NULL); if(regex) filespecRegexes.push_back(regex); else { MessageBox(window_, error, "Filespec Regex Error", MB_OK); goto cleanup; } } PostMessage(window_, WM_SEARCHCONTEXT_STATE, 1, 0); while(!paths.empty()) { directoriesSearched_++; stopCheck(); std::string currentSearchPath = paths.back(); std::string currentSearchWildcard = currentSearchPath + "\\*"; paths.pop_back(); WIN32_FIND_DATA wfd; findHandle = FindFirstFile(currentSearchWildcard.c_str(), &wfd); if(findHandle == INVALID_HANDLE_VALUE) continue; while(FindNextFile(findHandle, &wfd)) { stopCheck(); bool isDirectory = ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0); if((wfd.cFileName[0] == '.') || (wfd.cFileName[0] == 0)) { if(isDirectory) directoriesSkipped_++; else filesSkipped_++; continue; } std::string filename = currentSearchPath; filename += "\\"; filename += wfd.cFileName; if(isDirectory) { if(params_.flags & SF_RECURSIVE) paths.push_back(filename); } else { if(searchFile(id, filename, filespecRegexes, matchRegex)) { filesSearched_++; } else { filesSkipped_++; } poke(id, "", HighlightList(), 0, false); } } if(findHandle != INVALID_HANDLE_VALUE) { FindClose(findHandle); } } cleanup: for(RegexList::iterator it = filespecRegexes.begin(); it != filespecRegexes.end(); ++it) { pcre_free(*it); } if(matchRegex) pcre_free(matchRegex); filespecRegexes.clear(); if(!stop_) { unsigned int endTick = GetTickCount(); char buffer[512]; float sec = (endTick - startTick) / 1000.0f; const char *verb = "searched"; if(params_.flags & SF_REPLACE) verb = "updated"; sprintf(buffer, "\n%d hits in %d lines across %d files.\n%d directories scanned, %d files %s, %d files skipped (%3.3f sec)", hits_, linesWithHits_, filesWithHits_, directoriesSearched_, filesSearched_, verb, filesSkipped_, sec); poke(id, buffer, HighlightList(), 0, true); } delete pokeData_; pokeData_ = NULL; PostMessage(window_, WM_SEARCHCONTEXT_STATE, 0, 0); }