Fix bugs causing arguments to not be passed to lua scripts 0.5.1
authorJ. Ali Harlow <ali@juiblex.co.uk>
Fri Jan 27 08:12:19 2012 +0000 (2012-01-27)
changeset 4065ab137def3d1
parent 405 f960eb19dca2
child 407 925e32dcde0f
child 408 23c1f46d6020
Fix bugs causing arguments to not be passed to lua scripts
librazor/razor.c
librazor/root.c
librazor/util.c
src/test-driver.c
     1.1 --- a/librazor/razor.c	Fri Jan 27 07:55:30 2012 +0000
     1.2 +++ b/librazor/razor.c	Fri Jan 27 08:12:19 2012 +0000
     1.3 @@ -237,6 +237,7 @@
     1.4  	}
     1.5  
     1.6  	set->lock_fd = -1;
     1.7 +	set->ref_count = 1;
     1.8  	if (razor_set_bind_sections(set, atomic, filename)) {
     1.9  		free(set);
    1.10  		return NULL;
     2.1 --- a/librazor/root.c	Fri Jan 27 07:55:30 2012 +0000
     2.2 +++ b/librazor/root.c	Fri Jan 27 08:12:19 2012 +0000
     2.3 @@ -87,7 +87,7 @@
     2.4  	struct stat buf;
     2.5  	struct razor_set *set;
     2.6  	struct razor_atomic *atomic;
     2.7 -	char *path;
     2.8 +	char *file, *path;
     2.9  
    2.10  	assert (root != NULL);
    2.11  
    2.12 @@ -109,22 +109,23 @@
    2.13  		return -1;
    2.14  	}
    2.15  
    2.16 -	path = razor_concat(root, razor_root_path, "/", system_repo_filename,
    2.17 -			    NULL);
    2.18 +	file = razor_concat(razor_root_path, "/", system_repo_filename, NULL);
    2.19 +	path = razor_concat(root, file, NULL);
    2.20  	retval = !stat(path, &buf);
    2.21 -	free(path);
    2.22  	if (retval) {
    2.23  		fprintf(stderr,
    2.24  			"a razor install root is already initialized\n");
    2.25 +		free(path);
    2.26 +		free(file);
    2.27  		return retval;
    2.28  	}
    2.29  
    2.30  	atomic = razor_atomic_open("Create initial package set");
    2.31 -	path = razor_concat(razor_root_path, "/", system_repo_filename, NULL);
    2.32 -	razor_atomic_make_dirs(atomic, root, path);
    2.33 +	razor_atomic_make_dirs(atomic, root, file);
    2.34  	set = razor_set_create();
    2.35  	razor_set_write(set, atomic, path, RAZOR_SECTION_ALL);
    2.36  	free(path);
    2.37 +	free(file);
    2.38  	retval = razor_atomic_commit(atomic);
    2.39  	if (retval)
    2.40  		fprintf(stderr, "could not write initial package set\n");
     3.1 --- a/librazor/util.c	Fri Jan 27 07:55:30 2012 +0000
     3.2 +++ b/librazor/util.c	Fri Jan 27 08:12:19 2012 +0000
     3.3 @@ -120,9 +120,11 @@
     3.4  {
     3.5  	char buffer[size];
     3.6  
     3.7 -	memcpy(buffer, p1, size);
     3.8 -	memcpy(p1, p2, size);
     3.9 -	memcpy(p2, buffer, size);
    3.10 +	if (p1 != p2) {
    3.11 +		memcpy(buffer, p1, size);
    3.12 +		memcpy(p1, p2, size);
    3.13 +		memcpy(p2, buffer, size);
    3.14 +	}
    3.15  }
    3.16  
    3.17  static void
    3.18 @@ -226,7 +228,7 @@
    3.19  void environment_set(struct environment *env)
    3.20  {
    3.21  	int i, count;
    3.22 -	char *s;
    3.23 +	char *s, *t;
    3.24          uint32_t *r;
    3.25  
    3.26  	if (!env->is_set) {
    3.27 @@ -234,7 +236,14 @@
    3.28  		r = (uint32_t *)env->vars.data;
    3.29  		for (i = 0; i < count; i++) {
    3.30  			s = env->string_pool.data + *r++;
    3.31 +#ifdef WIN32
    3.32  			putenv(s);
    3.33 +#else
    3.34 +			t = strchr(s, '=');
    3.35 +			*t = '\0';
    3.36 +			setenv(s, t + 1, 1);
    3.37 +			*t = '=';
    3.38 +#endif
    3.39  		}
    3.40  
    3.41  		env->is_set = 1;
    3.42 @@ -252,11 +261,19 @@
    3.43  		r = (uint32_t *)env->vars.data;
    3.44  		for (i = 0; i < count; i++) {
    3.45  			s = env->string_pool.data + *r++;
    3.46 -			t = strchr(s, '=') + 1;
    3.47 +			t = strchr(s, '=');
    3.48 +#ifdef WIN32
    3.49 +			t++;
    3.50  			c = *t;
    3.51  			*t = '\0';
    3.52  			putenv(s);
    3.53  			*t = c;
    3.54 +#else
    3.55 +			c = *t;
    3.56 +			*t = '\0';
    3.57 +			unsetenv(s);
    3.58 +			*t = c;
    3.59 +#endif
    3.60  		}
    3.61  
    3.62  		env->is_set = 0;
     4.1 --- a/src/test-driver.c	Fri Jan 27 07:55:30 2012 +0000
     4.2 +++ b/src/test-driver.c	Fri Jan 27 08:12:19 2012 +0000
     4.3 @@ -141,15 +141,15 @@
     4.4  end_test(struct test_context *ctx)
     4.5  {
     4.6  	if (ctx->system_set) {
     4.7 -		razor_set_destroy(ctx->system_set);
     4.8 +		razor_set_unref(ctx->system_set);
     4.9  		ctx->system_set = NULL;
    4.10  	}
    4.11  	if (ctx->repo_set) {
    4.12 -		razor_set_destroy(ctx->repo_set);
    4.13 +		razor_set_unref(ctx->repo_set);
    4.14  		ctx->repo_set = NULL;
    4.15  	}
    4.16  	if (ctx->result_set) {
    4.17 -		razor_set_destroy(ctx->result_set);
    4.18 +		razor_set_unref(ctx->result_set);
    4.19  		ctx->result_set = NULL;
    4.20  	}
    4.21  	if (ctx->trans) {