]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Move write_simple_file() to file.c
authorAlberto Leiva Popper <ydahhrk@gmail.com>
Mon, 14 Oct 2024 21:25:33 +0000 (15:25 -0600)
committerAlberto Leiva Popper <ydahhrk@gmail.com>
Mon, 14 Oct 2024 21:46:46 +0000 (15:46 -0600)
Was too similar to file_write_full(), so merged.

src/cache.c
src/file.c
src/file.h
src/rrdp.c
test/cache_test.c
test/mock_https.c

index 07757c733e83529b7865790d6f04a7e9cf1e9806..ed454813c97e0cc155f70a69b0eb5fb1c9edb599 100644 (file)
@@ -130,30 +130,6 @@ strip_rsync_module(char const *url)
        return NULL;
 }
 
-static int
-write_simple_file(char const *filename, char const *content)
-{
-       FILE *file;
-       int error;
-
-       file = fopen(filename, "w");
-       if (file == NULL)
-               goto fail;
-
-       if (fprintf(file, "%s", content) < 0)
-               goto fail;
-
-       fclose(file);
-       return 0;
-
-fail:
-       error = errno;
-       pr_op_err("Cannot write %s: %s", filename, strerror(error));
-       if (file != NULL)
-               fclose(file);
-       return error;
-}
-
 static int dl_rsync(struct cache_node *);
 static int dl_http(struct cache_node *);
 static int dl_rrdp(struct cache_node *);
@@ -227,7 +203,7 @@ init_cachedir_tag(void)
 {
        static char const *filename = "CACHEDIR.TAG";
        if (file_exists(filename) == ENOENT)
-               write_simple_file(filename,
+               file_write_txt(filename,
                   "Signature: 8a477f597d28d172789f06886806bc55\n"
                   "# This file is a cache directory tag created by Fort.\n"
                   "# For information about cache directory tags, see:\n"
@@ -274,7 +250,7 @@ void
 cache_teardown(void)
 {
        // XXX catch result?
-       write_simple_file(CACHE_METAFILE, "{ \"" TAGNAME_VERSION "\": \""
+       file_write_txt(CACHE_METAFILE, "{ \"" TAGNAME_VERSION "\": \""
            PACKAGE_VERSION "\" }\n");
 }
 
index 5647053945f8bae0afe82578d43af12f01abb43c..87825aabfbe80f560a2844c6d759af98f527beb4 100644 (file)
@@ -60,30 +60,39 @@ file_write(char const *file_name, char const *mode, FILE **result)
        return 0;
 }
 
-int
-file_write_full(char const *path, unsigned char const *content,
-    size_t content_len)
+static int
+write_file(char const *path, void const *bytes, size_t n)
 {
        FILE *out;
-       size_t written;
        int error;
 
-       pr_val_debug("Writing file: %s", path);
-
        error = file_write(path, "wb", &out);
        if (error)
                return error;
 
-       written = fwrite(content, sizeof(unsigned char), content_len, out);
+       if (fwrite(bytes, 1, n, out) != n) {
+               error = errno;
+               if (!error) /* Linux's man page does not mention errno */
+                       error = -1;
+               pr_val_err("Cannot write %s: %s", path, strerror(error));
+       }
+
        file_close(out);
+       return error;
+}
 
-       if (written != content_len)
-               return pr_val_err(
-                   "Couldn't write file '%s' (error code not available)",
-                   path
-               );
+int
+file_write_txt(char const *path, char const *txt)
+{
+       pr_val_debug("echo 'blah blah' > %s", path);
+       return write_file(path, txt, strlen(txt));
+}
 
-       return 0;
+int
+file_write_bin(char const *path, unsigned char const *bytes, size_t n)
+{
+       pr_val_debug("echo 'beep boop' > %s", path);
+       return write_file(path, bytes, n);
 }
 
 void
index 3e05f1e69de968a1d1abb41b7e1855bd7498e08a..f8544f0528112f785e59ee7caf94c6c3d9a86d4c 100644 (file)
@@ -25,7 +25,8 @@ struct file_contents {
 
 int file_open(char const *, FILE **, struct stat *);
 int file_write(char const *, char const *, FILE **);
-int file_write_full(char const *, unsigned char const *, size_t);
+int file_write_txt(char const *, char const *);
+int file_write_bin(char const *, unsigned char const *, size_t);
 void file_close(FILE *);
 
 int file_load(char const *, struct file_contents *, bool);
@@ -33,7 +34,6 @@ void file_free(struct file_contents *);
 
 int file_exists(char const *);
 
-int file_merge_into(char const *, char const *);
 int file_rm_f(char const *);
 int file_rm_rf(char const *);
 int file_mkdir(char const *, bool);
index 30ff269d7485f4d3d3a64ed70b723851a18ff130..c69eb3d717262cbd120ada0ed3d2ef182c35b823 100644 (file)
@@ -588,7 +588,7 @@ handle_publish(xmlTextReaderPtr reader, struct parser_args *args)
                HASH_ADD_KEYPTR(hh, args->state->files, file->map.url, len, file);
        }
 
-       error = file_write_full(file->map.path, tag.content, tag.content_len);
+       error = file_write_bin(file->map.path, tag.content, tag.content_len);
 
 end:   metadata_cleanup(&tag.meta);
        free(tag.content);
index c958ac9fb59690d831e5892a8b014378ba85e3f9..5ba727bca50ccb6b58eab727765268c5e3975222 100644 (file)
@@ -440,18 +440,18 @@ START_TEST(test_rsync_commit)
        ck_assert_int_eq(0, system("mkdir rsync/0 rsync/1 rsync/2 rsync/3"));
 
        /* RPP0: Will remain constant */
-       ck_assert_int_eq(0, write_simple_file("rsync/0/0", "A"));
-       ck_assert_int_eq(0, write_simple_file("rsync/0/1", "B"));
+       ck_assert_int_eq(0, file_write_txt("rsync/0/0", "A"));
+       ck_assert_int_eq(0, file_write_txt("rsync/0/1", "B"));
        /* RPP1: Will be added in its second cycle */
-       ck_assert_int_eq(0, write_simple_file("rsync/1/0", "C"));
-       ck_assert_int_eq(0, write_simple_file("rsync/1/1", "D"));
+       ck_assert_int_eq(0, file_write_txt("rsync/1/0", "C"));
+       ck_assert_int_eq(0, file_write_txt("rsync/1/1", "D"));
        /* RPP2: Will be removed in its second cycle */
-       ck_assert_int_eq(0, write_simple_file("rsync/2/0", "E"));
-       ck_assert_int_eq(0, write_simple_file("rsync/2/1", "F"));
+       ck_assert_int_eq(0, file_write_txt("rsync/2/0", "E"));
+       ck_assert_int_eq(0, file_write_txt("rsync/2/1", "F"));
        /* RPP3: Will be updated in its second cycle */
-       ck_assert_int_eq(0, write_simple_file("rsync/3/0", "G")); /* Keeper */
-       ck_assert_int_eq(0, write_simple_file("rsync/3/1", "H")); /* Added */
-       ck_assert_int_eq(0, write_simple_file("rsync/3/2", "I")); /* Removed */
+       ck_assert_int_eq(0, file_write_txt("rsync/3/0", "G")); /* Keeper */
+       ck_assert_int_eq(0, file_write_txt("rsync/3/1", "H")); /* Added */
+       ck_assert_int_eq(0, file_write_txt("rsync/3/2", "I")); /* Removed */
 
        /* Commit 1: Empty -> Empty */
        /* Commit 2: Empty -> Empty (just free noise) */
@@ -564,9 +564,9 @@ START_TEST(test_https_commit)
 
        setup_test();
 
-       ck_assert_int_eq(0, write_simple_file("https/50", "A")); /* Keeper */
-       ck_assert_int_eq(0, write_simple_file("https/51", "B")); /* Added */
-       ck_assert_int_eq(0, write_simple_file("https/52", "C")); /* Removed */
+       ck_assert_int_eq(0, file_write_txt("https/50", "A")); /* Keeper */
+       ck_assert_int_eq(0, file_write_txt("https/51", "B")); /* Added */
+       ck_assert_int_eq(0, file_write_txt("https/52", "C")); /* Removed */
 
        /* 1, 2 */
        for (i = 0; i < 2; i++) {
@@ -617,15 +617,15 @@ START_TEST(test_rrdp_commit)
 
        ck_assert_int_eq(0, system("mkdir rrdp/0 rrdp/1 rrdp/2 rrdp/3"));
 
-       ck_assert_int_eq(0, write_simple_file("rrdp/0/0", "A"));
-       ck_assert_int_eq(0, write_simple_file("rrdp/0/1", "B"));
-       ck_assert_int_eq(0, write_simple_file("rrdp/1/0", "C"));
-       ck_assert_int_eq(0, write_simple_file("rrdp/1/1", "D"));
-       ck_assert_int_eq(0, write_simple_file("rrdp/2/0", "E"));
-       ck_assert_int_eq(0, write_simple_file("rrdp/2/1", "F"));
-       ck_assert_int_eq(0, write_simple_file("rrdp/3/0", "G"));
-       ck_assert_int_eq(0, write_simple_file("rrdp/3/1", "H"));
-       ck_assert_int_eq(0, write_simple_file("rrdp/3/2", "I"));
+       ck_assert_int_eq(0, file_write_txt("rrdp/0/0", "A"));
+       ck_assert_int_eq(0, file_write_txt("rrdp/0/1", "B"));
+       ck_assert_int_eq(0, file_write_txt("rrdp/1/0", "C"));
+       ck_assert_int_eq(0, file_write_txt("rrdp/1/1", "D"));
+       ck_assert_int_eq(0, file_write_txt("rrdp/2/0", "E"));
+       ck_assert_int_eq(0, file_write_txt("rrdp/2/1", "F"));
+       ck_assert_int_eq(0, file_write_txt("rrdp/3/0", "G"));
+       ck_assert_int_eq(0, file_write_txt("rrdp/3/1", "H"));
+       ck_assert_int_eq(0, file_write_txt("rrdp/3/2", "I"));
 
        /* 1, 2 */
        for (i = 0; i < 2; i++) {
index c7fefbd395602d5085e661b2cd5626627227c066..e1d4e210c9f7a9a2e31e244cdbf95d8e02e057f6 100644 (file)
@@ -26,8 +26,7 @@ http_download(char const *url, char const *path, curl_off_t ims, bool *changed)
        if (!content)
                ck_abort_msg("Test was not expecting an HTTP download.");
 
-       ck_assert_int_eq(0, file_write_full(path,
-           (unsigned char const *)content, strlen(content)));
+       ck_assert_int_eq(0, file_write_txt(path, content));
 
        if (changed)
                *changed = true;