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:
Přemysl Eric Janouch 2014-09-08 20:38:41 +02:00
parent 0cbcf60992
commit fdd447a7ea
1 changed files with 7 additions and 4 deletions

View File

@ -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));