static void process_js(char *cmd) { s_sjp.char_processor = interrupt_char_processor; v7_val_t v; int res = v7_exec(s_sjp.v7, &v, cmd); if (res == V7_SYNTAX_ERROR) { printf("Syntax error: %s\n", v7_get_parser_error(s_sjp.v7)); } else if (res == V7_STACK_OVERFLOW) { printf("Stack overflow: %s\n", v7_get_parser_error(s_sjp.v7)); } else { if (res == V7_EXEC_EXCEPTION) { printf("Exec error:"); } v7_println(s_sjp.v7, v); #if V7_ENABLE__StackTrace if (res == V7_EXEC_EXCEPTION) { v7_fprint_stack_trace(stdout, s_sjp.v7, v); } #endif } v7_gc(s_sjp.v7, 0 /* full */); }
static void process_js(char *cmd) { s_sjp.char_processor = interrupt_char_processor; char result_str[10]; v7_val_t v; int res = v7_exec(s_sjp.v7, &v, cmd); if (res == V7_SYNTAX_ERROR) { printf("Syntax error: %s\n", v7_get_parser_error(s_sjp.v7)); } else if (res == V7_STACK_OVERFLOW) { printf("Stack overflow: %s\n", v7_get_parser_error(s_sjp.v7)); } else { char *p = v7_to_json(s_sjp.v7, v, result_str, sizeof(result_str)); if (res == V7_EXEC_EXCEPTION) { printf("Exec error:"); } printf("%s\n", p); if (p != result_str) { free(p); } } v7_gc(s_sjp.v7, 0 /* full */); }
static void server_eval(struct espconn *c, void *body, unsigned short size) { char *buf, *resp, *j; enum v7_err err; v7_val_t v; const char *code; buf = malloc(size + 1); snprintf(buf, size + 1, "%.*s", (int) size, body); err = v7_exec(v7, &v, buf); switch (err) { case V7_SYNTAX_ERROR: case V7_EXEC_EXCEPTION: code = "500 Eval error"; break; case V7_OK: code = "200 OK"; break; } switch (err) { case V7_SYNTAX_ERROR: j = malloc(512); strncpy(j, v7_get_parser_error(v7), 512); break; case V7_EXEC_EXCEPTION: case V7_OK: j = v7_to_json(v7, v, buf, sizeof(buf)); break; } int resp_len = strlen(code) + 13 + strlen(j) + 1; resp = malloc(resp_len); snprintf(resp, resp_len, "HTTP/1.1 %s\r\n\r\n%s", code, j); if (j != buf) free(j); free(buf); espconn_sent(c, resp, strlen(resp)); free(resp); }