- code = run_command_opt(RUN_COMMAND_NO_STDIN
- | RUN_COMMAND_STDOUT_TO_STDERR,
- update_hook, refname, old_hex, new_hex, NULL);
+
+ argv = xmalloc(sizeof(*argv) * (2 + argc));
+ argv[0] = hook_name;
+ for (argc = 1, cmd = first_cmd; cmd; cmd = cmd->next) {
+ if (!cmd->error_string) {
+ argv[argc++] = xstrdup(cmd->ref_name);
+ argv[argc++] = xstrdup(sha1_to_hex(cmd->old_sha1));
+ argv[argc++] = xstrdup(sha1_to_hex(cmd->new_sha1));
+ }
+ if (single)
+ break;
+ }
+ argv[argc] = NULL;
+
+ code = run_command_v_opt(argv,
+ RUN_COMMAND_NO_STDIN | RUN_COMMAND_STDOUT_TO_STDERR);
+ while (--argc > 0)
+ free((char*)argv[argc]);
+ free(argv);
+