LCOV - differential code coverage report
Current view: top level - src/port - quotes.c (source / functions) Coverage Total Hit UBC CBC
Current: Differential Code Coverage HEAD vs 15 Lines: 90.9 % 11 10 1 10
Current Date: 2023-04-08 15:15:32 Functions: 100.0 % 1 1 1
Baseline: 15
Baseline Date: 2023-04-08 15:09:40
Legend: Lines: hit not hit

           TLA  Line data    Source code
       1                 : /*-------------------------------------------------------------------------
       2                 :  *
       3                 :  * quotes.c
       4                 :  *    string quoting and escaping functions
       5                 :  *
       6                 :  * Portions Copyright (c) 1996-2023, 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 CBC        4300 : escape_single_quotes_ascii(const char *src)
      34                 : {
      35            4300 :     int         len = strlen(src),
      36                 :                 i,
      37                 :                 j;
      38            4300 :     char       *result = malloc(len * 2 + 1);
      39                 : 
      40            4300 :     if (!result)
      41 UBC           0 :         return NULL;
      42                 : 
      43 CBC       80608 :     for (i = 0, j = 0; i < len; i++)
      44                 :     {
      45           76308 :         if (SQL_STR_DOUBLE(src[i], true))
      46              28 :             result[j++] = src[i];
      47           76308 :         result[j++] = src[i];
      48                 :     }
      49            4300 :     result[j] = '\0';
      50            4300 :     return result;
      51                 : }
        

Generated by: LCOV version v1.16-55-g56c0a2a