Staging
v0.5.1
v0.5.1
https://github.com/git/git
Revision 0f8e831356d4f1a34baf46bb1a6b2d4c89ec9cb8 authored by Junio C Hamano on 18 May 2016, 21:45:08 UTC, committed by Junio C Hamano on 18 May 2016, 22:32:41 UTC
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 6610669
Tip revision: 0f8e831356d4f1a34baf46bb1a6b2d4c89ec9cb8 authored by Junio C Hamano on 18 May 2016, 21:45:08 UTC
Git 2.8.3
Git 2.8.3
Tip revision: 0f8e831
test-run-command.c
/*
* test-run-command.c: test run command API.
*
* (C) 2009 Ilari Liusvaara <ilari.liusvaara@elisanet.fi>
*
* This code is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include "git-compat-util.h"
#include "run-command.h"
#include "argv-array.h"
#include "strbuf.h"
#include <string.h>
#include <errno.h>
static int number_callbacks;
static int parallel_next(struct child_process *cp,
struct strbuf *err,
void *cb,
void **task_cb)
{
struct child_process *d = cb;
if (number_callbacks >= 4)
return 0;
argv_array_pushv(&cp->args, d->argv);
strbuf_addf(err, "preloaded output of a child\n");
number_callbacks++;
return 1;
}
static int no_job(struct child_process *cp,
struct strbuf *err,
void *cb,
void **task_cb)
{
strbuf_addf(err, "no further jobs available\n");
return 0;
}
static int task_finished(int result,
struct strbuf *err,
void *pp_cb,
void *pp_task_cb)
{
strbuf_addf(err, "asking for a quick stop\n");
return 1;
}
int main(int argc, char **argv)
{
struct child_process proc = CHILD_PROCESS_INIT;
int jobs;
if (argc < 3)
return 1;
proc.argv = (const char **)argv + 2;
if (!strcmp(argv[1], "start-command-ENOENT")) {
if (start_command(&proc) < 0 && errno == ENOENT)
return 0;
fprintf(stderr, "FAIL %s\n", argv[1]);
return 1;
}
if (!strcmp(argv[1], "run-command"))
exit(run_command(&proc));
jobs = atoi(argv[2]);
proc.argv = (const char **)argv + 3;
if (!strcmp(argv[1], "run-command-parallel"))
exit(run_processes_parallel(jobs, parallel_next,
NULL, NULL, &proc));
if (!strcmp(argv[1], "run-command-abort"))
exit(run_processes_parallel(jobs, parallel_next,
NULL, task_finished, &proc));
if (!strcmp(argv[1], "run-command-no-jobs"))
exit(run_processes_parallel(jobs, no_job,
NULL, task_finished, &proc));
fprintf(stderr, "check usage\n");
return 1;
}
Computing file changes ...