const out_val *gen_expr_style_assign_compound(const expr *e, out_ctx *octx) { IGNORE_PRINTGEN(gen_expr(e->lhs->lhs, octx)); stylef(" %s= ", op_to_str(e->bits.compoundop.op)); IGNORE_PRINTGEN(gen_expr(e->rhs, octx)); return NULL; }
void gen_expr_str_assign_compound(expr *e) { idt_printf("compound %s%s-assignment expr:\n", e->assign_is_post ? "post-" : "", op_to_str(e->op)); idt_printf("assign to:\n"); gen_str_indent++; print_expr(e->lhs); gen_str_indent--; idt_printf("assign from:\n"); gen_str_indent++; print_expr(e->rhs); gen_str_indent--; }
void dump_expr_assign_compound(const expr *e, dump *ctx) { dump_desc_expr_newline(ctx, "compound assignment", e, 0); dump_printf_indent(ctx, 0, " %s%s=", e->assign_is_post ? "post-assignment " : "", op_to_str(e->bits.compoundop.op)); if(e->bits.compoundop.upcast_ty){ dump_printf_indent(ctx, 0, " upcast='%s'", type_to_str(e->bits.compoundop.upcast_ty)); } dump_printf_indent(ctx, 0, "\n"); dump_inc(ctx); dump_expr(e->lhs, ctx); dump_expr(e->rhs, ctx); dump_dec(ctx); }
static char *arg_to_str(struct event_filter *filter, struct filter_arg *arg) { char *str; switch (arg->type) { case FILTER_ARG_BOOLEAN: str = malloc_or_die(6); if (arg->boolean.value) strcpy(str, "TRUE"); else strcpy(str, "FALSE"); return str; case FILTER_ARG_OP: return op_to_str(filter, arg); case FILTER_ARG_NUM: return num_to_str(filter, arg); case FILTER_ARG_STR: return str_to_str(filter, arg); case FILTER_ARG_VALUE: return val_to_str(filter, arg); case FILTER_ARG_FIELD: return field_to_str(filter, arg); case FILTER_ARG_EXP: return exp_to_str(filter, arg); default: /* ?? */ return NULL; } }
void asm_new(enum asm_type t, void *p) { switch(t){ case asm_assign: asm_temp(1, "pop rax"); break; case asm_call: asm_temp(1, "call %s", (const char *)p); break; case asm_load_ident: asm_temp(1, "load %s", (const char *)p); break; case asm_load_val: asm_temp(1, "load val %d", *(int *)p); break; case asm_op: asm_temp(1, "%s", op_to_str(*(enum op_type *)p)); break; case asm_pop: asm_temp(1, "pop"); break; case asm_push: asm_temp(1, "push"); break; case asm_addrof: fprintf(stderr, "BUH?? (addrof)\n"); break; } }
int handle_lua_uri(FCGX_Request *request) { char cmd[1024]; char token[1024]; char arg[1024]; enum lua_operation lo; int id; // token ID, parsed as an int char *uri = FCGX_GetParam("REQUEST_URI", request->envp) + strlen("/lua/"); parse_lua_uri(uri, cmd, token, arg, sizeof(cmd)); lo = determine_lua_operation(cmd, token, arg); fprintf(stderr, "Raw URI: %s Command: %s Token: %s Arg: %s Lua Operation: %s\n", uri, cmd, token, arg, op_to_str(lo)); if (lo == LUA_EVAL) return nlua_eval(request); else if(lo == LUA_OPEN) { id = nlua_open(request, token, arg); if (id < 0) return make_error(request, "Unable to open LUA environment", -id); FCGX_FPrintF(request->out, "Content-Type: text/html\r\n" "\r\n" "%d\n", id); } else if (lo == LUA_CLOSE) { id = strtoul(token, NULL, 16); if (id > MAX_THREAD_ID) return make_error(request, "Invalid thread ID specified", EINVAL); nlua_close(request, id); FCGX_FPrintF(request->out, "Content-Type: text/html\r\n" "\r\n" "OK\n"); } else if (lo == LUA_WEBIO) { id = strtoul(token, NULL, 0); if (id > MAX_THREAD_ID) return make_error(request, "Invalid thread ID specified", EINVAL); if (!nlua_pool_status[id]) return make_error(request, "Thread not running", EINVAL); return nlua_webio(request, arg, id); } else if (lo == LUA_LIST) { FCGX_FPrintF(request->out, "Content-Type: text/plain\r\n\r\n"); for (id=0; id<MAX_THREAD_ID; id++) if (nlua_pool_status[id]) FCGX_FPrintF(request->out, "%d\r\n", id); } else if (lo == LUA_UNKNOWN) return make_error(request, "No valid LUA command specified", EINVAL); return 0; }
void gen_expr_style_assign_compound(expr *e) { gen_expr(e->lhs->lhs); stylef(" %s= ", op_to_str(e->op)); gen_expr(e->rhs); }