Skip to content

Commit 68b704d

Browse files
committed
Move QlFileDes definition to POSIX
1 parent bc65ff3 commit 68b704d

File tree

2 files changed

+30
-30
lines changed

2 files changed

+30
-30
lines changed

qiling/os/posix/posix.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#
55

66
from inspect import signature, Parameter
7-
from typing import TextIO, Union, Callable
7+
from typing import TextIO, Union, Callable, IO, List, Optional
88

99
from unicorn.arm64_const import UC_ARM64_REG_X8, UC_ARM64_REG_X16
1010
from unicorn.arm_const import UC_ARM_REG_R7
@@ -18,7 +18,7 @@
1818
from qiling.exception import QlErrorSyscallNotFound
1919
from qiling.os.os import QlOs
2020
from qiling.os.posix.const import errors
21-
from qiling.utils import QlFileDes, ostype_convert_str, ql_get_module_function, ql_syscall_mapping_function
21+
from qiling.utils import ostype_convert_str, ql_get_module_function, ql_syscall_mapping_function
2222

2323
from qiling.os.posix.syscall import *
2424
from qiling.os.linux.syscall import *
@@ -58,6 +58,33 @@ class riscv32(riscv.riscv):
5858
class riscv64(riscv.riscv):
5959
pass
6060

61+
62+
class QlFileDes:
63+
def __init__(self):
64+
self.__fds: List[Optional[IO]] = [None] * NR_OPEN
65+
66+
def __len__(self):
67+
return len(self.__fds)
68+
69+
def __getitem__(self, idx: int):
70+
return self.__fds[idx]
71+
72+
def __setitem__(self, idx: int, val: Optional[IO]):
73+
self.__fds[idx] = val
74+
75+
def __iter__(self):
76+
return iter(self.__fds)
77+
78+
def __repr__(self):
79+
return repr(self.__fds)
80+
81+
def save(self):
82+
return self.__fds
83+
84+
def restore(self, fds):
85+
self.__fds = fds
86+
87+
6188
class QlOsPosix(QlOs):
6289

6390
def __init__(self, ql: Qiling):

qiling/utils.py

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -12,41 +12,14 @@
1212
import importlib, os, pefile, yaml
1313

1414
from configparser import ConfigParser
15-
from typing import Any, Container, IO, List, Optional, Tuple, Type, Union
15+
from typing import Any, Container, Optional, Tuple, Type, Union
1616
from enum import Enum
1717

1818
from unicorn import UC_ERR_READ_UNMAPPED, UC_ERR_FETCH_UNMAPPED
1919

2020
from qiling.exception import *
2121
from qiling.const import QL_ARCH, QL_ENDIAN, QL_OS, QL_DEBUGGER
2222
from qiling.const import debugger_map, arch_map, os_map, arch_os_map
23-
from qiling.os.posix.const import NR_OPEN
24-
25-
class QlFileDes:
26-
def __init__(self):
27-
self.__fds: List[Optional[IO]] = [None] * NR_OPEN
28-
29-
def __len__(self):
30-
return len(self.__fds)
31-
32-
def __getitem__(self, idx: int):
33-
return self.__fds[idx]
34-
35-
def __setitem__(self, idx: int, val: Optional[IO]):
36-
self.__fds[idx] = val
37-
38-
def __iter__(self):
39-
return iter(self.__fds)
40-
41-
def __repr__(self):
42-
return repr(self.__fds)
43-
44-
def save(self):
45-
return self.__fds
46-
47-
def restore(self, fds):
48-
self.__fds = fds
49-
5023

5124
def catch_KeyboardInterrupt(ql):
5225
def decorator(func):

0 commit comments

Comments
 (0)