#include #include #include int simplessh_is_left(struct simplessh_either *either) { return either->side == LEFT; } int simplessh_get_error(struct simplessh_either *either) { if(either->side != LEFT) { fprintf(stderr, "Error: simplessh_get_error: trying to get the error of a Right element\n"); abort(); } return either->u.error; } void *simplessh_get_value(struct simplessh_either *either) { if(either->side != RIGHT) { fprintf(stderr, "Error: simplessh_get_value: trying to get the value of a Left element\n"); abort(); } else if(either->u.value == NULL) { fprintf(stderr, "Error: simplessh_get_value: element is Right but value has not been set\n"); abort(); } return either->u.value; } void simplessh_free_either_result(struct simplessh_either *either) { struct simplessh_result *result = either->u.value; if(either->side == RIGHT && result != NULL) { if(result->out != NULL) free(result->out); if(result->err != NULL) free(result->err); if(result->exit_signal != NULL) free(result->exit_signal); free(result); } free(either); } void simplessh_free_either_count(struct simplessh_either *either) { if(either->side == RIGHT && either->u.value != NULL) free(either->u.value); free(either); } char *simplessh_get_out(struct simplessh_result *result) { return result->out; } char *simplessh_get_err(struct simplessh_result *result) { return result->err; } int simplessh_get_exit_code(struct simplessh_result *result) { return result->exit_code; } char *simplessh_get_exit_signal(struct simplessh_result *result) { return result->exit_signal; } int simplessh_get_count(int *ptr) { return *ptr; }