diff options
author | Christian Grothoff <christian@grothoff.org> | 2020-12-19 18:43:38 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2020-12-19 18:43:38 +0100 |
commit | 3636ea628d051cf2ba7a9038c50528c561d0aeaa (patch) | |
tree | 87664b904950052e8b6997a371ed5ecb1ea4b310 /src/fs | |
parent | 74d7528e6bd53cf5acc939c63a5be74a001e5ce1 (diff) | |
download | gnunet-3636ea628d051cf2ba7a9038c50528c561d0aeaa.tar.gz gnunet-3636ea628d051cf2ba7a9038c50528c561d0aeaa.zip |
change GNUNET_DISK_fn_write() to always do atomic writes and to NOT overwrite existing files; also change the return value to not return the size of the written file but GNUNET_OK on success, and integrate creating the directory if needed; breaks API, hence bumping libgnunetutil version
Diffstat (limited to 'src/fs')
-rw-r--r-- | src/fs/gnunet-search.c | 15 | ||||
-rw-r--r-- | src/fs/test_fs_download.c | 7 | ||||
-rw-r--r-- | src/fs/test_fs_file_information.c | 6 | ||||
-rw-r--r-- | src/fs/test_fs_list_indexed.c | 6 | ||||
-rw-r--r-- | src/fs/test_fs_publish.c | 6 | ||||
-rw-r--r-- | src/fs/test_fs_publish_persistence.c | 6 | ||||
-rw-r--r-- | src/fs/test_fs_unindex.c | 3 | ||||
-rw-r--r-- | src/fs/test_fs_unindex_persistence.c | 3 |
8 files changed, 34 insertions, 18 deletions
diff --git a/src/fs/gnunet-search.c b/src/fs/gnunet-search.c index d25ae55e6..e49609b18 100644 --- a/src/fs/gnunet-search.c +++ b/src/fs/gnunet-search.c | |||
@@ -111,17 +111,20 @@ clean_task (void *cls) | |||
111 | ctx = NULL; | 111 | ctx = NULL; |
112 | if (output_filename == NULL) | 112 | if (output_filename == NULL) |
113 | return; | 113 | return; |
114 | if (GNUNET_OK != GNUNET_FS_directory_builder_finish (db, &dsize, &ddata)) | 114 | if (GNUNET_OK != |
115 | GNUNET_FS_directory_builder_finish (db, &dsize, &ddata)) | ||
115 | { | 116 | { |
116 | GNUNET_break (0); | 117 | GNUNET_break (0); |
117 | GNUNET_free (output_filename); | 118 | GNUNET_free (output_filename); |
118 | return; | 119 | return; |
119 | } | 120 | } |
120 | if (dsize != GNUNET_DISK_fn_write (output_filename, | 121 | (void) GNUNET_DISK_directory_remove (output_filename); |
121 | ddata, | 122 | if (GNUNET_OK != |
122 | dsize, | 123 | GNUNET_DISK_fn_write (output_filename, |
123 | GNUNET_DISK_PERM_USER_READ | 124 | ddata, |
124 | | GNUNET_DISK_PERM_USER_WRITE)) | 125 | dsize, |
126 | GNUNET_DISK_PERM_USER_READ | ||
127 | | GNUNET_DISK_PERM_USER_WRITE)) | ||
125 | { | 128 | { |
126 | fprintf (stderr, | 129 | fprintf (stderr, |
127 | _ ("Failed to write directory with search results to `%s'\n"), | 130 | _ ("Failed to write directory with search results to `%s'\n"), |
diff --git a/src/fs/test_fs_download.c b/src/fs/test_fs_download.c index 2be2e7f6a..2fe0da77c 100644 --- a/src/fs/test_fs_download.c +++ b/src/fs/test_fs_download.c | |||
@@ -299,8 +299,11 @@ run (void *cls, | |||
299 | "USE_INDEX")) | 299 | "USE_INDEX")) |
300 | { | 300 | { |
301 | fn1 = GNUNET_DISK_mktemp ("gnunet-download-indexed-test"); | 301 | fn1 = GNUNET_DISK_mktemp ("gnunet-download-indexed-test"); |
302 | GNUNET_assert (FILESIZE == | 302 | (void) GNUNET_DISK_directory_remove (fn1); |
303 | GNUNET_DISK_fn_write (fn1, buf, FILESIZE, | 303 | GNUNET_assert (GNUNET_OK == |
304 | GNUNET_DISK_fn_write (fn1, | ||
305 | buf, | ||
306 | FILESIZE, | ||
304 | GNUNET_DISK_PERM_USER_READ | 307 | GNUNET_DISK_PERM_USER_READ |
305 | | GNUNET_DISK_PERM_USER_WRITE)); | 308 | | GNUNET_DISK_PERM_USER_WRITE)); |
306 | GNUNET_free (buf); | 309 | GNUNET_free (buf); |
diff --git a/src/fs/test_fs_file_information.c b/src/fs/test_fs_file_information.c index 9305471d6..9d0978e06 100644 --- a/src/fs/test_fs_file_information.c +++ b/src/fs/test_fs_file_information.c | |||
@@ -82,7 +82,8 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
82 | buf = GNUNET_malloc (FILESIZE); | 82 | buf = GNUNET_malloc (FILESIZE); |
83 | for (i = 0; i < FILESIZE; i++) | 83 | for (i = 0; i < FILESIZE; i++) |
84 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); | 84 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); |
85 | GNUNET_assert (FILESIZE == | 85 | (void) GNUNET_DISK_directory_remove (fn1); |
86 | GNUNET_assert (GNUNET_OK == | ||
86 | GNUNET_DISK_fn_write (fn1, buf, FILESIZE, | 87 | GNUNET_DISK_fn_write (fn1, buf, FILESIZE, |
87 | GNUNET_DISK_PERM_USER_READ | 88 | GNUNET_DISK_PERM_USER_READ |
88 | | GNUNET_DISK_PERM_USER_WRITE)); | 89 | | GNUNET_DISK_PERM_USER_WRITE)); |
@@ -92,7 +93,8 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
92 | buf = GNUNET_malloc (FILESIZE); | 93 | buf = GNUNET_malloc (FILESIZE); |
93 | for (i = 0; i < FILESIZE; i++) | 94 | for (i = 0; i < FILESIZE; i++) |
94 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); | 95 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); |
95 | GNUNET_assert (FILESIZE == | 96 | (void) GNUNET_DISK_directory_remove (fn2); |
97 | GNUNET_assert (GNUNET_OK == | ||
96 | GNUNET_DISK_fn_write (fn2, buf, FILESIZE, | 98 | GNUNET_DISK_fn_write (fn2, buf, FILESIZE, |
97 | GNUNET_DISK_PERM_USER_READ | 99 | GNUNET_DISK_PERM_USER_READ |
98 | | GNUNET_DISK_PERM_USER_WRITE)); | 100 | | GNUNET_DISK_PERM_USER_WRITE)); |
diff --git a/src/fs/test_fs_list_indexed.c b/src/fs/test_fs_list_indexed.c index 93367883f..2f04a017a 100644 --- a/src/fs/test_fs_list_indexed.c +++ b/src/fs/test_fs_list_indexed.c | |||
@@ -198,7 +198,8 @@ run (void *cls, | |||
198 | buf = GNUNET_malloc (FILESIZE); | 198 | buf = GNUNET_malloc (FILESIZE); |
199 | for (i = 0; i < FILESIZE; i++) | 199 | for (i = 0; i < FILESIZE; i++) |
200 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); | 200 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); |
201 | GNUNET_assert (FILESIZE == | 201 | (void) GNUNET_DISK_directory_remove (fn1); |
202 | GNUNET_assert (GNUNET_OK == | ||
202 | GNUNET_DISK_fn_write (fn1, buf, FILESIZE, | 203 | GNUNET_DISK_fn_write (fn1, buf, FILESIZE, |
203 | GNUNET_DISK_PERM_USER_READ | 204 | GNUNET_DISK_PERM_USER_READ |
204 | | GNUNET_DISK_PERM_USER_WRITE)); | 205 | | GNUNET_DISK_PERM_USER_WRITE)); |
@@ -208,7 +209,8 @@ run (void *cls, | |||
208 | buf = GNUNET_malloc (FILESIZE); | 209 | buf = GNUNET_malloc (FILESIZE); |
209 | for (i = 0; i < FILESIZE; i++) | 210 | for (i = 0; i < FILESIZE; i++) |
210 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); | 211 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); |
211 | GNUNET_assert (FILESIZE == | 212 | (void) GNUNET_DISK_directory_remove (fn2); |
213 | GNUNET_assert (GNUNET_OK == | ||
212 | GNUNET_DISK_fn_write (fn2, buf, FILESIZE, | 214 | GNUNET_DISK_fn_write (fn2, buf, FILESIZE, |
213 | GNUNET_DISK_PERM_USER_READ | 215 | GNUNET_DISK_PERM_USER_READ |
214 | | GNUNET_DISK_PERM_USER_WRITE)); | 216 | | GNUNET_DISK_PERM_USER_WRITE)); |
diff --git a/src/fs/test_fs_publish.c b/src/fs/test_fs_publish.c index c42e546e3..2ffc722da 100644 --- a/src/fs/test_fs_publish.c +++ b/src/fs/test_fs_publish.c | |||
@@ -184,7 +184,8 @@ run (void *cls, | |||
184 | buf = GNUNET_malloc (FILESIZE); | 184 | buf = GNUNET_malloc (FILESIZE); |
185 | for (i = 0; i < FILESIZE; i++) | 185 | for (i = 0; i < FILESIZE; i++) |
186 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); | 186 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); |
187 | GNUNET_assert (FILESIZE == | 187 | (void) GNUNET_DISK_directory_remove (fn1); |
188 | GNUNET_assert (GNUNET_OK == | ||
188 | GNUNET_DISK_fn_write (fn1, buf, FILESIZE, | 189 | GNUNET_DISK_fn_write (fn1, buf, FILESIZE, |
189 | GNUNET_DISK_PERM_USER_READ | 190 | GNUNET_DISK_PERM_USER_READ |
190 | | GNUNET_DISK_PERM_USER_WRITE)); | 191 | | GNUNET_DISK_PERM_USER_WRITE)); |
@@ -194,7 +195,8 @@ run (void *cls, | |||
194 | buf = GNUNET_malloc (FILESIZE); | 195 | buf = GNUNET_malloc (FILESIZE); |
195 | for (i = 0; i < FILESIZE; i++) | 196 | for (i = 0; i < FILESIZE; i++) |
196 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); | 197 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); |
197 | GNUNET_assert (FILESIZE == | 198 | (void) GNUNET_DISK_directory_remove (fn2); |
199 | GNUNET_assert (GNUNET_OK == | ||
198 | GNUNET_DISK_fn_write (fn2, buf, FILESIZE, | 200 | GNUNET_DISK_fn_write (fn2, buf, FILESIZE, |
199 | GNUNET_DISK_PERM_USER_READ | 201 | GNUNET_DISK_PERM_USER_READ |
200 | | GNUNET_DISK_PERM_USER_WRITE)); | 202 | | GNUNET_DISK_PERM_USER_WRITE)); |
diff --git a/src/fs/test_fs_publish_persistence.c b/src/fs/test_fs_publish_persistence.c index 4ec39d06e..da0209793 100644 --- a/src/fs/test_fs_publish_persistence.c +++ b/src/fs/test_fs_publish_persistence.c | |||
@@ -258,7 +258,8 @@ run (void *cls, | |||
258 | buf = GNUNET_malloc (FILESIZE); | 258 | buf = GNUNET_malloc (FILESIZE); |
259 | for (i = 0; i < FILESIZE; i++) | 259 | for (i = 0; i < FILESIZE; i++) |
260 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); | 260 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); |
261 | GNUNET_assert (FILESIZE == | 261 | (void) GNUNET_DISK_directory_remove (fn1); |
262 | GNUNET_assert (GNUNET_OK == | ||
262 | GNUNET_DISK_fn_write (fn1, buf, FILESIZE, | 263 | GNUNET_DISK_fn_write (fn1, buf, FILESIZE, |
263 | GNUNET_DISK_PERM_USER_READ | 264 | GNUNET_DISK_PERM_USER_READ |
264 | | GNUNET_DISK_PERM_USER_WRITE)); | 265 | | GNUNET_DISK_PERM_USER_WRITE)); |
@@ -268,7 +269,8 @@ run (void *cls, | |||
268 | buf = GNUNET_malloc (FILESIZE); | 269 | buf = GNUNET_malloc (FILESIZE); |
269 | for (i = 0; i < FILESIZE; i++) | 270 | for (i = 0; i < FILESIZE; i++) |
270 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); | 271 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); |
271 | GNUNET_assert (FILESIZE == | 272 | (void) GNUNET_DISK_directory_remove (fn2); |
273 | GNUNET_assert (GNUNET_OK == | ||
272 | GNUNET_DISK_fn_write (fn2, buf, FILESIZE, | 274 | GNUNET_DISK_fn_write (fn2, buf, FILESIZE, |
273 | GNUNET_DISK_PERM_USER_READ | 275 | GNUNET_DISK_PERM_USER_READ |
274 | | GNUNET_DISK_PERM_USER_WRITE)); | 276 | | GNUNET_DISK_PERM_USER_WRITE)); |
diff --git a/src/fs/test_fs_unindex.c b/src/fs/test_fs_unindex.c index a11c574c1..992672244 100644 --- a/src/fs/test_fs_unindex.c +++ b/src/fs/test_fs_unindex.c | |||
@@ -197,7 +197,8 @@ run (void *cls, | |||
197 | buf = GNUNET_malloc (FILESIZE); | 197 | buf = GNUNET_malloc (FILESIZE); |
198 | for (i = 0; i < FILESIZE; i++) | 198 | for (i = 0; i < FILESIZE; i++) |
199 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); | 199 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); |
200 | GNUNET_assert (FILESIZE == | 200 | (void) GNUNET_DISK_directory_remove (fn); |
201 | GNUNET_assert (GNUNET_OK == | ||
201 | GNUNET_DISK_fn_write (fn, buf, FILESIZE, | 202 | GNUNET_DISK_fn_write (fn, buf, FILESIZE, |
202 | GNUNET_DISK_PERM_USER_READ | 203 | GNUNET_DISK_PERM_USER_READ |
203 | | GNUNET_DISK_PERM_USER_WRITE)); | 204 | | GNUNET_DISK_PERM_USER_WRITE)); |
diff --git a/src/fs/test_fs_unindex_persistence.c b/src/fs/test_fs_unindex_persistence.c index c3668f4e0..802aaf7ca 100644 --- a/src/fs/test_fs_unindex_persistence.c +++ b/src/fs/test_fs_unindex_persistence.c | |||
@@ -267,7 +267,8 @@ run (void *cls, | |||
267 | buf = GNUNET_malloc (FILESIZE); | 267 | buf = GNUNET_malloc (FILESIZE); |
268 | for (i = 0; i < FILESIZE; i++) | 268 | for (i = 0; i < FILESIZE; i++) |
269 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); | 269 | buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256); |
270 | GNUNET_assert (FILESIZE == | 270 | (void) GNUNET_DISK_directory_remove (fn); |
271 | GNUNET_assert (GNUNET_OK == | ||
271 | GNUNET_DISK_fn_write (fn, buf, FILESIZE, | 272 | GNUNET_DISK_fn_write (fn, buf, FILESIZE, |
272 | GNUNET_DISK_PERM_USER_READ | 273 | GNUNET_DISK_PERM_USER_READ |
273 | | GNUNET_DISK_PERM_USER_WRITE)); | 274 | | GNUNET_DISK_PERM_USER_WRITE)); |