LCOV - code coverage report
Current view: top level - src/interfaces/libpq/test - libpq_uri_regress.c (source / functions) Coverage Total Hit
Test: Code coverage Lines: 0.0 % 33 0
Test Date: 2026-01-26 10:56:24 Functions: 0.0 % 1 0
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /*
       2              :  * libpq_uri_regress.c
       3              :  *              A test program for libpq URI format
       4              :  *
       5              :  * This is a helper for libpq conninfo regression testing.  It takes a single
       6              :  * conninfo string as a parameter, parses it using PQconninfoParse, and then
       7              :  * prints out the values from the parsed PQconninfoOption struct that differ
       8              :  * from the defaults (obtained from PQconndefaults).
       9              :  *
      10              :  * Portions Copyright (c) 2012-2026, PostgreSQL Global Development Group
      11              :  *
      12              :  * IDENTIFICATION
      13              :  *              src/interfaces/libpq/test/libpq_uri_regress.c
      14              :  */
      15              : 
      16              : #include "postgres_fe.h"
      17              : 
      18              : #include "libpq-fe.h"
      19              : 
      20              : int
      21            0 : main(int argc, char *argv[])
      22              : {
      23            0 :         PQconninfoOption *opts;
      24            0 :         PQconninfoOption *defs;
      25            0 :         PQconninfoOption *opt;
      26            0 :         PQconninfoOption *def;
      27            0 :         char       *errmsg = NULL;
      28            0 :         bool            local = true;
      29              : 
      30            0 :         if (argc != 2)
      31            0 :                 return 1;
      32              : 
      33            0 :         opts = PQconninfoParse(argv[1], &errmsg);
      34            0 :         if (opts == NULL)
      35              :         {
      36            0 :                 fprintf(stderr, "libpq_uri_regress: %s", errmsg);
      37            0 :                 return 1;
      38              :         }
      39              : 
      40            0 :         defs = PQconndefaults();
      41            0 :         if (defs == NULL)
      42              :         {
      43            0 :                 fprintf(stderr, "libpq_uri_regress: cannot fetch default options\n");
      44            0 :                 return 1;
      45              :         }
      46              : 
      47              :         /*
      48              :          * Loop on the options, and print the value of each if not the default.
      49              :          *
      50              :          * XXX this coding assumes that PQconninfoOption structs always have the
      51              :          * keywords in the same order.
      52              :          */
      53            0 :         for (opt = opts, def = defs; opt->keyword; ++opt, ++def)
      54              :         {
      55            0 :                 if (opt->val != NULL)
      56              :                 {
      57            0 :                         if (def->val == NULL || strcmp(opt->val, def->val) != 0)
      58            0 :                                 printf("%s='%s' ", opt->keyword, opt->val);
      59              : 
      60              :                         /*
      61              :                          * Try to detect if this is a Unix-domain socket or inet.  This is
      62              :                          * a bit grotty but it's the same thing that libpq itself does.
      63              :                          *
      64              :                          * Note that we directly test for '/' instead of using
      65              :                          * is_absolute_path, as that would be considerably more messy.
      66              :                          * This would fail on Windows, but that platform doesn't have
      67              :                          * Unix-domain sockets anyway.
      68              :                          */
      69            0 :                         if (*opt->val &&
      70            0 :                                 (strcmp(opt->keyword, "hostaddr") == 0 ||
      71            0 :                                  (strcmp(opt->keyword, "host") == 0 && *opt->val != '/')))
      72              :                         {
      73            0 :                                 local = false;
      74            0 :                         }
      75            0 :                 }
      76            0 :         }
      77              : 
      78            0 :         if (local)
      79            0 :                 printf("(local)\n");
      80              :         else
      81            0 :                 printf("(inet)\n");
      82              : 
      83            0 :         return 0;
      84            0 : }
        

Generated by: LCOV version 2.3.2-1