PathEntry* readfetchconf() // (PathEntry* pe_p) { FILE* fp = fopen("/px/conf/fetch.conf", "r"); if(fp == NULL) { return NULL; } PathEntry* pe = NULL; PathEntry* petail = NULL; char buf[PATH_MAX]; while (readLine(fp, buf)) { char tmp[PATH_MAX]; PathEntry* pet = NULL; if((pet = parseentry(buf, PATHDIR_T, tmp)) == NULL) pet = parseentry(buf, PATHFILE_T, tmp); if(pe == NULL) { pe = pet; petail = pet; } else { if(petail) { petail->next = pet; petail = pet; } } continue; } PX_ASSERT(fclose(fp) == 0); return pe; }
bool TableReader::OpenTable(const char* TableFilename) { list<string> EntryList; string Line; ifstream tablefile(TableFilename); if(!tablefile.is_open()) { err.LineNumber = -1; err.Description = "Table file cannot be opened"; TableErrors.push_back(err); return false; } // Gather text into the list while(!tablefile.eof()) { getline(tablefile, Line); EntryList.push_back(Line); } tablefile.close(); for(list<string>::iterator i = EntryList.begin(); i != EntryList.end(); i++) { LineNumber++; if(i->length() == 0) // Blank line continue; switch((*i)[0]) // first character of the line { case '$': break; case '(': // Bookmark (not implemented) break; case '[': // Script dump (not implemented) break; case '{': // Script insert (not implemented) break; case '@': //insert auto fill char parseautofill(*i); break; case '~': //insert test alignment fill char break; case '/': // End string value break; case '*': // End line value break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': // Normal entry value parseentry(*i); break; default: err.LineNumber = LineNumber; err.Description = "First character of the line is not a recognized table character"; TableErrors.push_back(err); break; } } if(TableErrors.empty()) return true; else return false; }