mirror of
https://github.com/rui314/mold.git
synced 2024-08-17 00:40:36 +03:00
Simplify
This commit is contained in:
parent
f04aebf1e0
commit
663ac74610
@ -14,19 +14,6 @@ inline u32 get_umask() {
|
|||||||
return orig_umask;
|
return orig_umask;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resize and allocate space for a file.
|
|
||||||
// File size should be 0 before calling, as this function does not handle shrinking.
|
|
||||||
template <typename Context>
|
|
||||||
static void allocate_file(Context &ctx, int fd, i64 filesize) {
|
|
||||||
#ifdef __linux__
|
|
||||||
if (fallocate(fd, 0, 0, filesize) == 0)
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (ftruncate(fd, filesize) == -1)
|
|
||||||
Fatal(ctx) << "ftruncate failed: " << errno_string();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename Context>
|
template <typename Context>
|
||||||
static std::pair<i64, char *>
|
static std::pair<i64, char *>
|
||||||
open_or_create_file(Context &ctx, std::string path, i64 filesize, i64 perm) {
|
open_or_create_file(Context &ctx, std::string path, i64 filesize, i64 perm) {
|
||||||
@ -52,10 +39,16 @@ open_or_create_file(Context &ctx, std::string path, i64 filesize, i64 perm) {
|
|||||||
Fatal(ctx) << "cannot open " << path2 << ": " << errno_string();
|
Fatal(ctx) << "cannot open " << path2 << ": " << errno_string();
|
||||||
}
|
}
|
||||||
|
|
||||||
allocate_file(ctx, fd, filesize);
|
|
||||||
|
|
||||||
if (fchmod(fd, (perm & ~get_umask())) == -1)
|
if (fchmod(fd, (perm & ~get_umask())) == -1)
|
||||||
Fatal(ctx) << "fchmod failed: " << errno_string();
|
Fatal(ctx) << "fchmod failed: " << errno_string();
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
if (fallocate(fd, 0, 0, filesize) == 0)
|
||||||
|
return {fd, path2};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (ftruncate(fd, filesize) == -1)
|
||||||
|
Fatal(ctx) << "ftruncate failed: " << errno_string();
|
||||||
return {fd, path2};
|
return {fd, path2};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user