LCOV - code coverage report
Current view: top level - src/port - quotes.c (source / functions) Hit Total Coverage
Test: PostgreSQL Lines: 9 11 81.8 %
Date: 2017-09-29 13:40:31 Functions: 1 1 100.0 %
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-2017, 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 creating recovery.conf.
      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          14 : escape_single_quotes_ascii(const char *src)
      34             : {
      35          14 :     int         len = strlen(src),
      36             :                 i,
      37             :                 j;
      38          14 :     char       *result = malloc(len * 2 + 1);
      39             : 
      40          14 :     if (!result)
      41           0 :         return NULL;
      42             : 
      43         346 :     for (i = 0, j = 0; i < len; i++)
      44             :     {
      45         332 :         if (SQL_STR_DOUBLE(src[i], true))
      46           0 :             result[j++] = src[i];
      47         332 :         result[j++] = src[i];
      48             :     }
      49          14 :     result[j] = '\0';
      50          14 :     return result;
      51             : }

Generated by: LCOV version 1.11