diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/build.c | 4 | ||||
| -rw-r--r-- | src/build.h | 1 | ||||
| -rw-r--r-- | src/redo-always.c | 18 | ||||
| -rw-r--r-- | src/redo-ifchange.c | 28 | ||||
| -rw-r--r-- | src/redo-ifcreate.c | 18 | ||||
| -rw-r--r-- | src/redo.c | 34 | 
6 files changed, 28 insertions, 75 deletions
diff --git a/src/build.c b/src/build.c index 072451b..b8d4b38 100644 --- a/src/build.c +++ b/src/build.c @@ -498,7 +498,3 @@ int update_target(const char *target, int ident) {  		die("redo: unknown identiier '%c'\n", ident);  	}  } - -bool environment_sane() { -	return getenv("REDO_ROOT") && getenv("REDO_PARENT_TARGET") && getenv("REDO_MAGIC"); -} diff --git a/src/build.h b/src/build.h index 0eae0f3..2111b82 100644 --- a/src/build.h +++ b/src/build.h @@ -14,6 +14,5 @@  extern void add_dep(const char *target, const char *parent, int ident);  extern int update_target(const char *target, int ident);  extern void build_target(const char *target); -extern bool environment_sane();  #endif diff --git a/src/redo-always.c b/src/redo-always.c deleted file mode 100644 index 0e1d849..0000000 --- a/src/redo-always.c +++ /dev/null @@ -1,18 +0,0 @@ -/* redo-always.c - * - * Copyright (c) 2014 Tharre - * - * This software may be modified and distributed under the terms - * of the MIT license.  See the LICENSE file for details. - */ - -#include <stddef.h> - -#include "build.h" - -int main(int argc, char *argv[]) { -	for (int i = 1; i < argc; ++i) { -		update_target(argv[i], 'a'); -		add_dep(argv[i], NULL, 'a'); -	} -} diff --git a/src/redo-ifchange.c b/src/redo-ifchange.c deleted file mode 100644 index d7b4af0..0000000 --- a/src/redo-ifchange.c +++ /dev/null @@ -1,28 +0,0 @@ -/* redo-ifchange.c - * - * Copyright (c) 2014 Tharre - * - * This software may be modified and distributed under the terms - * of the MIT license.  See the LICENSE file for details. - */ - -#include <stdio.h> -#include <stdbool.h> - -#include "build.h" -#include "dbg.h" - -int main(int argc, char *argv[]) { -	if (!environment_sane()) { -		fprintf(stderr, "redo: environment variables are missing, " -				"please use %s only in do scripts.\n", argv[0]); -		exit(1); -	} - -	for (int i = 1; i < argc; ++i) { -		update_target(argv[i], 'c'); -		add_dep(argv[i], NULL, 'c'); -	} - -	return 0; -} diff --git a/src/redo-ifcreate.c b/src/redo-ifcreate.c deleted file mode 100644 index 77e51cc..0000000 --- a/src/redo-ifcreate.c +++ /dev/null @@ -1,18 +0,0 @@ -/* redo-ifcreate.c - * - * Copyright (c) 2014 Tharre - * - * This software may be modified and distributed under the terms - * of the MIT license.  See the LICENSE file for details. - */ - -#include <stddef.h> - -#include "build.h" - -int main(int argc, char *argv[]) { -	for (int i = 1; i < argc; ++i) { -		update_target(argv[i], 'e'); -		add_dep(argv[i], NULL, 'e'); -	} -} @@ -27,6 +27,10 @@ static inline unsigned digits(unsigned n) {  }  void prepare_env() { +	if (getenv("REDO_ROOT") && getenv("REDO_PARENT_TARGET") +	    && getenv("REDO_MAGIC")) +		return; +  	/* create the dependency store if it doesn't already exist */  	if (mkdirp(".redo") && mkdirp(".redo/deps"))  		fprintf(stderr, "redo: creating dependency store ...\n"); @@ -36,7 +40,7 @@ void prepare_env() {  	if (!cwd)  		diem("redo: failed to obtain cwd");  	if (setenv("REDO_ROOT", cwd, 0)) -		diem("redo: failed to setenv REDO_ROOT to %s", cwd); +		diem("redo: failed to setenv() REDO_ROOT to %s", cwd);  	free(cwd);  	/* set REDO_MAGIC */ @@ -50,12 +54,30 @@ void prepare_env() {  int main(int argc, char *argv[]) {  	prepare_env(); -	if (argc < 2) { -		update_target("all", 'a'); +	if (!strcmp(argv[0], "redo")) { +		if (argc < 2) { +			update_target("all", 'a'); +		} else { +			for (int i = 1; i < argc; ++i) +				update_target(argv[i], 'a'); +		} +		return EXIT_SUCCESS;  	} else { -		int i; -		for (i = 1; i < argc; ++i) { -			update_target(argv[i], 'a'); +		char ident; +		if      (!strcmp(argv[0], "redo-ifchange")) +			ident = 'c'; +		else if (!strcmp(argv[0], "redo-ifcreate")) +			ident = 'e'; +		else if (!strcmp(argv[0], "redo-always")) +			ident = 'a'; +		else +			die("argv set to unkown value\n"); + +		for (int i = 1; i < argc; ++i) { +			update_target(argv[i], ident); +			add_dep(argv[i], NULL, ident);  		} + +		return EXIT_SUCCESS;  	}  }  | 
