Some twiddling
- also accept the obsolete application/json-rpc content type - don't quote regular responses - don't separate results with newlines - instead make sure to print a newline upon receiving EOF
This commit is contained in:
parent
0cbcf60992
commit
fdd447a7ea
|
@ -84,6 +84,7 @@ log_message (const char *quote, const char *fmt, ...)
|
||||||
|
|
||||||
// `fatal' is reserved for unexpected failures that would harm further operation
|
// `fatal' is reserved for unexpected failures that would harm further operation
|
||||||
|
|
||||||
|
// TODO: colors (probably copy over from stracepkg)
|
||||||
#define print_fatal(...) log_message ("fatal: ", __VA_ARGS__)
|
#define print_fatal(...) log_message ("fatal: ", __VA_ARGS__)
|
||||||
#define print_error(...) log_message ("error: ", __VA_ARGS__)
|
#define print_error(...) log_message ("error: ", __VA_ARGS__)
|
||||||
#define print_warning(...) log_message ("warning: ", __VA_ARGS__)
|
#define print_warning(...) log_message ("warning: ", __VA_ARGS__)
|
||||||
|
@ -351,7 +352,7 @@ parse_response (struct app_context *ctx, struct str *buf)
|
||||||
if (!s)
|
if (!s)
|
||||||
print_error ("character conversion failed for `%s'", "result");
|
print_error ("character conversion failed for `%s'", "result");
|
||||||
else
|
else
|
||||||
printf ("result: %s\n", s);
|
printf ("%s\n", s);
|
||||||
free (s);
|
free (s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -442,10 +443,11 @@ make_json_rpc_call (struct app_context *ctx,
|
||||||
bool success = false;
|
bool success = false;
|
||||||
if (id)
|
if (id)
|
||||||
{
|
{
|
||||||
|
// TODO: maybe also accept "...; charset=UTF-8"
|
||||||
if (!type)
|
if (!type)
|
||||||
print_warning ("missing `Content-Type' header");
|
print_warning ("missing `Content-Type' header");
|
||||||
else if (strcmp (type, "application/json"))
|
else if (strcmp (type, "application/json")
|
||||||
// FIXME: expect e.g. application/json; charset=UTF-8
|
&& strcmp (type, "application/json-rpc")) // obsolete
|
||||||
print_warning ("unexpected `Content-Type' header: %s", type);
|
print_warning ("unexpected `Content-Type' header: %s", type);
|
||||||
|
|
||||||
success = parse_response (ctx, &buf);
|
success = parse_response (ctx, &buf);
|
||||||
|
@ -560,7 +562,6 @@ fail_parse:
|
||||||
json_decref (args[i]);
|
json_decref (args[i]);
|
||||||
fail:
|
fail:
|
||||||
free (input);
|
free (input);
|
||||||
putchar ('\n');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -673,6 +674,7 @@ main (int argc, char *argv[])
|
||||||
char *encoding = nl_langinfo (CODESET);
|
char *encoding = nl_langinfo (CODESET);
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
// XXX: not quite sure if this is actually desirable
|
// XXX: not quite sure if this is actually desirable
|
||||||
|
// TODO: instead retry with JSON_ENSURE_ASCII
|
||||||
encoding = strdup_printf ("%s//TRANSLIT", encoding);
|
encoding = strdup_printf ("%s//TRANSLIT", encoding);
|
||||||
#endif // __linux__
|
#endif // __linux__
|
||||||
|
|
||||||
|
@ -713,6 +715,7 @@ main (int argc, char *argv[])
|
||||||
process_input (&ctx, line);
|
process_input (&ctx, line);
|
||||||
free (line);
|
free (line);
|
||||||
}
|
}
|
||||||
|
putchar ('\n');
|
||||||
|
|
||||||
char *dir = strdup (history_path);
|
char *dir = strdup (history_path);
|
||||||
(void) mkdir_with_parents (dirname (dir));
|
(void) mkdir_with_parents (dirname (dir));
|
||||||
|
|
Loading…
Reference in New Issue