From: André Malo Date: Sun, 27 Jul 2003 14:40:52 +0000 (+0000) Subject: cleanup lookup_map_dbmfile function. X-Git-Tag: pre_ajp_proxy~1352 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6077bd9bb2498dba7945eab5773859f85af90029;p=apache cleanup lookup_map_dbmfile function. improve efficiency and readablity. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@100798 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/mappers/mod_rewrite.c b/modules/mappers/mod_rewrite.c index 6ef3621eb9..0cc85184aa 100644 --- a/modules/mappers/mod_rewrite.c +++ b/modules/mappers/mod_rewrite.c @@ -1430,25 +1430,25 @@ static char *lookup_map_dbmfile(request_rec *r, const char *file, apr_dbm_t *dbmfp = NULL; apr_datum_t dbmkey; apr_datum_t dbmval; - char *value = NULL; - char buf[MAX_STRING_LEN]; - apr_status_t rv; + char *value; + + if (apr_dbm_open_ex(&dbmfp, dbmtype, file, APR_DBM_READONLY, APR_OS_DEFAULT, + r->pool) != APR_SUCCESS) { + return NULL; + } dbmkey.dptr = key; dbmkey.dsize = strlen(key); - if ((rv = apr_dbm_open_ex(&dbmfp, dbmtype, file, APR_DBM_READONLY, - 0 /* irrelevant when reading */, - r->pool)) == APR_SUCCESS) { - rv = apr_dbm_fetch(dbmfp, dbmkey, &dbmval); - if (rv == APR_SUCCESS && dbmval.dptr) { - memcpy(buf, dbmval.dptr, - dbmval.dsize < sizeof(buf)-1 ? - dbmval.dsize : sizeof(buf)-1 ); - buf[dbmval.dsize] = '\0'; - value = apr_pstrdup(r->pool, buf); - } - apr_dbm_close(dbmfp); + + if (apr_dbm_fetch(dbmfp, dbmkey, &dbmval) == APR_SUCCESS && dbmval.dptr) { + value = apr_pstrmemdup(r->pool, dbmval.dptr, dbmval.dsize); + } + else { + value = NULL; } + + apr_dbm_close(dbmfp); + return value; }