]> granicus.if.org Git - apache/commitdiff
cleanup lookup_map_dbmfile function.
authorAndré Malo <nd@apache.org>
Sun, 27 Jul 2003 14:40:52 +0000 (14:40 +0000)
committerAndré Malo <nd@apache.org>
Sun, 27 Jul 2003 14:40:52 +0000 (14:40 +0000)
improve efficiency and readablity.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@100798 13f79535-47bb-0310-9956-ffa450edef68

modules/mappers/mod_rewrite.c

index 6ef3621eb91fb22d560c1a8d4c8aa8d56daf2d64..0cc85184aa95ac9aa6cd4983e8240baa915399a2 100644 (file)
@@ -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;
 }