MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / push_csv_field

Function push_csv_field

lib/csv.c:32–74  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

30static osips_free_t free_f;
31
32static str_list *push_csv_field(const str *field,
33 str_list **record, enum csv_flags parse_flags)
34{
35 str_list *rec;
36 enum csv_flags *flags_holder;
37 int len;
38
39 len = sizeof *rec;
40 if (!*record)
41 len += sizeof *flags_holder;
42
43 rec = malloc_f(len);
44 if (!rec) {
45 LM_ERR("oom\n");
46 return NULL;
47 }
48
49 memset(rec, 0, len);
50
51 if (parse_flags & CSV_DUP_FIELDS) {
52 rec->s.s = malloc_f(field->len + 1);
53 if (!rec->s.s) {
54 free_f(rec);
55 LM_ERR("oom\n");
56 return NULL;
57 }
58 memcpy(rec->s.s, field->s, field->len);
59 rec->s.len = field->len;
60 rec->s.s[field->len] = '\0';
61 } else {
62 rec->s = *field;
63 }
64
65 if (!*record) {
66 flags_holder = (enum csv_flags *)(rec + 1);
67 *flags_holder = parse_flags;
68 *record = rec;
69 } else {
70 (*record)->next = rec;
71 }
72
73 return rec;
74}
75
76csv_record *__parse_csv_record(const str *_in, enum csv_flags parse_flags,
77 unsigned char sep)

Callers 1

__parse_csv_recordFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected