Jiang Xin <worldhello....@gmail.com> writes:

> diff --git a/test-path-utils.c b/test-path-utils.c
> index 0092cb..18267 100644
> --- a/test-path-utils.c
> +++ b/test-path-utils.c
> @@ -1,6 +1,19 @@
>  #include "cache.h"
>  #include "string-list.h"
>  
> +#define PARSE_ARGV_STRING(var, input) do { \
> +     if (!strcmp(input, "<null>")) { \
> +             var = NULL; \
> +     } else if (!strcmp(input, "<empty>")) { \
> +             var = ""; \
> +     } else if (*input == '<' || *input == '(') { \
> +             fprintf(stderr, "Bad value: %s\n", input); \
> +             return 1; \
> +     } else { \
> +             var = input; \
> +     } \
> +} while (0)

Yuck. Why does it have to be a macro like this?  I do not think
"because we may return" justifies it.

>  /*
>   * A "string_list_each_func_t" function that normalizes an entry from
>   * GIT_CEILING_DIRECTORIES.  If the path is unusable for some reason,
> @@ -103,6 +116,18 @@ int main(int argc, char **argv)
>               return 0;
>       }
>  
> +     if (argc == 4 && !strcmp(argv[1], "relative_path")) {
> +             const char *abs, *base, *rel;
> +             PARSE_ARGV_STRING(abs, argv[2]);
> +             PARSE_ARGV_STRING(base, argv[3]);
> +             rel = relative_path(abs, base);
> +             if (!rel)
> +                     puts("(null)");
> +             else
> +                     puts(strlen(rel) > 0 ? rel : "(empty)");
> +             return 0;
> +     }
> +
>       fprintf(stderr, "%s: unknown function name: %s\n", argv[0],
>               argv[1] ? argv[1] : "(there was none)");
>       return 1;
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to