aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/build.c4
-rw-r--r--src/build.h1
-rw-r--r--src/redo-always.c18
-rw-r--r--src/redo-ifchange.c28
-rw-r--r--src/redo-ifcreate.c18
-rw-r--r--src/redo.c34
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');
- }
-}
diff --git a/src/redo.c b/src/redo.c
index a62f1a6..b460b55 100644
--- a/src/redo.c
+++ b/src/redo.c
@@ -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;
}
}