From a2d40769d25c9495edce67be67be0ac36491ce80 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 12 Nov 2022 17:54:22 -0500 Subject: Use zix_copy_file() --- src/filesystem.c | 44 -------------------------------------------- src/filesystem.h | 8 -------- src/state.c | 8 ++++---- test/test_filesystem.c | 38 -------------------------------------- test/test_util.c | 4 ---- 5 files changed, 4 insertions(+), 98 deletions(-) diff --git a/src/filesystem.c b/src/filesystem.c index c0ad864..7e42dbd 100644 --- a/src/filesystem.c +++ b/src/filesystem.c @@ -25,16 +25,11 @@ #include -#include #include #include #include #include -#ifndef PAGE_SIZE -# define PAGE_SIZE 4096 -#endif - static bool lilv_is_dir_sep(const char c) { @@ -197,45 +192,6 @@ lilv_is_directory(const char* path) #endif } -int -lilv_copy_file(const char* src, const char* dst) -{ - FILE* in = fopen(src, "r"); - if (!in) { - return errno; - } - - FILE* out = fopen(dst, "w"); - if (!out) { - fclose(in); - return errno; - } - - char* page = (char*)malloc(PAGE_SIZE); - size_t n_read = 0; - int st = 0; - while ((n_read = fread(page, 1, PAGE_SIZE, in)) > 0) { - if (fwrite(page, 1, n_read, out) != n_read) { - st = errno; - break; - } - } - - if (!st && fflush(out)) { - st = errno; - } - - if (!st && (ferror(in) || ferror(out))) { - st = EBADF; - } - - free(page); - fclose(in); - fclose(out); - - return st; -} - int lilv_symlink(const char* oldpath, const char* newpath) { diff --git a/src/filesystem.h b/src/filesystem.h index 4d66e19..33294da 100644 --- a/src/filesystem.h +++ b/src/filesystem.h @@ -46,14 +46,6 @@ lilv_path_filename(const char* path); bool lilv_is_directory(const char* path); -/** - Copy the file at path `src` to path `dst`. - - @return Zero on success, or a standard `errno` error code. -*/ -int -lilv_copy_file(const char* src, const char* dst); - /** Create a symlink at `newpath` that points to `oldpath`. diff --git a/src/state.c b/src/state.c index bce4eaa..c0c9400 100644 --- a/src/state.c +++ b/src/state.c @@ -300,10 +300,10 @@ abstract_path(LV2_State_Map_Path_Handle handle, const char* abs_path) if (!copy || !zix_file_equals(NULL, real_path, copy)) { // No recent enough copy, make a new one free(copy); - copy = lilv_find_free_path(cpath, path_exists, NULL); - int rc = 0; - if ((rc = lilv_copy_file(real_path, copy))) { - LILV_ERRORF("Error copying state file %s (%s)\n", copy, strerror(st)); + copy = lilv_find_free_path(cpath, path_exists, NULL); + if ((st = zix_copy_file(NULL, real_path, copy, 0U))) { + LILV_ERRORF( + "Error copying state file %s (%s)\n", copy, zix_strerror(st)); } } zix_free(NULL, real_path); diff --git a/test/test_filesystem.c b/test/test_filesystem.c index 01ccd5d..021d66f 100644 --- a/test/test_filesystem.c +++ b/test/test_filesystem.c @@ -11,7 +11,6 @@ #include "zix/path.h" #include -#include #include #include #include @@ -156,42 +155,6 @@ test_is_directory(void) free(temp_dir); } -static void -test_copy_file(void) -{ - char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX"); - char* const file_path = zix_path_join(NULL, temp_dir, "lilv_test_file"); - char* const copy_path = zix_path_join(NULL, temp_dir, "lilv_test_copy"); - - FILE* f = fopen(file_path, "w"); - fprintf(f, "test\n"); - fclose(f); - - assert(!lilv_copy_file(file_path, copy_path)); - assert(zix_file_equals(NULL, file_path, copy_path)); - - if (zix_file_type("/dev/full") != ZIX_FILE_TYPE_NONE) { - // Copy short file (error after flushing) - assert(lilv_copy_file(file_path, "/dev/full") == ENOSPC); - - // Copy long file (error during writing) - f = fopen(file_path, "w"); - for (size_t i = 0; i < 4096; ++i) { - fprintf(f, "test\n"); - } - fclose(f); - assert(lilv_copy_file(file_path, "/dev/full") == ENOSPC); - } - - assert(!zix_remove(copy_path)); - assert(!zix_remove(file_path)); - assert(!zix_remove(temp_dir)); - - free(copy_path); - free(file_path); - free(temp_dir); -} - static void test_flock(void) { @@ -275,7 +238,6 @@ main(void) test_path_parent(); test_path_filename(); test_is_directory(); - test_copy_file(); test_flock(); test_dir_for_each(); diff --git a/test/test_util.c b/test/test_util.c index f6f7feb..2e5b2fb 100644 --- a/test/test_util.c +++ b/test/test_util.c @@ -27,10 +27,6 @@ main(void) fclose(fb); fclose(fa); - assert(lilv_copy_file("does/not/exist", "copy")); - assert(lilv_copy_file(a_path, "not/a/dir/copy")); - assert(!lilv_copy_file(a_path, "copy_c")); - assert(!zix_remove(a_path)); assert(!zix_remove(b_path)); assert(!zix_remove(dir)); -- cgit v1.2.1