db_unixodbc/row.c

Go to the documentation of this file.
00001 /* 
00002  * $Id: row.c 5519 2009-01-26 18:08:46Z henningw $
00003  *
00004  * UNIXODBC module row related functions
00005  *
00006  * Copyright (C) 2005-2006 Marco Lorrai
00007  * Copyright (C) 2008 1&1 Internet AG
00008  *
00009  * This file is part of Kamailio, a free SIP server.
00010  *
00011  * Kamailio is free software; you can redistribute it and/or modify
00012  * it under the terms of the GNU General Public License as published by
00013  * the Free Software Foundation; either version 2 of the License, or
00014  * (at your option) any later version
00015  *
00016  * Kamailio is distributed in the hope that it will be useful,
00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  * GNU General Public License for more details.
00020  *
00021  * You should have received a copy of the GNU General Public License
00022  * along with this program; if not, write to the Free Software
00023  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00024  *
00025  *
00026  * History:
00027  * --------
00028  *  2005-12-01  initial commit (chgen)
00029  *  2006-05-05  passing proper lengths of column data (sgupta)
00030  */
00031 
00032 #include "../../dprint.h"
00033 #include "../../mem/mem.h"
00034 #include "../../db/db_row.h"
00035 #include "../../db/db_val.h"
00036 #include "val.h"
00037 #include "row.h"
00038 #include "con.h"
00039 
00040 /*
00041  * Convert a row from result into db API representation
00042  */
00043 int db_unixodbc_convert_row(const db_con_t* _h, const db_res_t* _res, db_row_t* _r,
00044       const unsigned long* lengths)
00045 {
00046    int i;
00047 
00048    if ((!_h) || (!_res) || (!_r)) {
00049       LM_ERR("invalid parameter value\n");
00050       return -1;
00051    }
00052 
00053    if (db_allocate_row(_res, _r) != 0) {
00054       LM_ERR("could not allocate row");
00055       return -2;
00056    }
00057 
00058    for(i = 0; i < RES_COL_N(_res); i++) {
00059       if (db_unixodbc_str2val(RES_TYPES(_res)[i], &(ROW_VALUES(_r)[i]),
00060          ((CON_ROW(_h))[i]), lengths[i], 1) < 0) {
00061          LM_ERR("failed to convert value\n");
00062          LM_DBG("free row at %p\n", _r);
00063          db_free_row(_r);
00064          return -3;
00065       }
00066    }
00067    return 0;
00068 }

Generated on Tue May 22 14:00:30 2012 for Kamailio - The Open Source SIP Server by  doxygen 1.5.6