static int skb(int argc, char *argv[]) { static bool init = false; if(argc < 2) { printf("Usage: %s <program>\n", argv[0]); return 1; } if(!init) { skb_client_connect(); init = true; } char *result = NULL, *str_err = NULL; int32_t int_err; skb_evaluate(argv[1], &result, &str_err, &int_err); if (int_err != 0 || (str_err != NULL && str_err[0] != '\0')) { printf("SKB error returned: %"PRIu32" %s\n", int_err, str_err); } else { printf("SKB returned: %s\n", result); } free(result); free(str_err); return 0; }
errval_t skb_execute(char *goal) { int32_t error; char *result, *error_out; errval_t err = skb_evaluate(goal, &result, &error_out, &error); if (err_is_fail(err)) { return err_push(err, SKB_ERR_EVALUATE); } error_code = error; strncpy(output, result, OUTPUT_SIZE); strncpy(error_output, error_out, OUTPUT_SIZE); free(result); free(error_out); if (error != 0) { return err_push(err, SKB_ERR_EXECUTION); } return err; }