Feature #13743
closedSupport linking of files opened with O_TMPFILE
Description
This patch enables linking of files opened with O_TMPFILE into file system.
Users can make a temporary file persistent as named file.
File.open(".", IO::WRONLY|IO::TMPFILE) do |f|
f.write("content")
f.chmod(0600)
File.link(f, "file_name") # make temporary file persistent
end
Files
Updated by nobu (Nobuyoshi Nakada) over 7 years ago
Extension of File.link
, but not File#link
?
Updated by normalperson (Eric Wong) over 7 years ago
glass.saga@gmail.com wrote:
Feature #13743: Support linking of files opened with O_TMPFILE
https://bugs.ruby-lang.org/issues/13743
I like this feature.
patch.diff (2.44 KB)
+ if (!NIL_P(tmp) && from_fptr && from_fptr->fd >= 0) { /* when 'from' is an IO and opened */ + char from_path[PATH_MAX]; + + rb_io_flush(from); + FilePathValue(to); + to = rb_str_encode_ospath(to); + snprintf(from_path, PATH_MAX, "/proc/self/fd/%d", from_fptr->fd);
However, PATH_MAX
(4096 on Linux) is excessive use of stack.
Since fd
is an int, we can safely set a smaller size.
Also, I'm not sure why rb_io_flush
needs to be called, here.
Thanks.
Updated by nobu (Nobuyoshi Nakada) over 7 years ago
normalperson (Eric Wong) wrote:
However,
PATH_MAX
(4096 on Linux) is excessive use of stack.
Sincefd
is an int, we can safely set a smaller size.
static const char self_fd[] = "/proc/self/fd/%d";
char from_path[sizeof(self_fd) - 2 + DECIMAL_SIZE_OF_BITS(sizeof(int))];
Updated by akr (Akira Tanaka) over 7 years ago
I feel this is too Linux and environment specific.
For example, it depends /proc/fd.
I think that it is better to provide linkat(2) directly.
(Extend File.link or add File.linkat.)
Updated by matz (Yukihiro Matsumoto) over 7 years ago
- Status changed from Open to Rejected
This API is pretty simple but only works on Linux. I am not positive to add platform-specific features to the language core. I'd rather recommend considering making it a gem.
Matz.
Updated by Glass_saga (Masaki Matsushita) almost 7 years ago
- Related to Feature #4592: Tempfileを直接保存したい added
Updated by Glass_saga (Masaki Matsushita) almost 7 years ago
- Related to deleted (Feature #4592: Tempfileを直接保存したい)