PQconnectdbParams returns exit value 01 (from gdb). - Mailing list pgsql-interfaces

From Andrei Petru Mura
Subject PQconnectdbParams returns exit value 01 (from gdb).
Date
Msg-id CAK18DJUsbdMYS3m-7az4Zc32S-AurcMZG7MkoQ5G3SCub_1-fg@mail.gmail.com
Whole thread Raw
Responses Re: PQconnectdbParams returns exit value 01 (from gdb).
List pgsql-interfaces
I'm trying to create a connection to my database with libpq. Bellow is my code:

PGconn *connect(char *file_path) {
        const char **keywords;
        const char **values;
        char *line = malloc(LINE_SIZE);
        char *prop, *val, *tmp;
        int i = 0, j = 0, k = 0;
        FILE *creds = fopen(file_path, "r");

        if (creds == NULL) {
                LOG("%s", "error: cannot open credentials file.\n");
                exit(1);
        }

        keywords = malloc(6 * sizeof(char *));
        values = malloc(6 * sizeof(char *));

        while (fgets(line, LINE_SIZE, creds) != NULL) {
                if (line[strlen(line) - 1] == '\n')
                        line[strlen(line) - 1] = '\0';
                prop = line;
                while(*(prop++) != '=') {
                        i++;
                }
                tmp = prop;
                prop = malloc(i + 1);
                strncpy(prop, line, i);
                prop[i] = '\0';
                keywords[j++] = prop;
                val = malloc(strlen(line) - strlen(prop) + 1);
                strcpy(val, tmp);
                values[k++] = val;
                i = 0;
        }

        keywords[++j] = NULL;
        values[++k] = NULL;
printf("%s %s %s %s %s\n", keywords[0], keywords[1], keywords[2], keywords[3], keywords[4]); //everything is printed well here
printf("%s %s %s %s %s\n", values[0], values[1], values[2], values[3], values[4]); //here also

        PGconn *conn = PQconnectdbParams(keywords, values, 1);

        if (PQstatus(conn) != CONNECTION_OK) {
                fprintf(stderr, "%s\n", PQerrorMessage(conn));
                exit(1);
        }

        return conn;

}

If I run that code from main(), the printf works fine and nothing else is printed after. But trying to use that connection, I realized that in fact the PQconnectdbParams function returns value 01 (after debugging with gdb).

If I try to connect my database with the credentials from specified file, it works well.

Can anybody help me on solving that issue?

pgsql-interfaces by date:

Previous
From: Tom Lane
Date:
Subject: Re: Issue on calling PQconnectdbParams from C
Next
From: Tom Lane
Date:
Subject: Re: PQconnectdbParams returns exit value 01 (from gdb).