diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 9eaf410..14e31b6 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -569,6 +569,81 @@ PQconnectStartParams(const char *const * keywords, return conn; } +struct ConninfoRepli { + int n_conninfo; + char *conninfo_array[128]; +}; + +static bool +parse_conninfo_repli(char *conninfo, size_t len, const char *conninfo_repli) +{ + char buf[1024]; + char *conninfo_ptr; + char *end_ptr; + struct ConninfoRepli conninfo_r; + static int conninfo_idx = 0; + + int i; + + memset(&conninfo_r, 0, sizeof(struct ConninfoRepli)); + + conninfo_r.n_conninfo = 0; + +#ifdef REPLI_DEBUG + printf("DEBUG: %s\n", conninfo_repli); +#endif + + conninfo_ptr = (char *)conninfo_repli; + + while (1) + { + int len; + + end_ptr = strchr(conninfo_ptr, ';'); + if ( end_ptr ) + len = end_ptr - conninfo_ptr; + else + len = strlen(conninfo_ptr); + + memset(buf, 0, sizeof(buf)); + strncpy(buf, conninfo_ptr, len); + + conninfo_r.conninfo_array[conninfo_r.n_conninfo] = strdup(buf); + conninfo_r.n_conninfo++; + + if ( !end_ptr ) + break; + + conninfo_ptr = end_ptr + 1; + } + +#ifdef REPLI_DEBUG + printf("DEBUG: n_conninfo = %d\n", conninfo_r.n_conninfo); + + for (i=0 ; i= conninfo_r.n_conninfo ) + conninfo_idx = 0; + + for (i=0 ; i