Coverage Report

Created: 2026-10-16 06:48

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/postgres/src/port/quotes.c
Line
Count
Source
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
escape_single_quotes_ascii(const char *src)
34
0
{
35
0
  int     len = strlen(src),
36
0
        i,
37
0
        j;
38
0
  char     *result = malloc(len * 2 + 1);
39
40
0
  if (!result)
41
0
    return NULL;
42
43
0
  for (i = 0, j = 0; i < len; i++)
44
0
  {
45
0
    if (SQL_STR_DOUBLE(src[i], true))
46
0
      result[j++] = src[i];
47
0
    result[j++] = src[i];
48
0
  }
49
0
  result[j] = '\0';
50
0
  return result;
51
0
}