Serenity Operating System
1/*
2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include "Forward.h"
10#include <AK/DeprecatedString.h>
11#include <AK/Forward.h>
12#include <AK/Vector.h>
13#include <LibCore/ElapsedTimer.h>
14
15namespace Shell {
16
17class FileDescriptionCollector {
18public:
19 FileDescriptionCollector() = default;
20 ~FileDescriptionCollector();
21
22 void collect();
23 void add(int fd);
24
25private:
26 Vector<int, 32> m_fds;
27};
28
29class SavedFileDescriptors {
30public:
31 SavedFileDescriptors(Vector<NonnullRefPtr<AST::Rewiring>> const&);
32 ~SavedFileDescriptors();
33
34private:
35 struct SavedFileDescriptor {
36 int original { -1 };
37 int saved { -1 };
38 };
39
40 Vector<SavedFileDescriptor> m_saves;
41 FileDescriptionCollector m_collector;
42};
43
44}