diff options
author | Tharre <tharre3@gmail.com> | 2015-01-05 19:45:19 +0100 |
---|---|---|
committer | Tharre <tharre3@gmail.com> | 2015-01-05 19:45:19 +0100 |
commit | 874c529ecb640f7541dc122e584376fd2acdec8d (patch) | |
tree | daf60204615742af3e76f58d0d0a36dca801331e | |
parent | 05e19981beb0ee018e71450d78592cd0bc629d81 (diff) | |
download | redo-874c529ecb640f7541dc122e584376fd2acdec8d.tar.gz redo-874c529ecb640f7541dc122e584376fd2acdec8d.tar.xz redo-874c529ecb640f7541dc122e584376fd2acdec8d.zip |
Make redo-* commands fail if called from outside
-rw-r--r-- | src/redo.c | 21 |
1 files changed, 14 insertions, 7 deletions
@@ -52,18 +52,19 @@ void prepare_env() { } int main(int argc, char *argv[]) { - prepare_env(); char *argv_base = xbasename(argv[0]); if (!strcmp(argv_base, "redo")) { + prepare_env(); if (argc < 2) { update_target("all", 'a'); } else { for (int i = 1; i < argc; ++i) update_target(argv[i], 'a'); } - return EXIT_SUCCESS; } else { + char *parent = getenv("REDO_PARENT_TARGET"); + char ident; if (!strcmp(argv_base, "redo-ifchange")) ident = 'c'; @@ -74,11 +75,17 @@ int main(int argc, char *argv[]) { else die("redo: argv set to unkown value\n"); - for (int i = 1; i < argc; ++i) { - update_target(argv[i], ident); - add_dep(argv[i], NULL, ident); - } + if (!parent) + die("%s must be called inside a .do script\n", argv[0]); - return EXIT_SUCCESS; + if (ident == 'a') + add_dep(parent, parent, ident); + else + for (int i = 1; i < argc; ++i) { + update_target(argv[i], ident); + add_dep(argv[i], parent, ident); + } } + + return EXIT_SUCCESS; } |