projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update draft release notes to 1.8.2
[git.git]
/
run-command.c
diff --git
a/run-command.c
b/run-command.c
index 04712191e8acfbf000c526a5b1b0a80541e8e174..07e27ff4c829bf4e5dffbc61ac4f86f757e121c4 100644
(file)
--- a/
run-command.c
+++ b/
run-command.c
@@
-274,6
+274,7
@@
int start_command(struct child_process *cmd)
int need_in, need_out, need_err;
int fdin[2], fdout[2], fderr[2];
int failed_errno = failed_errno;
int need_in, need_out, need_err;
int fdin[2], fdout[2], fderr[2];
int failed_errno = failed_errno;
+ char *str;
/*
* In case of errors we must keep the promise to close FDs
/*
* In case of errors we must keep the promise to close FDs
@@
-286,6
+287,7
@@
int start_command(struct child_process *cmd)
failed_errno = errno;
if (cmd->out > 0)
close(cmd->out);
failed_errno = errno;
if (cmd->out > 0)
close(cmd->out);
+ str = "standard input";
goto fail_pipe;
}
cmd->in = fdin[1];
goto fail_pipe;
}
cmd->in = fdin[1];
@@
-301,6
+303,7
@@
int start_command(struct child_process *cmd)
close_pair(fdin);
else if (cmd->in)
close(cmd->in);
close_pair(fdin);
else if (cmd->in)
close(cmd->in);
+ str = "standard output";
goto fail_pipe;
}
cmd->out = fdout[0];
goto fail_pipe;
}
cmd->out = fdout[0];
@@
-318,9
+321,10
@@
int start_command(struct child_process *cmd)
close_pair(fdout);
else if (cmd->out)
close(cmd->out);
close_pair(fdout);
else if (cmd->out)
close(cmd->out);
+ str = "standard error";
fail_pipe:
fail_pipe:
- error("cannot create pipe for %s: %s",
- cmd->argv[0], strerror(failed_errno));
+ error("cannot create
%s
pipe for %s: %s",
+
str,
cmd->argv[0], strerror(failed_errno));
errno = failed_errno;
return -1;
}
errno = failed_errno;
return -1;
}
@@
-735,6
+739,15
@@
int finish_async(struct async *async)
#endif
}
#endif
}
+char *find_hook(const char *name)
+{
+ char *path = git_path("hooks/%s", name);
+ if (access(path, X_OK) < 0)
+ path = NULL;
+
+ return path;
+}
+
int run_hook(const char *index_file, const char *name, ...)
{
struct child_process hook;
int run_hook(const char *index_file, const char *name, ...)
{
struct child_process hook;
@@
-744,11
+757,13
@@
int run_hook(const char *index_file, const char *name, ...)
va_list args;
int ret;
va_list args;
int ret;
- if (access(git_path("hooks/%s", name), X_OK) < 0)
+ p = find_hook(name);
+ if (!p)
return 0;
return 0;
+ argv_array_push(&argv, p);
+
va_start(args, name);
va_start(args, name);
- argv_array_push(&argv, git_path("hooks/%s", name));
while ((p = va_arg(args, const char *)))
argv_array_push(&argv, p);
va_end(args);
while ((p = va_arg(args, const char *)))
argv_array_push(&argv, p);
va_end(args);