mirror of
https://github.com/SerenityOS/serenity
synced 2026-05-11 17:37:00 +02:00
This change ensures that users can use LibShell easily understand this library now, because we have an actual library directory. In addition to that, we move the test scripts to Tests/LibShell, to match the usual pattern of putting test-related files in the Tests/ directory.
44 lines
785 B
C++
44 lines
785 B
C++
/*
|
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "Forward.h"
|
|
#include <AK/Forward.h>
|
|
#include <AK/Vector.h>
|
|
#include <LibCore/ElapsedTimer.h>
|
|
|
|
namespace Shell {
|
|
|
|
class FileDescriptionCollector {
|
|
public:
|
|
FileDescriptionCollector() = default;
|
|
~FileDescriptionCollector();
|
|
|
|
void collect();
|
|
void add(int fd);
|
|
|
|
private:
|
|
Vector<int, 32> m_fds;
|
|
};
|
|
|
|
class SavedFileDescriptors {
|
|
public:
|
|
SavedFileDescriptors(Vector<NonnullRefPtr<AST::Rewiring>> const&);
|
|
~SavedFileDescriptors();
|
|
|
|
private:
|
|
struct SavedFileDescriptor {
|
|
int original { -1 };
|
|
int saved { -1 };
|
|
};
|
|
|
|
Vector<SavedFileDescriptor> m_saves;
|
|
FileDescriptionCollector m_collector;
|
|
};
|
|
|
|
}
|