static int process_trimming(const char *input, char **storage, const char *input_end, int fail_when_empty) { const char *left, *right; int trimmed_input_length; left = skip_leading_spaces(input, input_end); right = skip_trailing_spaces(input, input_end - 1); if (right < left) { if (fail_when_empty) return git__throw(GIT_EINVALIDARGS, "Failed to trim. Input is either empty or only contains spaces"); else right = left - 1; } trimmed_input_length = right - left + 1; *storage = git__malloc(trimmed_input_length + 1); if (*storage == NULL) return GIT_ENOMEM; memcpy(*storage, left, trimmed_input_length); (*storage)[trimmed_input_length] = 0; return GIT_SUCCESS; }
static int process_trimming(const char *input, char **storage, const char *input_end, int fail_when_empty) { const char *left, *right; size_t trimmed_input_length; assert(storage); left = skip_leading_spaces(input, input_end); right = skip_trailing_spaces(input, input_end - 1); if (right < left) { if (fail_when_empty) return signature_error("input is either empty of contains only spaces"); right = left - 1; } trimmed_input_length = right - left + 1; *storage = git__malloc(trimmed_input_length + 1); GITERR_CHECK_ALLOC(*storage); memcpy(*storage, left, trimmed_input_length); (*storage)[trimmed_input_length] = 0; return 0; }