|
@@ -36,120 +36,6 @@
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
|
-/*!
|
|
|
- * \brief Convert a str to a db value, does not copy strings
|
|
|
- *
|
|
|
- * Convert a str to a db value, does not copy strings.
|
|
|
- * \param _t destination value type
|
|
|
- * \param _v destination value
|
|
|
- * \param _s source string
|
|
|
- * \param _l string length
|
|
|
- * \return 0 on success, negative on error
|
|
|
- */
|
|
|
-int db_mysql_str2val(const db_type_t _t, db_val_t* _v, const char* _s, const int _l)
|
|
|
-{
|
|
|
- static str dummy_string = {"", 0};
|
|
|
-
|
|
|
- if (!_v) {
|
|
|
- LM_ERR("invalid parameter value\n");
|
|
|
- return -1;
|
|
|
- }
|
|
|
- /* A NULL string is a NULL value in mysql, otherwise its an empty value */
|
|
|
- if (!_s) {
|
|
|
- memset(_v, 0, sizeof(db_val_t));
|
|
|
- /* Initialize the string pointers to a dummy empty
|
|
|
- * string so that we do not crash when the NULL flag
|
|
|
- * is set but the module does not check it properly
|
|
|
- */
|
|
|
- VAL_STRING(_v) = dummy_string.s;
|
|
|
- VAL_STR(_v) = dummy_string;
|
|
|
- VAL_BLOB(_v) = dummy_string;
|
|
|
- VAL_TYPE(_v) = _t;
|
|
|
- VAL_NULL(_v) = 1;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- VAL_NULL(_v) = 0;
|
|
|
-
|
|
|
- switch(_t) {
|
|
|
- case DB_INT:
|
|
|
- LM_DBG("converting INT [%s]\n", _s);
|
|
|
- if (db_str2int(_s, &VAL_INT(_v)) < 0) {
|
|
|
- LM_ERR("error while converting integer value from string\n");
|
|
|
- return -2;
|
|
|
- } else {
|
|
|
- VAL_TYPE(_v) = DB_INT;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case DB_BIGINT:
|
|
|
- LM_DBG("converting BIGINT [%s]\n", _s);
|
|
|
- if (db_str2longlong(_s, &VAL_BIGINT(_v)) < 0) {
|
|
|
- LM_ERR("error while converting big integer value from string\n");
|
|
|
- return -3;
|
|
|
- } else {
|
|
|
- VAL_TYPE(_v) = DB_BIGINT;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case DB_BITMAP:
|
|
|
- LM_DBG("converting BITMAP [%s]\n", _s);
|
|
|
- if (db_str2int(_s, &VAL_INT(_v)) < 0) {
|
|
|
- LM_ERR("error while converting bitmap value from string\n");
|
|
|
- return -4;
|
|
|
- } else {
|
|
|
- VAL_TYPE(_v) = DB_BITMAP;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case DB_DOUBLE:
|
|
|
- LM_DBG("converting DOUBLE [%s]\n", _s);
|
|
|
- if (db_str2double(_s, &VAL_DOUBLE(_v)) < 0) {
|
|
|
- LM_ERR("error while converting double value from string\n");
|
|
|
- return -5;
|
|
|
- } else {
|
|
|
- VAL_TYPE(_v) = DB_DOUBLE;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case DB_STRING:
|
|
|
- LM_DBG("converting STRING [%s]\n", _s);
|
|
|
- VAL_STRING(_v) = _s;
|
|
|
- VAL_TYPE(_v) = DB_STRING;
|
|
|
- return 0;
|
|
|
-
|
|
|
- case DB_STR:
|
|
|
- LM_DBG("converting STR [%.*s]\n", _l, _s);
|
|
|
- VAL_STR(_v).s = (char*)_s;
|
|
|
- VAL_STR(_v).len = _l;
|
|
|
- VAL_TYPE(_v) = DB_STR;
|
|
|
- return 0;
|
|
|
-
|
|
|
- case DB_DATETIME:
|
|
|
- LM_DBG("converting DATETIME [%s]\n", _s);
|
|
|
- if (db_str2time(_s, &VAL_TIME(_v)) < 0) {
|
|
|
- LM_ERR("error while converting datetime value from string\n");
|
|
|
- return -6;
|
|
|
- } else {
|
|
|
- VAL_TYPE(_v) = DB_DATETIME;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case DB_BLOB:
|
|
|
- LM_DBG("converting BLOB [%.*s]\n", _l, _s);
|
|
|
- VAL_BLOB(_v).s = (char*)_s;
|
|
|
- VAL_BLOB(_v).len = _l;
|
|
|
- VAL_TYPE(_v) = DB_BLOB;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- return -7;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
/*!
|
|
|
* \brief Converting a value to a string
|
|
|
*
|