libos: Add a convenience function for opening a file or standard input
This commit is contained in:
parent
fb09eb97ce
commit
cb28e2a385
@ -6,14 +6,10 @@ using os::File;
|
|||||||
|
|
||||||
static Result<void> do_cat(StringView path)
|
static Result<void> do_cat(StringView path)
|
||||||
{
|
{
|
||||||
SharedPtr<File> f;
|
SharedPtr<File> f = TRY(File::open_input_file(path));
|
||||||
|
|
||||||
auto out = File::standard_output();
|
auto out = File::standard_output();
|
||||||
|
|
||||||
if (path == "-") f = File::standard_input();
|
|
||||||
else
|
|
||||||
f = TRY(File::open(path, File::ReadOnly));
|
|
||||||
|
|
||||||
auto buf = TRY(Buffer::create_sized(4096));
|
auto buf = TRY(Buffer::create_sized(4096));
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
@ -24,6 +24,14 @@ namespace os
|
|||||||
static Result<SharedPtr<File>> open_or_create(StringView path, OpenMode flags, mode_t mode = 0644);
|
static Result<SharedPtr<File>> open_or_create(StringView path, OpenMode flags, mode_t mode = 0644);
|
||||||
static Result<SharedPtr<File>> create(StringView path, OpenMode flags, mode_t mode = 0644);
|
static Result<SharedPtr<File>> create(StringView path, OpenMode flags, mode_t mode = 0644);
|
||||||
|
|
||||||
|
/*
|
||||||
|
If path is "-", return standard input (as is common for many CLI apps). Otherwise, open path for reading.
|
||||||
|
|
||||||
|
This function is a convenience function for CLI apps, so that they don't need to check path and open standard
|
||||||
|
input if necessary.
|
||||||
|
*/
|
||||||
|
static Result<SharedPtr<File>> open_input_file(StringView path);
|
||||||
|
|
||||||
static SharedPtr<File> standard_input();
|
static SharedPtr<File> standard_input();
|
||||||
static SharedPtr<File> standard_output();
|
static SharedPtr<File> standard_output();
|
||||||
static SharedPtr<File> standard_error();
|
static SharedPtr<File> standard_error();
|
||||||
|
@ -82,6 +82,13 @@ namespace os
|
|||||||
return construct(path, (int)flags | (O_CREAT | O_EXCL), mode);
|
return construct(path, (int)flags | (O_CREAT | O_EXCL), mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result<SharedPtr<File>> File::open_input_file(StringView path)
|
||||||
|
{
|
||||||
|
if (path == "-"_sv) return standard_input();
|
||||||
|
|
||||||
|
return construct(path, O_RDONLY, 0);
|
||||||
|
}
|
||||||
|
|
||||||
Result<usize> File::raw_read(u8* buf, usize length)
|
Result<usize> File::raw_read(u8* buf, usize length)
|
||||||
{
|
{
|
||||||
long rc = syscall(SYS_read, m_fd, buf, length);
|
long rc = syscall(SYS_read, m_fd, buf, length);
|
||||||
|
Loading…
Reference in New Issue
Block a user