bytecodealliance / bytecodealliance/cap-std
Support for renameat2?
- Ngôn ngữ chính
- Rust
- Star
- 821
- Fork
- 57
- Merge trung bình
- 1 giờ 16 phút
- Pull request đã merge (30 ngày)
- 4
Mô tả
On Linux, `cap-std` implements `Dir::rename` via `rustix::fs::renameat`, which is the `renameat` function.
Since Linux 3.15, there is another version of this call, `renameat2`, which supports an additional `flags` argument. `rustix` already supports this function as `rustix::fs::renameat_with`.
Could `cap-std` add support for this function as well?
## Additional Context
The external `cap-std-ext` crate implements atomic writes by writing a temporary file and renaming it in place. However, it is not possible to atomically create a file in this way.
`renameat2` supports the `RENAME_NOREPLACE` flag, which ensures that no existing file is overwritten by the rename. As such, an `atomic_create` could be implemented based on this change.
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với Dir::rename của cap-std và rustix::fs::renameat_with, sau đó so sánh cách các thao tác hệ thống tệp được cung cấp trên các nền tảng được hỗ trợ. Đọc phần triển khai ghi nguyên tử của cap-std-ext để hiểu trường hợp sử dụng của RENAME_NOREPLACE. Công việc được xem là hoàn tất khi các cờ kiểu renameat2 được hỗ trợ ở những nơi có sẵn và việc tạo nguyên tử có thể tránh ghi đè lên một tệp hiện có.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- rust
- Lĩnh vực
- operating-systems
- Loại issue
- Tính năng
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 55/100