aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTharre <tharre3@gmail.com>2015-01-09 08:53:58 +0100
committerTharre <tharre3@gmail.com>2015-01-09 08:53:58 +0100
commita5277a4901ffa93e8b7996b9e3dd030b72551210 (patch)
tree41ecbab47908f0a230a55163ea011cfeda38e298 /src
parent874c529ecb640f7541dc122e584376fd2acdec8d (diff)
downloadredo-a5277a4901ffa93e8b7996b9e3dd030b72551210.tar.gz
redo-a5277a4901ffa93e8b7996b9e3dd030b72551210.tar.xz
redo-a5277a4901ffa93e8b7996b9e3dd030b72551210.zip
Randomize argument processing order
Diffstat (limited to 'src')
-rw-r--r--src/redo.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/redo.c b/src/redo.c
index 25158db..84eca0b 100644
--- a/src/redo.c
+++ b/src/redo.c
@@ -44,7 +44,6 @@ void prepare_env() {
free(cwd);
/* set REDO_MAGIC */
- srand(time(NULL));
char magic_str[digits(UINT_MAX) + 1];
sprintf(magic_str, "%u", rand());
if (setenv("REDO_MAGIC", magic_str, 0))
@@ -52,6 +51,7 @@ void prepare_env() {
}
int main(int argc, char *argv[]) {
+ srand(time(NULL));
char *argv_base = xbasename(argv[0]);
if (!strcmp(argv_base, "redo")) {
@@ -66,6 +66,7 @@ int main(int argc, char *argv[]) {
char *parent = getenv("REDO_PARENT_TARGET");
char ident;
+ char **temp;
if (!strcmp(argv_base, "redo-ifchange"))
ident = 'c';
else if (!strcmp(argv_base, "redo-ifcreate"))
@@ -82,8 +83,14 @@ int main(int argc, char *argv[]) {
add_dep(parent, parent, ident);
else
for (int i = 1; i < argc; ++i) {
- update_target(argv[i], ident);
- add_dep(argv[i], parent, ident);
+ do {
+ temp = &argv[rand() % (argc-1) + 1];
+ } while (!*temp);
+
+ update_target(*temp, ident);
+ add_dep(*temp, parent, ident);
+
+ *temp = NULL;
}
}