--- src/db.cpp 2005-03-02 22:12:17.000000000 +0100
+++ src/db.cpp 2006-11-21 19:03:17.000000000 +0100
@@ -71,17 +71,37 @@
if(itr != params.end()) {
if((*itr).length() < (tempCharBuf-1) ) {
const char *value = (*itr).c_str();
- char szBuf[tempCharBuf];
- strcpy(szBuf,value);
- if(verbose) {
- if(string(key) == "password")
- syslog(LOG_DEBUG,"setting DB option: %s to: (hidden)",key);
- else
- syslog(LOG_DEBUG,"setting DB option: %s to: %s",key,szBuf);
-
+ // check if it is numeric
+ bool bNonDigit = false;
+ for( size_t i = 0; i < (*itr).size(); ++i )
+ {
+ if( !isdigit( value[i] ) ) {
+ bNonDigit = true;
+ break;
+ }
+ }
+ if(bNonDigit || (string(key) == "password") ) { // string value
+ char szBuf[tempCharBuf];
+ strcpy(szBuf,value);
+ if(verbose) {
+ if(string(key) == "password")
+ syslog(LOG_DEBUG,"setting DB option: %s to: (hidden)",key);
+ else
+ syslog(LOG_DEBUG,"setting DB option: %s to: %s",key,szBuf);
+
+ }
+ if(dbi_conn_set_option(_con, key, szBuf) != 0)
+ throw runtime_error( getConError("dbi_conn_set_option "+(*itr)) );
+ } else { // numeric value
+ int iVal = -1;
+ stringstream stm;
+ stm << (*itr);
+ stm >> iVal;
+ if(verbose)
+ syslog(LOG_DEBUG,"setting DB option: %s to: %d",key,iVal);
+ if(dbi_conn_set_option_numeric(_con, key, iVal) != 0)
+ throw runtime_error( getConError("dbi_conn_set_option "+(*itr)) );
}
- if(dbi_conn_set_option(_con, key, szBuf) != 0)
- throw runtime_error( getConError("dbi_conn_set_option "+(*itr)) );
}
}
}
@@ -422,3 +442,4 @@
+