Skip to content

Commit 0fd5f9b

Browse files
committed
Fix ankiconnect error message
1 parent e288578 commit 0fd5f9b

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

src/ankiconnectc.c

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,32 @@ static char *json_escape_str(const char *str) {
173173

174174
return sb_steal_str(&sb);
175175
}
176-
/* END UTILS */
176+
/* ------ END UTILS ------------ */
177177

178178
typedef size_t (*ResponseFunc)(char *ptr, size_t len, size_t nmemb, void *userdata);
179179

180+
void ac_print_ankicard(ankicard ac) {
181+
puts("Ankicard:");
182+
printf("deck: %s\n", ac.deck);
183+
printf("notetype: %s\n", ac.notetype);
184+
printf("Number of fields: %li\n", ac.num_fields);
185+
printf("Fieldnames: [");
186+
for (size_t i = 0; i < ac.num_fields; i++) {
187+
if (i)
188+
putchar(',');
189+
printf("%s", ac.fieldnames[i]);
190+
}
191+
puts("]");
192+
printf("Contents: \n");
193+
for (size_t i = 0; i < ac.num_fields; i++)
194+
printf("%li: %s\n", i, ac.fieldentries[i]);
195+
if (ac.tags) {
196+
for (char **tagptr = ac.tags; *tagptr; tagptr++)
197+
printf("%s", *tagptr);
198+
} else
199+
puts("Tags: none");
200+
}
201+
180202
void ankicard_free(ankicard ac) {
181203
free(ac.deck);
182204
free(ac.notetype);
@@ -341,8 +363,11 @@ static size_t check_add_response(char *ptr, size_t len, size_t nmemb, void *user
341363

342364
if (strstr(ptr, "\"error\": null"))
343365
*ret = (retval_s){.ok = true};
344-
else
345-
*ret = (retval_s){.data.string = ptr, .ok = false};
366+
else {
367+
char *err = strndup(ptr, nmemb);
368+
*ret = (retval_s){.data.string = err, .ok = false};
369+
// TODO: This is a memory leak
370+
}
346371

347372
return nmemb;
348373
}

0 commit comments

Comments
 (0)