//////////////////////////////////////////////////////////////////////////////// // Scorched3D (c) 2000-2003 // // This file is part of Scorched3D. // // Scorched3D is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // Scorched3D is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Scorched3D; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //////////////////////////////////////////////////////////////////////////////// #include #include #include #include FileLines::FileLines() { } FileLines::~FileLines() { } const char *FileLines::getRandomLine() { if (fileLines_.empty()) return ""; const char *result = 0; int count = (int) fileLines_.size() - 1;; int i = int((float(rand()) / float(RAND_MAX)) * count); result = fileLines_[i].c_str(); return result; } bool FileLines::readFile(char *filename) { FILE *in = fopen(filename, "r"); if (in) { char buffer[10048]; while (fgets(buffer, 10048, in)) { char *wincr = strchr(buffer,'\r'); if (wincr) { *wincr = '\n'; *(wincr + 1) = '\0'; } char *nl = strchr(buffer, '\n'); if (nl) *nl = '\0'; fileLines_.push_back(buffer); } fclose(in); } else { return false; } return true; } bool FileLines::writeFile(char *filename) { FILE *out = fopen(filename, "w"); if (!out) return false; std::vector::iterator itor; for (itor = fileLines_.begin(); itor != fileLines_.end(); itor++) { fprintf(out, "%s\n", (*itor).c_str()); } fclose(out); return true; } void FileLines::addLine(const char *text) { fileLines_.push_back(text); } void FileLines::getAsOneLine(std::string &output) { std::vector::iterator itor; for (itor = fileLines_.begin(); itor != fileLines_.end(); itor++) { output += (*itor); output += "\n"; } }