#include #include "fcgio.h" #include #include #include //#include using namespace std; std::string getParameter(std::string query, std::string name) { size_t ind = 0; while (ind != std::string::npos && query.size() > name.size() + ind) { if (query.compare(ind, name.size() + 1, name + "=")==0) { size_t tmp = query.find("&",ind); if(tmp==string::npos) { return query.substr(ind + name.size() + 1); } return query.substr(ind + name.size() + 1, tmp - ind - name.size() - 1); } ind = query.find("&", ind); cout << ind << ";"; if (ind != std::string::npos) { ind++; } } return ""; } int main(void) { // Backup the stdio streambufs streambuf * cin_streambuf = cin.rdbuf(); streambuf * cout_streambuf = cout.rdbuf(); streambuf * cerr_streambuf = cerr.rdbuf(); FCGX_Request request; FCGX_Init(); FCGX_InitRequest(&request, 0, 0); while (FCGX_Accept_r(&request) == 0) { fcgi_streambuf cin_fcgi_streambuf(request.in); fcgi_streambuf cout_fcgi_streambuf(request.out); fcgi_streambuf cerr_fcgi_streambuf(request.err); cin.rdbuf(&cin_fcgi_streambuf); cout.rdbuf(&cout_fcgi_streambuf); cerr.rdbuf(&cerr_fcgi_streambuf); cout << "Content-type: text/html\r\n" << "\r\n"; string query = FCGX_GetParam("QUERY_STRING", request.envp); int active = atof(getParameter(query, "actual").c_str()); DIR* dirFile = opendir("."); struct dirent *dirp; int min = -1; std::string nextFile = ""; int count = 0; while ((dirp = readdir(dirFile)) != 0) { std::string fileName = dirp->d_name; if (fileName.find("bot") == 0 && fileName.find(".html") == fileName.size() - 5 && fileName.size() > 8) { int val = atoi(fileName.substr(3, fileName.size() - 8).c_str()); if (val > active) { count++; if (min == -1 || val < min) { min = val; nextFile = fileName; } } } } closedir(dirFile); cout << min << ";" << nextFile << ";" << count; /*ifstream myfile (nextFile.c_str()); if(myfile.is_open()) { cout << myfile.rdbuf(); }*/ // Note: the fcgi_streambuf destructor will auto flush } // restore stdio streambufs cin.rdbuf(cin_streambuf); cout.rdbuf(cout_streambuf); cerr.rdbuf(cerr_streambuf); return 0; }