LCOV - code coverage report
Current view: top level - src/backend/utils/mb/conversion_procs/utf8_and_euc_cn - utf8_and_euc_cn.c (source / functions) Coverage Total Hit
Test: PostgreSQL 19devel Lines: 100.0 % 19 19
Test Date: 2026-02-17 17:20:33 Functions: 100.0 % 5 5
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /*-------------------------------------------------------------------------
       2              :  *
       3              :  *    EUC_CN <--> UTF8
       4              :  *
       5              :  * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
       6              :  * Portions Copyright (c) 1994, Regents of the University of California
       7              :  *
       8              :  * IDENTIFICATION
       9              :  *    src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/utf8_and_euc_cn.c
      10              :  *
      11              :  *-------------------------------------------------------------------------
      12              :  */
      13              : 
      14              : #include "postgres.h"
      15              : #include "fmgr.h"
      16              : #include "mb/pg_wchar.h"
      17              : #include "../../Unicode/euc_cn_to_utf8.map"
      18              : #include "../../Unicode/utf8_to_euc_cn.map"
      19              : 
      20            3 : PG_MODULE_MAGIC_EXT(
      21              :                     .name = "utf8_and_euc_cn",
      22              :                     .version = PG_VERSION
      23              : );
      24              : 
      25            3 : PG_FUNCTION_INFO_V1(euc_cn_to_utf8);
      26            3 : PG_FUNCTION_INFO_V1(utf8_to_euc_cn);
      27              : 
      28              : /* ----------
      29              :  * conv_proc(
      30              :  *      INTEGER,    -- source encoding id
      31              :  *      INTEGER,    -- destination encoding id
      32              :  *      CSTRING,    -- source string (null terminated C string)
      33              :  *      CSTRING,    -- destination string (null terminated C string)
      34              :  *      INTEGER,    -- source string length
      35              :  *      BOOL        -- if true, don't throw an error if conversion fails
      36              :  * ) returns INTEGER;
      37              :  *
      38              :  * Returns the number of bytes successfully converted.
      39              :  * ----------
      40              :  */
      41              : Datum
      42            3 : euc_cn_to_utf8(PG_FUNCTION_ARGS)
      43              : {
      44            3 :     unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2);
      45            3 :     unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
      46            3 :     int         len = PG_GETARG_INT32(4);
      47            3 :     bool        noError = PG_GETARG_BOOL(5);
      48              :     int         converted;
      49              : 
      50            3 :     CHECK_ENCODING_CONVERSION_ARGS(PG_EUC_CN, PG_UTF8);
      51              : 
      52            3 :     converted = LocalToUtf(src, len, dest,
      53              :                            &euc_cn_to_unicode_tree,
      54              :                            NULL, 0,
      55              :                            NULL,
      56              :                            PG_EUC_CN,
      57              :                            noError);
      58              : 
      59            3 :     PG_RETURN_INT32(converted);
      60              : }
      61              : 
      62              : Datum
      63            3 : utf8_to_euc_cn(PG_FUNCTION_ARGS)
      64              : {
      65            3 :     unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2);
      66            3 :     unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
      67            3 :     int         len = PG_GETARG_INT32(4);
      68            3 :     bool        noError = PG_GETARG_BOOL(5);
      69              :     int         converted;
      70              : 
      71            3 :     CHECK_ENCODING_CONVERSION_ARGS(PG_UTF8, PG_EUC_CN);
      72              : 
      73            3 :     converted = UtfToLocal(src, len, dest,
      74              :                            &euc_cn_from_unicode_tree,
      75              :                            NULL, 0,
      76              :                            NULL,
      77              :                            PG_EUC_CN,
      78              :                            noError);
      79              : 
      80            3 :     PG_RETURN_INT32(converted);
      81              : }
        

Generated by: LCOV version 2.0-1