aboutsummaryrefslogtreecommitdiffstats
path: root/db.c
diff options
context:
space:
mode:
authorcitats <citats@f38db490-d61c-443f-a65b-d21fe96a405b>2004-05-28 18:56:23 +0000
committercitats <citats@f38db490-d61c-443f-a65b-d21fe96a405b>2004-05-28 18:56:23 +0000
commit9a3778a17ec56868d3bfcedf6193ef2e050d758e (patch)
tree906fb20cc834a7fc559efe0cb3c73921c782f8e7 /db.c
parent501a88b0d1dd4a3948a73fc679186a19ea765515 (diff)
Use ast_strlen_zero in db.c and some optimizations. Lets store the return value of strlen and use that rather than using strlen every time, and snprintf returns the length of the string
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3103 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'db.c')
-rwxr-xr-xdb.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/db.c b/db.c
index 4d9fd0167..372d22df0 100755
--- a/db.c
+++ b/db.c
@@ -32,6 +32,7 @@
#include <asterisk/options.h>
#include <asterisk/astdb.h>
#include <asterisk/cli.h>
+#include <asterisk/utils.h>
#include "db1-ast/include/db.h"
#include "asterisk.h"
#include "astconf.h"
@@ -54,13 +55,14 @@ static int dbinit(void)
static inline int keymatch(const char *key, const char *prefix)
{
- if (!strlen(prefix))
+ int preflen = strlen(prefix);
+ if (!preflen)
return 1;
if (!strcasecmp(key, prefix))
return 1;
- if ((strlen(key) > strlen(prefix)) &&
- !strncasecmp(key, prefix, strlen(prefix))) {
- if (key[strlen(prefix)] == '/')
+ if ((strlen(key) > preflen) &&
+ !strncasecmp(key, prefix, preflen)) {
+ if (key[preflen] == '/')
return 1;
}
return 0;
@@ -110,7 +112,7 @@ int ast_db_put(const char *family, const char *keys, char *value)
{
char fullkey[256];
DBT key, data;
- int res;
+ int res, fullkeylen;
ast_mutex_lock(&dblock);
if (dbinit()) {
@@ -118,11 +120,11 @@ int ast_db_put(const char *family, const char *keys, char *value)
return -1;
}
- snprintf(fullkey, sizeof(fullkey), "/%s/%s", family, keys);
+ fullkeylen = snprintf(fullkey, sizeof(fullkey), "/%s/%s", family, keys);
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
key.data = fullkey;
- key.size = strlen(fullkey) + 1;
+ key.size = fullkeylen + 1;
data.data = value;
data.size = strlen(value) + 1;
res = astdb->put(astdb, &key, &data, 0);
@@ -137,7 +139,7 @@ int ast_db_get(const char *family, const char *keys, char *value, int valuelen)
{
char fullkey[256]="";
DBT key, data;
- int res;
+ int res, fullkeylen;
ast_mutex_lock(&dblock);
if (dbinit()) {
@@ -145,12 +147,12 @@ int ast_db_get(const char *family, const char *keys, char *value, int valuelen)
return -1;
}
- snprintf(fullkey, sizeof(fullkey), "/%s/%s", family, keys);
+ fullkeylen = snprintf(fullkey, sizeof(fullkey), "/%s/%s", family, keys);
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
memset(value, 0, valuelen);
key.data = fullkey;
- key.size = strlen(fullkey) + 1;
+ key.size = fullkeylen + 1;
res = astdb->get(astdb, &key, &data, 0);
@@ -178,7 +180,7 @@ int ast_db_del(const char *family, const char *keys)
{
char fullkey[256];
DBT key;
- int res;
+ int res, fullkeylen;
ast_mutex_lock(&dblock);
if (dbinit()) {
@@ -186,10 +188,10 @@ int ast_db_del(const char *family, const char *keys)
return -1;
}
- snprintf(fullkey, sizeof(fullkey), "/%s/%s", family, keys);
+ fullkeylen = snprintf(fullkey, sizeof(fullkey), "/%s/%s", family, keys);
memset(&key, 0, sizeof(key));
key.data = fullkey;
- key.size = strlen(fullkey) + 1;
+ key.size = fullkeylen + 1;
res = astdb->del(astdb, &key, 0);
astdb->sync(astdb, 0);
@@ -314,8 +316,8 @@ struct ast_db_entry *ast_db_gettree(const char *family, const char *keytree)
struct ast_db_entry *last = NULL;
struct ast_db_entry *cur, *ret=NULL;
- if (family && strlen(family)) {
- if (keytree && strlen(keytree))
+ if (family && !ast_strlen_zero(family)) {
+ if (keytree && !ast_strlen_zero(keytree))
/* Family and key tree */
snprintf(prefix, sizeof(prefix), "/%s/%s", family, prefix);
else