[asterisk-commits] kpfleming: trunk r169438 - in /trunk: funcs/ include/asterisk/ res/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Jan 19 15:42:46 CST 2009


Author: kpfleming
Date: Mon Jan 19 15:42:46 2009
New Revision: 169438

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=169438
Log:
ast_str_SQLGetData is *not* part of the ast_str API, it's part of the ast_odbc API and just happens to use an ast_str as the buffer; move all of it to res_odbc.c and res_odbc.h, renaming appropriately

along the way fix some minor coding style issues in strings.h and add some attribute_pure annotations to functions in the ast_str API


Modified:
    trunk/funcs/func_odbc.c
    trunk/include/asterisk/res_odbc.h
    trunk/include/asterisk/strings.h
    trunk/res/res_odbc.c

Modified: trunk/funcs/func_odbc.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/funcs/func_odbc.c?view=diff&rev=169438&r1=169437&r2=169438
==============================================================================
--- trunk/funcs/func_odbc.c (original)
+++ trunk/funcs/func_odbc.c Mon Jan 19 15:42:46 2009
@@ -30,7 +30,6 @@
 	<depend>res_odbc</depend>
  ***/
 
-#define USE_ODBC
 #include "asterisk.h"
 
 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
@@ -543,7 +542,7 @@
 			}
 
 			buflen = strlen(buf);
-			res = ast_str_SQLGetData(&coldata, -1, stmt, x + 1, SQL_CHAR, &indicator);
+			res = ast_odbc_ast_str_SQLGetData(&coldata, -1, stmt, x + 1, SQL_CHAR, &indicator);
 			if (indicator == SQL_NULL_DATA) {
 				ast_debug(3, "Got NULL data\n");
 				ast_str_reset(coldata);
@@ -1093,7 +1092,7 @@
 						snprintf(colname, sizeof(colname), "field%d", x);
 					}
 
-					res = ast_str_SQLGetData(&coldata, maxcol, stmt, x + 1, SQL_CHAR, &indicator);
+					res = ast_odbc_ast_str_SQLGetData(&coldata, maxcol, stmt, x + 1, SQL_CHAR, &indicator);
 					if (indicator == SQL_NULL_DATA) {
 						ast_str_set(&coldata, 0, "(nil)");
 						res = SQL_SUCCESS;

Modified: trunk/include/asterisk/res_odbc.h
URL: http://svn.digium.com/svn-view/asterisk/trunk/include/asterisk/res_odbc.h?view=diff&rev=169438&r1=169437&r2=169438
==============================================================================
--- trunk/include/asterisk/res_odbc.h (original)
+++ trunk/include/asterisk/res_odbc.h Mon Jan 19 15:42:46 2009
@@ -31,6 +31,7 @@
 #include <sqlext.h>
 #include <sqltypes.h>
 #include "asterisk/linkedlists.h"
+#include "asterisk/strings.h"
 
 typedef enum { ODBC_SUCCESS=0, ODBC_FAIL=-1} odbc_status;
 
@@ -183,4 +184,14 @@
  */
 #define ast_odbc_release_table(ptr) if (ptr) { AST_RWLIST_UNLOCK(&(ptr)->columns); }
 
+/*!\brief Wrapper for SQLGetData to use with dynamic strings
+ * \param buf Address of the pointer to the ast_str structure.
+ * \param maxlen The maximum size of the resulting string, or 0 for no limit.
+ * \param StatementHandle The statement handle from which to retrieve data.
+ * \param ColumnNumber Column number (1-based offset) for which to retrieve data.
+ * \param TargetType The SQL constant indicating what kind of data is to be retrieved (usually SQL_CHAR)
+ * \param StrLen_or_Ind A pointer to a length indicator, specifying the total length of data.
+ */
+SQLRETURN ast_odbc_ast_str_SQLGetData(struct ast_str **buf, int pmaxlen, SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLLEN *StrLen_or_Ind);
+
 #endif /* _ASTERISK_RES_ODBC_H */

Modified: trunk/include/asterisk/strings.h
URL: http://svn.digium.com/svn-view/asterisk/trunk/include/asterisk/strings.h?view=diff&rev=169438&r1=169437&r2=169438
==============================================================================
--- trunk/include/asterisk/strings.h (original)
+++ trunk/include/asterisk/strings.h Mon Jan 19 15:42:46 2009
@@ -60,7 +60,7 @@
 }
 
 #else
-static force_inline int ast_strlen_zero(const char *s)
+static force_inline int attribute_pure ast_strlen_zero(const char *s)
 {
 	return (!s || (*s == '\0'));
 }
@@ -83,11 +83,11 @@
   \return a pointer to the first non-whitespace character
  */
 AST_INLINE_API(
-char *ast_skip_blanks(const char *str),
+char * attribute_pure ast_skip_blanks(const char *str),
 {
 	while (*str && ((unsigned char) *str) < 33)
 		str++;
-	return (char *)str;
+	return (char *) str;
 }
 )
 
@@ -122,11 +122,11 @@
   \return a pointer to the first whitespace character
  */
 AST_INLINE_API(
-char *ast_skip_nonblanks(char *str),
+char * attribute_pure ast_skip_nonblanks(const char *str),
 {
 	while (*str && ((unsigned char) *str) > 32)
 		str++;
-	return str;
+	return (char *) str;
 }
 )
   
@@ -142,9 +142,9 @@
 AST_INLINE_API(
 char *ast_strip(char *s),
 {
-	s = ast_skip_blanks(s);
-	if (s)
+	if ((s = ast_skip_blanks(s))) {
 		ast_trim_blanks(s);
+	}
 	return s;
 } 
 )
@@ -257,7 +257,7 @@
  * \retval -1 if "true".
  * \retval 0 otherwise.
  */
-int ast_true(const char *val);
+int attribute_pure ast_true(const char *val);
 
 /*! 
  * \brief Make sure something is false.
@@ -269,7 +269,7 @@
  * \retval -1 if "true".
  * \retval 0 otherwise.
  */
-int ast_false(const char *val);
+int attribute_pure ast_false(const char *val);
 
 /*
  *  \brief Join an array of strings into a single string.
@@ -397,8 +397,9 @@
 {
 	if (buf) {
 		buf->__AST_STR_USED = 0;
-		if (buf->__AST_STR_LEN)
+		if (buf->__AST_STR_LEN) {
 			buf->__AST_STR_STR[0] = '\0';
+		}
 	}
 }
 )
@@ -432,7 +433,7 @@
  * \param A pointer to the ast_str string.
  */
 AST_INLINE_API(
-size_t ast_str_strlen(struct ast_str *buf),
+size_t attribute_pure ast_str_strlen(struct ast_str *buf),
 {
 	return buf->__AST_STR_USED;
 }
@@ -442,7 +443,7 @@
  * \param A pointer to the ast_str string.
  */
 AST_INLINE_API(
-size_t ast_str_size(struct ast_str *buf),
+size_t attribute_pure ast_str_size(struct ast_str *buf),
 {
 	return buf->__AST_STR_LEN;
 }
@@ -452,7 +453,7 @@
  * \param A pointer to the ast_str string.
  */
 AST_INLINE_API(
-attribute_pure char *ast_str_buffer(struct ast_str *buf),
+char * attribute_pure ast_str_buffer(struct ast_str *buf),
 {
 	return buf->__AST_STR_STR;
 }
@@ -752,39 +753,6 @@
 }
 )
 
-/*!\brief Wrapper for SQLGetData to use with dynamic strings
- * \param buf Address of the pointer to the ast_str structure.
- * \param maxlen The maximum size of the resulting string, or 0 for no limit.
- * \param StatementHandle The statement handle from which to retrieve data.
- * \param ColumnNumber Column number (1-based offset) for which to retrieve data.
- * \param TargetType The SQL constant indicating what kind of data is to be retrieved (usually SQL_CHAR)
- * \param StrLen_or_Ind A pointer to a length indicator, specifying the total length of data.
- */
-#ifdef USE_ODBC
-#include <sql.h>
-#include <sqlext.h>
-#include <sqltypes.h>
-
-AST_INLINE_API(SQLRETURN ast_str_SQLGetData(struct ast_str **buf, int pmaxlen, SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLLEN *StrLen_or_Ind),
-{
-	SQLRETURN res;
-	size_t maxlen;
-	if (pmaxlen == 0) {
-		if (SQLGetData(StatementHandle, ColumnNumber, TargetType, (*buf)->__AST_STR_STR, 0, StrLen_or_Ind) == SQL_SUCCESS_WITH_INFO) {
-			ast_str_make_space(buf, *StrLen_or_Ind + 1);
-		}
-	} else if (pmaxlen > 0) {
-		ast_str_make_space(buf, pmaxlen);
-	}
-	maxlen = (*buf)->__AST_STR_LEN;
-	res = SQLGetData(StatementHandle, ColumnNumber, TargetType, (*buf)->__AST_STR_STR, maxlen, StrLen_or_Ind);
-	(*buf)->__AST_STR_USED = *StrLen_or_Ind;
-	return res;
-}
-)
-#endif /* defined(USE_ODBC) */
-
-
 /*!
  * \brief Set a dynamic string using variable arguments
  *
@@ -846,7 +814,7 @@
  *
  * http://www.cse.yorku.ca/~oz/hash.html
  */
-static force_inline int ast_str_hash(const char *str)
+static force_inline int attribute_pure ast_str_hash(const char *str)
 {
 	int hash = 5381;
 
@@ -863,7 +831,7 @@
  * all characters to lowercase prior to computing a hash. This
  * allows for easy case-insensitive lookups in a hash table.
  */
-static force_inline int ast_str_case_hash(const char *str)
+static force_inline int attribute_pure ast_str_case_hash(const char *str)
 {
 	int hash = 5381;
 

Modified: trunk/res/res_odbc.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/res/res_odbc.c?view=diff&rev=169438&r1=169437&r2=169438
==============================================================================
--- trunk/res/res_odbc.c (original)
+++ trunk/res/res_odbc.c Mon Jan 19 15:42:46 2009
@@ -48,6 +48,7 @@
 #include "asterisk/res_odbc.h"
 #include "asterisk/time.h"
 #include "asterisk/astobj2.h"
+#include "asterisk/strings.h"
 
 struct odbc_class
 {
@@ -366,6 +367,22 @@
 	return res;
 }
 
+SQLRETURN ast_odbc_ast_str_SQLGetData(struct ast_str **buf, int pmaxlen, SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLLEN *StrLen_or_Ind)
+{
+	SQLRETURN res;
+
+	if (pmaxlen == 0) {
+		if (SQLGetData(StatementHandle, ColumnNumber, TargetType, ast_str_buffer(*buf), 0, StrLen_or_Ind) == SQL_SUCCESS_WITH_INFO) {
+			ast_str_make_space(buf, *StrLen_or_Ind + 1);
+		}
+	} else if (pmaxlen > 0) {
+		ast_str_make_space(buf, pmaxlen);
+	}
+	res = SQLGetData(StatementHandle, ColumnNumber, TargetType, ast_str_buffer(*buf), ast_str_size(*buf), StrLen_or_Ind);
+	ast_str_update(*buf);
+
+	return res;
+}
 
 int ast_odbc_sanity_check(struct odbc_obj *obj) 
 {




More information about the asterisk-commits mailing list