summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Fandrich <dan@coneharvesters.com>2010-04-06 22:51:05 -0700
committerDan Fandrich <dan@coneharvesters.com>2010-04-15 10:51:03 -0700
commitf38510f4b59edad8ae6e8f1535ea3ffcd31fa5d4 (patch)
tree54c1a00f41cd486229d7d51c24aaae462b71a4f1
parent689b6929c311f85aad8ca46add161384bbe0a654 (diff)
downloadgnurl-f38510f4b59edad8ae6e8f1535ea3ffcd31fa5d4.tar.gz
gnurl-f38510f4b59edad8ae6e8f1535ea3ffcd31fa5d4.tar.bz2
gnurl-f38510f4b59edad8ae6e8f1535ea3ffcd31fa5d4.zip
Eliminated an unlikely race condition in some tests.
Based on a patch from the FreeBSD ports by Peter Pentchev.
-rw-r--r--tests/libtest/lib505.c31
-rw-r--r--tests/libtest/lib525.c20
-rw-r--r--tests/libtest/lib541.c31
3 files changed, 42 insertions, 40 deletions
diff --git a/tests/libtest/lib505.c b/tests/libtest/lib505.c
index 9dfae8405..5af7ac0bb 100644
--- a/tests/libtest/lib505.c
+++ b/tests/libtest/lib505.c
@@ -54,34 +54,33 @@ int test(char *URL)
return -1;
}
+ hd_src = fopen(libtest_arg2, "rb");
+ if(NULL == hd_src) {
+ error = ERRNO;
+ fprintf(stderr, "fopen() failed with error: %d %s\n",
+ error, strerror(error));
+ fprintf(stderr, "Error opening file: %s\n", libtest_arg2);
+ return -2; /* if this happens things are major weird */
+ }
+
/* get the file size of the local file */
- hd = stat(libtest_arg2, &file_info);
+ hd = fstat(fileno(hd_src), &file_info);
if(hd == -1) {
/* can't open file, bail out */
error = ERRNO;
- fprintf(stderr, "stat() failed with error: %d %s\n",
+ fprintf(stderr, "fstat() failed with error: %d %s\n",
error, strerror(error));
- fprintf(stderr, "WARNING: cannot open file %s\n", libtest_arg2);
+ fprintf(stderr, "ERROR: cannot open file %s\n", libtest_arg2);
+ fclose(hd_src);
return -1;
}
if(! file_info.st_size) {
- fprintf(stderr, "WARNING: file %s has no size!\n", libtest_arg2);
+ fprintf(stderr, "ERROR: file %s has zero size!\n", libtest_arg2);
+ fclose(hd_src);
return -4;
}
- /* get a FILE * of the same file, could also be made with
- fdopen() from the previous descriptor, but hey this is just
- an example! */
- hd_src = fopen(libtest_arg2, "rb");
- if(NULL == hd_src) {
- error = ERRNO;
- fprintf(stderr, "fopen() failed with error: %d %s\n",
- error, strerror(error));
- fprintf(stderr, "Error opening file: %s\n", libtest_arg2);
- return -2; /* if this happens things are major weird */
- }
-
if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
fprintf(stderr, "curl_global_init() failed\n");
fclose(hd_src);
diff --git a/tests/libtest/lib525.c b/tests/libtest/lib525.c
index d2542577b..ade637012 100644
--- a/tests/libtest/lib525.c
+++ b/tests/libtest/lib525.c
@@ -40,14 +40,6 @@ int test(char *URL)
return -1;
}
- /* get the file size of the local file */
- hd = open(libtest_arg2, O_RDONLY) ;
- fstat(hd, &file_info);
- close(hd) ;
-
- /* get a FILE * of the same file, could also be made with
- fdopen() from the previous descriptor, but hey this is just
- an example! */
hd_src = fopen(libtest_arg2, "rb");
if(NULL == hd_src) {
error = ERRNO;
@@ -57,6 +49,18 @@ int test(char *URL)
return TEST_ERR_MAJOR_BAD;
}
+ /* get the file size of the local file */
+ hd = fstat(fileno(hd_src), &file_info);
+ if(hd == -1) {
+ /* can't open file, bail out */
+ error = ERRNO;
+ fprintf(stderr, "fstat() failed with error: %d %s\n",
+ error, strerror(error));
+ fprintf(stderr, "ERROR: cannot open file %s\n", libtest_arg2);
+ fclose(hd_src);
+ return -1;
+ }
+
if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
fprintf(stderr, "curl_global_init() failed\n");
fclose(hd_src);
diff --git a/tests/libtest/lib541.c b/tests/libtest/lib541.c
index c060b8ac7..2fc85b97d 100644
--- a/tests/libtest/lib541.c
+++ b/tests/libtest/lib541.c
@@ -46,34 +46,33 @@ int test(char *URL)
return -1;
}
+ hd_src = fopen(libtest_arg2, "rb");
+ if(NULL == hd_src) {
+ error = ERRNO;
+ fprintf(stderr, "fopen() failed with error: %d %s\n",
+ error, strerror(error));
+ fprintf(stderr, "Error opening file: %s\n", libtest_arg2);
+ return -2; /* if this happens things are major weird */
+ }
+
/* get the file size of the local file */
- hd = stat(libtest_arg2, &file_info);
+ hd = fstat(fileno(hd_src), &file_info);
if(hd == -1) {
/* can't open file, bail out */
error = ERRNO;
- fprintf(stderr, "stat() failed with error: %d %s\n",
+ fprintf(stderr, "fstat() failed with error: %d %s\n",
error, strerror(error));
- fprintf(stderr, "WARNING: cannot open file %s\n", libtest_arg2);
+ fprintf(stderr, "ERROR: cannot open file %s\n", libtest_arg2);
+ fclose(hd_src);
return -1;
}
if(! file_info.st_size) {
- fprintf(stderr, "WARNING: file %s has no size!\n", libtest_arg2);
+ fprintf(stderr, "ERROR: file %s has zero size!\n", libtest_arg2);
+ fclose(hd_src);
return -4;
}
- /* get a FILE * of the same file, could also be made with
- fdopen() from the previous descriptor, but hey this is just
- an example! */
- hd_src = fopen(libtest_arg2, "rb");
- if(NULL == hd_src) {
- error = ERRNO;
- fprintf(stderr, "fopen() failed with error: %d %s\n",
- error, strerror(error));
- fprintf(stderr, "Error opening file: %s\n", libtest_arg2);
- return -2; /* if this happens things are major weird */
- }
-
if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
fprintf(stderr, "curl_global_init() failed\n");
fclose(hd_src);