1//===-- FileAction.h --------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_HOST_FILEACTION_H
10#define LLDB_HOST_FILEACTION_H
11
12#include "lldb/Utility/FileSpec.h"
13#include <string>
14
15namespace lldb_private {
16
17class FileAction {
18public:
19 enum Action {
20 eFileActionNone,
21 eFileActionClose,
22 eFileActionDuplicate,
23 eFileActionOpen
24 };
25
26 FileAction();
27
28 void Clear();
29
30 bool Close(int fd);
31
32 bool Duplicate(int fd, int dup_fd);
33
34 bool Open(int fd, const FileSpec &file_spec, bool read, bool write);
35
36 int GetFD() const { return m_fd; }
37
38 Action GetAction() const { return m_action; }
39
40 int GetActionArgument() const { return m_arg; }
41
42 llvm::StringRef GetPath() const;
43
44 const FileSpec &GetFileSpec() const;
45
46 void Dump(Stream &stream) const;
47
48protected:
49 Action m_action = eFileActionNone; // The action for this file
50 int m_fd = -1; // An existing file descriptor
51 int m_arg = -1; // oflag for eFileActionOpen*, dup_fd for eFileActionDuplicate
52 FileSpec
53 m_file_spec; // A file spec to use for opening after fork or posix_spawn
54};
55
56} // namespace lldb_private
57
58#endif
59

source code of lldb/include/lldb/Host/FileAction.h