mirror of
https://gitlab.com/80486DX2-66/gists
synced 2025-04-15 03:49:06 +05:30
reverse-ramdisk.c: fix file locking
This commit is contained in:
parent
b1cce2603a
commit
de03ab20f9
@ -169,7 +169,8 @@ int tf_free(int ID) {
|
||||
|
||||
// Delete the file
|
||||
if (remove(temp_files[index].file_path) != 0) {
|
||||
LINE_FAIL(-1);
|
||||
temp_files[index].locked = false;
|
||||
LINE_FAIL(-2);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -256,13 +257,15 @@ int tf_write(int ID, size_t offset, void* src, size_t data_size) {
|
||||
(size_t)
|
||||
#endif
|
||||
bytes_written != data_size) {
|
||||
temp_files[index].locked = false;
|
||||
errno = EIO;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if IS_POSIX
|
||||
if (fsync(file) == -1) {
|
||||
LINE_FAIL(-1);
|
||||
temp_files[index].locked = false;
|
||||
LINE_FAIL(-2);
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
@ -302,11 +305,14 @@ int tf_read(int ID, size_t offset, void* dest, size_t data_size) {
|
||||
NULL
|
||||
#endif
|
||||
) {
|
||||
temp_files[index].locked = false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Read the data from the file
|
||||
void* src = malloc(data_size);
|
||||
if (src == NULL) {
|
||||
temp_files[index].locked = false;
|
||||
#if IS_POSIX
|
||||
close
|
||||
#else
|
||||
@ -327,7 +333,8 @@ int tf_read(int ID, size_t offset, void* dest, size_t data_size) {
|
||||
#endif
|
||||
(file, offset, SEEK_SET) == -1) {
|
||||
free(src);
|
||||
LINE_FAIL(-2);
|
||||
temp_files[index].locked = false;
|
||||
LINE_FAIL(-3);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -346,6 +353,7 @@ int tf_read(int ID, size_t offset, void* dest, size_t data_size) {
|
||||
(size_t)
|
||||
#endif
|
||||
bytes_read != data_size) {
|
||||
temp_files[index].locked = false;
|
||||
errno = EIO;
|
||||
return -1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user