1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 16:27:35 +00:00

Shell: Replace Result<T, E> use with ErrorOr<T>

This commit is contained in:
Andreas Kling 2021-11-07 11:36:11 +01:00
parent 184810a581
commit d1477bcb8e
3 changed files with 11 additions and 12 deletions

View file

@ -3583,24 +3583,24 @@ Vector<String> TildeValue::resolve_as_list(RefPtr<Shell> shell)
return { resolve_slices(shell, shell->expand_tilde(builder.to_string()), m_slices) }; return { resolve_slices(shell, shell->expand_tilde(builder.to_string()), m_slices) };
} }
Result<NonnullRefPtr<Rewiring>, String> CloseRedirection::apply() const ErrorOr<NonnullRefPtr<Rewiring>> CloseRedirection::apply() const
{ {
return adopt_ref(*new Rewiring(fd, fd, Rewiring::Close::ImmediatelyCloseNew)); return adopt_nonnull_ref_or_enomem(new (nothrow) Rewiring(fd, fd, Rewiring::Close::ImmediatelyCloseNew));
} }
CloseRedirection::~CloseRedirection() CloseRedirection::~CloseRedirection()
{ {
} }
Result<NonnullRefPtr<Rewiring>, String> PathRedirection::apply() const ErrorOr<NonnullRefPtr<Rewiring>> PathRedirection::apply() const
{ {
auto check_fd_and_return = [my_fd = this->fd](int fd, const String& path) -> Result<NonnullRefPtr<Rewiring>, String> { auto check_fd_and_return = [my_fd = this->fd](int fd, String const& path) -> ErrorOr<NonnullRefPtr<Rewiring>> {
if (fd < 0) { if (fd < 0) {
String error = strerror(errno); auto error = Error::from_errno(errno);
dbgln("open() failed for '{}' with {}", path, error); dbgln("open() failed for '{}' with {}", path, error);
return error; return error;
} }
return adopt_ref(*new Rewiring(fd, my_fd, Rewiring::Close::Old)); return adopt_nonnull_ref_or_enomem(new (nothrow) Rewiring(fd, my_fd, Rewiring::Close::Old));
}; };
switch (direction) { switch (direction) {
case AST::PathRedirection::WriteAppend: case AST::PathRedirection::WriteAppend:

View file

@ -84,7 +84,7 @@ struct Rewiring : public RefCounted<Rewiring> {
}; };
struct Redirection : public RefCounted<Redirection> { struct Redirection : public RefCounted<Redirection> {
virtual Result<NonnullRefPtr<Rewiring>, String> apply() const = 0; virtual ErrorOr<NonnullRefPtr<Rewiring>> apply() const = 0;
virtual ~Redirection(); virtual ~Redirection();
virtual bool is_path_redirection() const { return false; } virtual bool is_path_redirection() const { return false; }
virtual bool is_fd_redirection() const { return false; } virtual bool is_fd_redirection() const { return false; }
@ -94,7 +94,7 @@ struct Redirection : public RefCounted<Redirection> {
struct CloseRedirection : public Redirection { struct CloseRedirection : public Redirection {
int fd { -1 }; int fd { -1 };
virtual Result<NonnullRefPtr<Rewiring>, String> apply() const override; virtual ErrorOr<NonnullRefPtr<Rewiring>> apply() const override;
virtual ~CloseRedirection(); virtual ~CloseRedirection();
CloseRedirection(int fd) CloseRedirection(int fd)
: fd(fd) : fd(fd)
@ -120,7 +120,7 @@ struct PathRedirection : public Redirection {
return adopt_ref(*new PathRedirection(move(path), fd, direction)); return adopt_ref(*new PathRedirection(move(path), fd, direction));
} }
virtual Result<NonnullRefPtr<Rewiring>, String> apply() const override; virtual ErrorOr<NonnullRefPtr<Rewiring>> apply() const override;
virtual ~PathRedirection(); virtual ~PathRedirection();
private: private:
@ -148,7 +148,7 @@ public:
virtual ~FdRedirection(); virtual ~FdRedirection();
virtual Result<NonnullRefPtr<Rewiring>, String> apply() const override virtual ErrorOr<NonnullRefPtr<Rewiring>> apply() const override
{ {
return adopt_ref(*new Rewiring(old_fd, new_fd, other_pipe_end, action)); return adopt_ref(*new Rewiring(old_fd, new_fd, other_pipe_end, action));
} }

View file

@ -603,8 +603,7 @@ RefPtr<Job> Shell::run_command(const AST::Command& command)
auto resolve_redirection = [&](auto& redirection) -> IterationDecision { auto resolve_redirection = [&](auto& redirection) -> IterationDecision {
auto rewiring_result = redirection.apply(); auto rewiring_result = redirection.apply();
if (rewiring_result.is_error()) { if (rewiring_result.is_error()) {
if (!rewiring_result.error().is_empty()) warnln("error: {}", rewiring_result.error());
warnln("error: {}", rewiring_result.error());
return IterationDecision::Break; return IterationDecision::Break;
} }
auto& rewiring = rewiring_result.value(); auto& rewiring = rewiring_result.value();