Skip to content

Commit 3487f7a

Browse files
committed
update k2v3
1 parent a82a1ee commit 3487f7a

2 files changed

Lines changed: 44 additions & 3 deletions

File tree

v3/k2v3.c

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,15 +1053,15 @@ char *int_to_k2v3(const char *_Nonnull key, int val)
10531053
}
10541054
return ret;
10551055
}
1056-
char *long_to_k2v3(const char *_Nonnull key, long val)
1056+
char *long_to_k2v3(const char *_Nonnull key, long long val)
10571057
{
10581058
if (key == NULL) {
10591059
return NULL;
10601060
}
10611061
size_t max_len = strlen(key) + 64; // Safe upper bound for long
10621062
char *ret = malloc(max_len);
10631063
if (ret) {
1064-
snprintf(ret, max_len, "%s=\"%ld\"\n", key, val);
1064+
snprintf(ret, max_len, "%s=\"%lld\"\n", key, val);
10651065
}
10661066
return ret;
10671067
}
@@ -1203,3 +1203,39 @@ char *float_array_to_k2v3(const char *_Nonnull key, float *_Nonnull val, int len
12031203

12041204
return buf;
12051205
}
1206+
char *long_array_to_k2v3(const char *_Nonnull key, long long *_Nonnull val, int len)
1207+
{
1208+
if (key == NULL) {
1209+
return NULL;
1210+
}
1211+
if (len == 0 || val == NULL) {
1212+
size_t size = strlen(key) + 5;
1213+
char *ret = malloc(size);
1214+
if (ret) {
1215+
snprintf(ret, size, "%s=[]\n", key);
1216+
}
1217+
return ret;
1218+
}
1219+
1220+
size_t max_size = strlen(key) + ((size_t)len * 64) + 5; // 64 per long + padding
1221+
char *buf = malloc(max_size);
1222+
if (!buf) {
1223+
return NULL;
1224+
}
1225+
1226+
char *ptr = buf;
1227+
ptr += sprintf(ptr, "%s=[", key);
1228+
1229+
for (int i = 0; i < len; i++) {
1230+
ptr += sprintf(ptr, "\"%lld\"", val[i]);
1231+
if (i != len - 1) {
1232+
*ptr++ = ',';
1233+
}
1234+
}
1235+
1236+
*ptr++ = ']';
1237+
*ptr++ = '\n';
1238+
*ptr = '\0';
1239+
1240+
return buf;
1241+
}

v3/k2v3.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,13 @@ enum K2V3_ERRNO {
7777
K2V3_RECOVERABLE,
7878
K2V3_UNRECOVERABLE,
7979
};
80+
// -1 for query, 0 for false, 1 for true.
8081
bool k2v3_stop_at_warning(int req);
82+
// -1 for query, 0 for false, 1 for true.
8183
bool k2v3_show_warning(int req);
84+
// Follow enum definitions in k2v3_errno.
8285
enum K2V3_ERRNO k2v3_errno(enum K2V3_ERRNO req);
86+
// Warning: when this happen, this lib has fully internal error and you should panic yourself.
8387
extern thread_local jmp_buf k2v3_jmp;
8488
#define k2v3_error(...) \
8589
do { \
@@ -135,9 +139,10 @@ char *char_to_k2v3(const char *_Nonnull key, const char *val);
135139
char *int_to_k2v3(const char *_Nonnull key, int val);
136140
char *bool_to_k2v3(const char *_Nonnull key, bool val);
137141
char *float_to_k2v3(const char *_Nonnull key, float val);
138-
char *long_to_k2v3(const char *_Nonnull key, long val);
142+
char *long_to_k2v3(const char *_Nonnull key, long long val);
139143
char *char_array_to_k2v3(const char *_Nonnull key, char *const *_Nonnull val, int len);
140144
char *int_array_to_k2v3(const char *_Nonnull key, int *_Nonnull val, int len);
141145
char *float_array_to_k2v3(const char *_Nonnull key, float *_Nonnull val, int len);
146+
char *long_array_to_k2v3(const char *_Nonnull key, long long *_Nonnull val, int len);
142147
char *k2v3_add_config_func(char *_Nullable buf, char *_Nonnull tmp);
143148
#define k2v3_add_config(type, __k2v3_buf, ...) k2v3_add_config_func(__k2v3_buf, type##_to_k2v3(__VA_ARGS__))

0 commit comments

Comments
 (0)