LCOV - code coverage report
Current view: top level - src/port - quotes.c (source / functions) Coverage Total Hit
Test: PostgreSQL 19devel Lines: 90.9 % 11 10
Test Date: 2026-02-17 17:20:33 Functions: 100.0 % 1 1
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /*-------------------------------------------------------------------------
       2              :  *
       3              :  * quotes.c
       4              :  *    string quoting and escaping functions
       5              :  *
       6              :  * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
       7              :  * Portions Copyright (c) 1994, Regents of the University of California
       8              :  *
       9              :  *
      10              :  * IDENTIFICATION
      11              :  *    src/port/quotes.c
      12              :  *
      13              :  *-------------------------------------------------------------------------
      14              :  */
      15              : 
      16              : #include "c.h"
      17              : 
      18              : /*
      19              :  * Escape (by doubling) any single quotes or backslashes in given string
      20              :  *
      21              :  * Note: this is used to process postgresql.conf entries and to quote
      22              :  * string literals in pg_basebackup for writing the recovery configuration.
      23              :  * Since postgresql.conf strings are defined to treat backslashes as escapes,
      24              :  * we have to double backslashes here.
      25              :  *
      26              :  * Since this function is only used for parsing or creating configuration
      27              :  * files, we do not care about encoding considerations.
      28              :  *
      29              :  * Returns a malloced() string that it's the responsibility of the caller
      30              :  * to free.
      31              :  */
      32              : char *
      33          707 : escape_single_quotes_ascii(const char *src)
      34              : {
      35          707 :     int         len = strlen(src),
      36              :                 i,
      37              :                 j;
      38          707 :     char       *result = malloc(len * 2 + 1);
      39              : 
      40          707 :     if (!result)
      41            0 :         return NULL;
      42              : 
      43        14918 :     for (i = 0, j = 0; i < len; i++)
      44              :     {
      45        14211 :         if (SQL_STR_DOUBLE(src[i], true))
      46           48 :             result[j++] = src[i];
      47        14211 :         result[j++] = src[i];
      48              :     }
      49          707 :     result[j] = '\0';
      50          707 :     return result;
      51              : }
        

Generated by: LCOV version 2.0-1