summaryrefslogtreecommitdiffstats
path: root/output/pgsql/ulogd_output_PGSQL.c
diff options
context:
space:
mode:
Diffstat (limited to 'output/pgsql/ulogd_output_PGSQL.c')
-rw-r--r--output/pgsql/ulogd_output_PGSQL.c44
1 files changed, 17 insertions, 27 deletions
diff --git a/output/pgsql/ulogd_output_PGSQL.c b/output/pgsql/ulogd_output_PGSQL.c
index 71d9403..04c2665 100644
--- a/output/pgsql/ulogd_output_PGSQL.c
+++ b/output/pgsql/ulogd_output_PGSQL.c
@@ -232,48 +232,38 @@ static int open_db_pgsql(struct ulogd_pluginstance *upi)
char *schema = NULL;
char pgbuf[128];
- if (!connstr) {
- char *server = host_ce(upi->config_kset).u.string;
- unsigned int port = port_ce(upi->config_kset).u.value;
- char *user = user_ce(upi->config_kset).u.string;
- char *pass = pass_ce(upi->config_kset).u.string;
- char *db = db_ce(upi->config_kset).u.string;
+ if (!connstr[0]) {
+ char *server = host_ce(upi->config_kset).u.string;
+ unsigned int port = port_ce(upi->config_kset).u.value;
+ char *user = user_ce(upi->config_kset).u.string;
+ char *pass = pass_ce(upi->config_kset).u.string;
+ char *db = db_ce(upi->config_kset).u.string;
+ char *cp;
/* 80 is more than what we need for the fixed parts below */
len = 80 + strlen(user) + strlen(db);
/* hostname and and password are the only optionals */
- if (server)
+ if (server[0])
len += strlen(server);
- if (pass)
+ if (pass[0])
len += strlen(pass);
if (port)
len += 20;
- connstr = (char *) malloc(len);
+ cp = connstr = malloc(len);
if (!connstr)
return -ENOMEM;
- connstr[0] = '\0';
- if (server && strlen(server) > 0) {
- strcpy(connstr, " host=");
- strcat(connstr, server);
- }
+ if (server[0])
+ cp += sprintf(cp, "host=%s ", server);
- if (port) {
- char portbuf[20];
- snprintf(portbuf, sizeof(portbuf), " port=%u", port);
- strcat(connstr, portbuf);
- }
+ if (port)
+ cp += sprintf(cp, "port=%u ", port);
- strcat(connstr, " dbname=");
- strcat(connstr, db);
- strcat(connstr, " user=");
- strcat(connstr, user);
+ cp += sprintf(cp, "dbname=%s user=%s", db, user);
- if (pass) {
- strcat(connstr, " password=");
- strcat(connstr, pass);
- }
+ if (pass[0])
+ cp += sprintf(cp, " password=%s", pass);
}
pi->dbh = PQconnectdb(connstr);
if (PQstatus(pi->dbh) != CONNECTION_OK) {