mirror of
https://github.com/s3fs-fuse/s3fs-fuse.git
synced 2024-11-19 02:35:13 +00:00
Convert rename_before_close to a shell script
This commit is contained in:
parent
cbc057bca7
commit
5d1c8a7eda
@ -28,8 +28,3 @@ EXTRA_DIST = \
|
|||||||
sample_ahbe.conf
|
sample_ahbe.conf
|
||||||
|
|
||||||
testdir = test
|
testdir = test
|
||||||
|
|
||||||
test_PROGRAMS=rename_before_close
|
|
||||||
|
|
||||||
rename_before_close_SOURCES = rename_before_close.c
|
|
||||||
|
|
||||||
|
@ -276,14 +276,18 @@ rm_test_dir
|
|||||||
##########################################################
|
##########################################################
|
||||||
if false; then
|
if false; then
|
||||||
echo "Testing rename before close ..."
|
echo "Testing rename before close ..."
|
||||||
$CUR_DIR/rename_before_close $TEST_TEXT_FILE
|
(
|
||||||
if [ $? != 0 ]; then
|
echo foo
|
||||||
|
mv $TEST_TEXT_FILE ${TEST_TEXT_FILE}.new
|
||||||
|
) > $TEST_TEXT_FILE
|
||||||
|
|
||||||
|
if ! cmp <(echo foo) ${TEST_TEXT_FILE}.new; then
|
||||||
echo "rename before close failed"
|
echo "rename before close failed"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# clean up
|
rm_test_file ${TEST_TEXT_FILE}.new
|
||||||
rm_test_file
|
rm -f ${TEST_TEXT_FILE}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
##########################################################
|
##########################################################
|
||||||
|
@ -1,88 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
static const char FILE_CONTENT[] = "XXXX";
|
|
||||||
#define PROG "rename_before_close"
|
|
||||||
|
|
||||||
static char *
|
|
||||||
filename_to_mkstemp_template(const char *file)
|
|
||||||
{
|
|
||||||
size_t len = strlen(file);
|
|
||||||
static const char suffix[] = ".XXXXXX";
|
|
||||||
size_t new_len = len + sizeof(suffix);
|
|
||||||
char *ret_str = calloc(1, new_len);
|
|
||||||
int ret = snprintf(ret_str, new_len, "%s%s", file, suffix);
|
|
||||||
assert(ret == new_len - 1);
|
|
||||||
assert(ret_str[new_len] == '\0');
|
|
||||||
return ret_str;
|
|
||||||
}
|
|
||||||
|
|
||||||
static off_t
|
|
||||||
get_file_size(const char *file)
|
|
||||||
{
|
|
||||||
struct stat ss;
|
|
||||||
printf(PROG ": stat(%s)\n", file);
|
|
||||||
int ret = lstat(file, &ss);
|
|
||||||
assert(ret == 0);
|
|
||||||
return ss.st_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
test_rename_before_close(const char *file)
|
|
||||||
{
|
|
||||||
char *template = filename_to_mkstemp_template(file);
|
|
||||||
printf(PROG ": mkstemp(%s)\n", template);
|
|
||||||
int fd = mkstemp(template);
|
|
||||||
assert(fd >= 0);
|
|
||||||
|
|
||||||
sleep(1);
|
|
||||||
|
|
||||||
printf(PROG ": write(%s)\n", template);
|
|
||||||
int ret = write(fd, FILE_CONTENT, sizeof(FILE_CONTENT));
|
|
||||||
assert(ret == sizeof(FILE_CONTENT));
|
|
||||||
|
|
||||||
sleep(1);
|
|
||||||
|
|
||||||
printf(PROG ": fsync(%s)\n", template);
|
|
||||||
ret = fsync(fd);
|
|
||||||
assert(ret == 0);
|
|
||||||
|
|
||||||
sleep(1);
|
|
||||||
|
|
||||||
assert(get_file_size(template) == sizeof(FILE_CONTENT));
|
|
||||||
|
|
||||||
sleep(1);
|
|
||||||
|
|
||||||
printf(PROG ": rename(%s, %s)\n", template, file);
|
|
||||||
ret = rename(template, file);
|
|
||||||
assert(ret == 0);
|
|
||||||
|
|
||||||
sleep(1);
|
|
||||||
|
|
||||||
printf(PROG ": close(%s)\n", file);
|
|
||||||
ret = close(fd);
|
|
||||||
assert(ret == 0);
|
|
||||||
|
|
||||||
sleep(1);
|
|
||||||
|
|
||||||
assert(get_file_size(file) == sizeof(FILE_CONTENT));
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
setvbuf(stdout, NULL, _IONBF, 0);
|
|
||||||
|
|
||||||
if (argc < 2) {
|
|
||||||
printf("Usage: %s <file>", argv[0]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
test_rename_before_close(argv[1]);
|
|
||||||
return 0;
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user