From 29fb2912ef6100a9659c2f065c683424f2a964a4 Mon Sep 17 00:00:00 2001 From: Tharre Date: Wed, 16 Sep 2015 19:42:16 +0200 Subject: Make $3 an absolute path --- src/build.c | 3 ++- tests/t0010-check_args.t | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/build.c b/src/build.c index 7bf426f..9702bad 100644 --- a/src/build.c +++ b/src/build.c @@ -50,6 +50,7 @@ static void free_do_attr(do_attr *thing); static char **parse_shebang(char *target, char *doscript, char *temp_output); static char **parsecmd(char *cmd, size_t *i, size_t keep_free); static char *get_relpath(const char *target); +static char *xrealpath(const char *path); static char *get_dep_path(const char *target); static void write_dep_header(dep_info *dep); static int handle_ident(dep_info *dep, int ident); @@ -105,7 +106,7 @@ static int build_target(dep_info *dep) { free(dirc); char **argv = parse_shebang(xbasename(dep->target), - xbasename(doscripts->chosen), xbasename(temp_output)); + xbasename(doscripts->chosen), xrealpath(temp_output)); /* set "REDO_PARENT_TARGET" */ if (setenv("REDO_PARENT_TARGET", dep->target, 1)) diff --git a/tests/t0010-check_args.t b/tests/t0010-check_args.t index feae935..ca6d28f 100755 --- a/tests/t0010-check_args.t +++ b/tests/t0010-check_args.t @@ -16,8 +16,19 @@ cat > "d/check_args.ext1.ext2.do" <<'EOF' [ "$3" != "check_args.ext1.ext2" ] EOF +cat > "absolute_paths.do" <<'EOF' +#!/bin/sh -e +cd /tmp +echo "test" > $3 +EOF + test_expect_success "check arguments" " redo d/check_args.ext1.ext2 " +test_expect_success "\$3 should be absolute" " + redo absolute_paths && + [ -e absolute_paths ] +" + test_done -- cgit v1.2.3-70-g09d2