diff -u -r cgicc-3.2.2.orig/cgicc-3.2.2/cgicc/CgiEnvironment.cpp cgicc-3.2.2/cgicc/CgiEnvironment.cpp --- cgicc-3.2.2.orig/cgicc-3.2.2/cgicc/CgiEnvironment.cpp 2003-07-13 16:20:36.000000000 +0200 +++ cgicc-3.2.2/cgicc/CgiEnvironment.cpp 2003-09-06 09:58:59.000000000 +0200 @@ -138,7 +138,8 @@ std::string::const_iterator data_iter; for(data_iter = data.begin(); data_iter != data.end(); ++data_iter,++wscount) - if(std::isspace(*data_iter) == 0) + //andy: if(std::isspace(*data_iter) == 0) + if(isspace(*data_iter) == 0) break; // Per RFC 2091, do not unescape the data (thanks to address@hidden) @@ -151,41 +152,45 @@ // Read in all the environment variables void cgicc::CgiEnvironment::readEnvironmentVariables(CgiInput *input) -{ - fServerSoftware = input->getenv("SERVER_SOFTWARE"); - fServerName = input->getenv("SERVER_NAME"); - fGatewayInterface = input->getenv("GATEWAY_INTERFACE"); - fServerProtocol = input->getenv("SERVER_PROTOCOL"); - - std::string port = input->getenv("SERVER_PORT"); - fServerPort = std::atol(port.c_str()); - - fRequestMethod = input->getenv("REQUEST_METHOD"); - fPathInfo = input->getenv("PATH_INFO"); - fPathTranslated = input->getenv("PATH_TRANSLATED"); - fScriptName = input->getenv("SCRIPT_NAME"); - fQueryString = input->getenv("QUERY_STRING"); - fRemoteHost = input->getenv("REMOTE_HOST"); - fRemoteAddr = input->getenv("REMOTE_ADDR"); - fAuthType = input->getenv("AUTH_TYPE"); - fRemoteUser = input->getenv("REMOTE_USER"); - fRemoteIdent = input->getenv("REMOTE_IDENT"); - fContentType = input->getenv("CONTENT_TYPE"); - - std::string length = input->getenv("CONTENT_LENGTH"); - fContentLength = std::atol(length.c_str()); - - fAccept = input->getenv("HTTP_ACCEPT"); - fUserAgent = input->getenv("HTTP_USER_AGENT"); - fRedirectRequest = input->getenv("REDIRECT_REQUEST"); - fRedirectURL = input->getenv("REDIRECT_URL"); - fRedirectStatus = input->getenv("REDIRECT_STATUS"); - fReferrer = input->getenv("HTTP_REFERER"); - fCookie = input->getenv("HTTP_COOKIE"); +{ + //andy: many strings are changed + // getenv -> _getenv + fServerSoftware = input->_getenv("SERVER_SOFTWARE"); + fServerName = input->_getenv("SERVER_NAME"); + fGatewayInterface = input->_getenv("GATEWAY_INTERFACE"); + fServerProtocol = input->_getenv("SERVER_PROTOCOL"); + + std::string port = input->_getenv("SERVER_PORT"); + ///andy: fServerPort = std::atol(port.c_str()); + fServerPort = atol(port.c_str()); + + fRequestMethod = input->_getenv("REQUEST_METHOD"); + fPathInfo = input->_getenv("PATH_INFO"); + fPathTranslated = input->_getenv("PATH_TRANSLATED"); + fScriptName = input->_getenv("SCRIPT_NAME"); + fQueryString = input->_getenv("QUERY_STRING"); + fRemoteHost = input->_getenv("REMOTE_HOST"); + fRemoteAddr = input->_getenv("REMOTE_ADDR"); + fAuthType = input->_getenv("AUTH_TYPE"); + fRemoteUser = input->_getenv("REMOTE_USER"); + fRemoteIdent = input->_getenv("REMOTE_IDENT"); + fContentType = input->_getenv("CONTENT_TYPE"); + + std::string length = input->_getenv("CONTENT_LENGTH"); + //andy: fContentLength = std::atol(length.c_str()); + fContentLength = atol(length.c_str()); + + fAccept = input->_getenv("HTTP_ACCEPT"); + fUserAgent = input->_getenv("HTTP_USER_AGENT"); + fRedirectRequest = input->_getenv("REDIRECT_REQUEST"); + fRedirectURL = input->_getenv("REDIRECT_URL"); + fRedirectStatus = input->_getenv("REDIRECT_STATUS"); + fReferrer = input->_getenv("HTTP_REFERER"); + fCookie = input->_getenv("HTTP_COOKIE"); #ifdef WIN32 // Win32 bug fix by Peter Goedtkindt - std::string https = input->getenv("HTTPS"); + std::string https = input->_getenv("HTTPS"); if(stringsAreEqual(https, "on")) fUsingHTTPS = true; else diff -u -r cgicc-3.2.2.orig/cgicc-3.2.2/cgicc/CgiInput.cpp cgicc-3.2.2/cgicc/CgiInput.cpp --- cgicc-3.2.2.orig/cgicc-3.2.2/cgicc/CgiInput.cpp 2003-07-13 16:20:36.000000000 +0200 +++ cgicc-3.2.2/cgicc/CgiInput.cpp 2003-09-06 10:05:03.000000000 +0200 @@ -43,8 +44,10 @@ } std::string -cgicc::CgiInput::getenv(const char *varName) +cgicc::CgiInput::_getenv(const char *varName) { - char *var = std::getenv(varName); - return (var == 0) ? std::string("") : var; + //andy: char *var = std::getenv(varName); + char *var = getenv(varName); + //andy: return (var == 0) ? std::string("") : var; + return (var == 0) ? std::string("") : std::string(var); } diff -u -r cgicc-3.2.2.orig/cgicc-3.2.2/cgicc/CgiInput.h cgicc-3.2.2/cgicc/CgiInput.h --- cgicc-3.2.2.orig/cgicc-3.2.2/cgicc/CgiInput.h 2003-07-13 16:20:36.000000000 +0200 +++ cgicc-3.2.2/cgicc/CgiInput.h 2003-09-06 09:59:15.000000000 +0200 @@ -153,7 +153,8 @@ * \return The value of the requested environment variable, or an empty * string if not found. */ - virtual std::string getenv(const char *varName); + //andy: virtual std::string getenv(const char *varName); + virtual std::string _getenv(const char *varName); //@} }; diff -u -r cgicc-3.2.2.orig/cgicc-3.2.2/cgicc/CgiUtils.cpp cgicc-3.2.2/cgicc/CgiUtils.cpp --- cgicc-3.2.2.orig/cgicc-3.2.2/cgicc/CgiUtils.cpp 2003-07-13 16:20:36.000000000 +0200 +++ cgicc-3.2.2/cgicc/CgiUtils.cpp 2003-09-05 11:23:14.000000000 +0200 @@ -42,7 +42,8 @@ std::string::const_iterator l2 = s2.end(); while(p1 != l1 && p2 != l2) { - if(std::toupper(*(p1++)) != std::toupper(*(p2++))) + //andy: if(std::toupper(*(p1++)) != std::toupper(*(p2++))) + if(toupper(*(p1++)) != toupper(*(p2++))) return false; } @@ -62,7 +63,8 @@ std::string::const_iterator l2 = good ? (s2.begin() + n) : s2.end(); while(p1 != l1 && p2 != l2) { - if(std::toupper(*(p1++)) != std::toupper(*(p2++))) + //andy: if(std::toupper(*(p1++)) != std::toupper(*(p2++))) + if(toupper(*(p1++)) != toupper(*(p2++))) return false; } diff -u -r cgicc-3.2.2.orig/cgicc-3.2.2/cgicc/FormEntry.cpp cgicc-3.2.2/cgicc/FormEntry.cpp --- cgicc-3.2.2.orig/cgicc-3.2.2/cgicc/FormEntry.cpp 2003-07-13 16:20:36.000000000 +0200 +++ cgicc-3.2.2/cgicc/FormEntry.cpp 2003-09-05 11:21:59.000000000 +0200 @@ -43,7 +43,8 @@ cgicc::FormEntry::getIntegerValue(long min, long max) const { - long value = std::atol(fValue.c_str()); + //andy: long value = std::atol(fValue.c_str()); + long value = atol(fValue.c_str()); if(value > max) value = max; @@ -58,7 +59,8 @@ long max, bool& bounded) const { - long value = std::atol(fValue.c_str()); + //andy: long value = std::atol(fValue.c_str()); + long value = atol(fValue.c_str()); bounded = false; @@ -78,7 +80,8 @@ cgicc::FormEntry::getDoubleValue(double min, double max) const { - double value = std::atof(fValue.c_str()); + //andy: double value = std::atof(fValue.c_str()); + double value = atof(fValue.c_str()); if(value > max) value = max; else if(value < min) @@ -92,7 +95,8 @@ double max, bool& bounded) const { - double value = std::atof(fValue.c_str()); + //andy: double value = std::atof(fValue.c_str()); + double value = atof(fValue.c_str()); bounded = false; diff -u -r cgicc-3.2.2.orig/cgicc-3.2.2/example/example.cpp cgicc-3.2.2/example/example.cpp --- cgicc-3.2.2.orig/cgicc-3.2.2/example/example.cpp 2002-12-04 18:04:08.000000000 +0100 +++ cgicc-3.2.2/example/example.cpp 2003-09-05 12:35:12.000000000 +0200 @@ -46,9 +46,12 @@ cout << body() << html(); } - catch(const exception& e) { - // handle error condition - } + //catch(const exception& e) { + // handle error condition + //} + catch(...) { + // handle error condition + } return 0; } Only in cgicc-3.2.2/win: Debug diff -u -r cgicc-3.2.2.orig/cgicc-3.2.2/win/cgicc.dsp cgicc-3.2.2/win/cgicc.dsp --- cgicc-3.2.2.orig/cgicc-3.2.2/win/cgicc.dsp 2002-03-17 22:12:58.000000000 +0100 +++ cgicc-3.2.2/win/cgicc.dsp 2003-09-06 09:47:47.000000000 +0200 @@ -69,7 +69,7 @@ # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CGICC_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CGICC_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CGICC_EXPORTS" /FR /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" Only in cgicc-3.2.2/win: cgicc.ncb Only in cgicc-3.2.2/win: cgicc.opt Only in cgicc-3.2.2/win: cgicc.plg Only in cgicc-3.2.2/win: example.dsw Only in cgicc-3.2.2/win: example.ncb Only in cgicc-3.2.2/win: example.opt Only in cgicc-3.2.2/win: example.plg Only in cgicc-3.2.2/win: example___Win32_Debug Only in cgicc-3.2.2/win: test___Win32_Debug