Coverage Report

Created: 2026-01-10 06:48

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/w3m/libwc/priv.c
Line
Count
Source
1
2
#include "wc.h"
3
#include "wtf.h"
4
5
Str
6
wc_conv_from_priv1(Str is, wc_ces ces)
7
483
{
8
483
    Str os;
9
483
    wc_uchar *sp = (wc_uchar *)is->ptr;
10
483
    wc_uchar *ep = sp + is->length;
11
483
    wc_uchar *p;
12
483
    wc_ccs ccs = WcCesInfo[WC_CCS_INDEX(ces)].gset[1].ccs;
13
14
818
    for (p = sp; p < ep && *p < 0x80; p++)
15
335
  ;
16
483
    if (p == ep)
17
86
  return is;
18
397
    os = Strnew_size(is->length);
19
397
    if (p > sp)
20
37
  Strcat_charp_n(os, is->ptr, (int)(p - sp));
21
22
8.61M
    for (; p < ep; p++) {
23
8.61M
  if (*p & 0x80)
24
7.87M
      wtf_push(os, ccs, (wc_uint32)*p);
25
735k
  else
26
735k
      Strcat_char(os, (char)*p);
27
8.61M
    }
28
397
    return os;
29
483
}
30
31
Str
32
wc_char_conv_from_priv1(wc_uchar c, wc_status *st)
33
0
{
34
0
    Str os = Strnew_size(1);
35
36
0
    if (c & 0x80)
37
0
  wtf_push(os, st->ces_info->gset[1].ccs, (wc_uint32)c);
38
0
    else
39
0
  Strcat_char(os, (char)c);
40
0
    return os;
41
0
}
42
43
Str
44
wc_conv_from_ascii(Str is, wc_ces ces)
45
1.26k
{
46
1.26k
    Str os;
47
1.26k
    wc_uchar *sp = (wc_uchar *)is->ptr;
48
1.26k
    wc_uchar *ep = sp + is->length;
49
1.26k
    wc_uchar *p;
50
51
5.97k
    for (p = sp; p < ep && *p < 0x80; p++)
52
4.70k
  ;
53
1.26k
    if (p == ep)
54
895
  return is;
55
368
    os = Strnew_size(is->length);
56
368
    if (p > sp)
57
94
  Strcat_charp_n(os, is->ptr, (int)(p - sp));
58
59
1.06M
    for (; p < ep; p++) {
60
1.06M
  if (*p & 0x80)
61
155k
      wtf_push_unknown(os, p, 1);
62
907k
  else
63
907k
      Strcat_char(os, (char)*p);
64
1.06M
    }
65
368
    return os;
66
1.26k
}
67
68
void
69
wc_push_to_raw(Str os, wc_wchar_t cc, wc_status *st)
70
1.07M
{
71
72
1.07M
    switch (cc.ccs) {
73
203
    case WC_CCS_US_ASCII:
74
1.06M
    case WC_CCS_RAW:
75
1.06M
  Strcat_char(os, (char)cc.code);
76
1.07M
    }
77
1.07M
    return;
78
1.07M
}