postgresql plugin: Split off memory management into dedicated functions.
authorSebastian Harl <sh@tokkee.org>
Fri, 18 Jul 2008 19:36:41 +0000 (21:36 +0200)
committerFlorian Forster <octo@huhu.verplant.org>
Thu, 24 Jul 2008 12:18:04 +0000 (14:18 +0200)
Allocation and freeing of c_psql_database_t objects is now handled by the new
functions. This increases readability of the code.

Signed-off-by: Sebastian Harl <sh@tokkee.org>
Signed-off-by: Florian Forster <octo@huhu.verplant.org>
src/postgresql.c

index 40f8ec5..e477348 100644 (file)
@@ -93,6 +93,56 @@ typedef struct {
 static c_psql_database_t *databases     = NULL;
 static int                databases_num = 0;
 
+static c_psql_database_t *c_psql_database_new (const char *name)
+{
+       c_psql_database_t *db;
+
+       ++databases_num;
+       if (NULL == (databases = (c_psql_database_t *)realloc (databases,
+                               databases_num * sizeof (*databases)))) {
+               log_err ("Out of memory.");
+               exit (5);
+       }
+
+       db = databases + (databases_num - 1);
+
+       db->conn = NULL;
+
+       db->conn_complaint.last     = 0;
+       db->conn_complaint.interval = 0;
+
+       db->database   = sstrdup (name);
+       db->host       = NULL;
+       db->port       = NULL;
+       db->user       = NULL;
+       db->password   = NULL;
+
+       db->sslmode    = NULL;
+
+       db->krbsrvname = NULL;
+
+       db->service    = NULL;
+       return db;
+} /* c_psql_database_new */
+
+static void c_psql_database_delete (c_psql_database_t *db)
+{
+       PQfinish (db->conn);
+
+       sfree (db->database);
+       sfree (db->host);
+       sfree (db->port);
+       sfree (db->user);
+       sfree (db->password);
+
+       sfree (db->sslmode);
+
+       sfree (db->krbsrvname);
+
+       sfree (db->service);
+       return;
+} /* c_psql_database_delete */
+
 static void submit (const c_psql_database_t *db,
                const char *type, const char *type_instance,
                value_t *values, size_t values_len)
@@ -347,20 +397,7 @@ static int c_psql_shutdown (void)
 
        for (i = 0; i < databases_num; ++i) {
                c_psql_database_t *db = databases + i;
-
-               PQfinish (db->conn);
-
-               sfree (db->database);
-               sfree (db->host);
-               sfree (db->port);
-               sfree (db->user);
-               sfree (db->password);
-
-               sfree (db->sslmode);
-
-               sfree (db->krbsrvname);
-
-               sfree (db->service);
+               c_psql_database_delete (db);
        }
 
        sfree (databases);
@@ -445,31 +482,7 @@ static int c_psql_config_database (oconfig_item_t *ci)
                return 1;
        }
 
-       ++databases_num;
-       if (NULL == (databases = (c_psql_database_t *)realloc (databases,
-                               databases_num * sizeof (*databases)))) {
-               log_err ("Out of memory.");
-               exit (5);
-       }
-
-       db = databases + (databases_num - 1);
-
-       db->conn = NULL;
-
-       db->conn_complaint.last     = 0;
-       db->conn_complaint.interval = 0;
-
-       db->database   = sstrdup (ci->values[0].value.string);
-       db->host       = NULL;
-       db->port       = NULL;
-       db->user       = NULL;
-       db->password   = NULL;
-
-       db->sslmode    = NULL;
-
-       db->krbsrvname = NULL;
-
-       db->service    = NULL;
+       db = c_psql_database_new (ci->values[0].value.string);
 
        for (i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *c = ci->children + i;