summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/Applications/PaperWork/Map.txt910
-rw-r--r--Source/Kernel/VFS/FSNode-sc.proto.cpp1
-rw-r--r--Source/Kernel/VTManager/VirtualTerminal-kbd.proto.cpp3
-rw-r--r--Source/Library/Common/FileStream.class.cpp67
-rw-r--r--Source/Library/Common/FileStream.class.h41
-rw-r--r--Source/Library/Common/IStream.proto.cpp7
-rw-r--r--Source/Library/Common/IStream.proto.h3
-rw-r--r--Source/Library/Common/OStream.proto.cpp3
-rw-r--r--Source/Library/Common/OStream.proto.h3
-rw-r--r--Source/Library/Common/StringStream.class.cpp28
-rw-r--r--Source/Library/Common/StringStream.class.h35
-rw-r--r--Source/Library/Common/WChar.class.h2
-rw-r--r--Source/Library/Makefile2
-rw-r--r--Source/Library/Userland/App/ShellApp.proto.cpp4
-rw-r--r--Source/Library/Userland/App/ShellApp.proto.h1
-rw-r--r--Source/Library/Userland/Binding/VirtualTerminal.class.h13
16 files changed, 625 insertions, 498 deletions
diff --git a/Source/Applications/PaperWork/Map.txt b/Source/Applications/PaperWork/Map.txt
index f19b7ba..d44ef4f 100644
--- a/Source/Applications/PaperWork/Map.txt
+++ b/Source/Applications/PaperWork/Map.txt
@@ -116,27 +116,6 @@ Discarded input sections
.group 0x00000000 0x8 ../../Library/Melon.o
.group 0x00000000 0x8 ../../Library/Melon.o
.group 0x00000000 0x8 ../../Library/Melon.o
- .group 0x00000000 0x8 ../../Library/Melon.o
- .group 0x00000000 0x8 ../../Library/Melon.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
- .group 0x00000000 0x8 PaperWork.o
.group 0x00000000 0x8 PaperWork.o
.group 0x00000000 0x8 PaperWork.o
.group 0x00000000 0x8 PaperWork.o
@@ -191,40 +170,16 @@ Discarded input sections
0x00000000 0x1a PaperWork.o
.text._ZNK6StringeqEPKc
0x00000000 0x22 PaperWork.o
- .text._ZN6StringpLEPKc
- 0x00000000 0x22 PaperWork.o
.text._ZN6StringD1Ev
0x00000000 0x30 PaperWork.o
.text._ZN6StringD0Ev
0x00000000 0x30 PaperWork.o
- .text._ZN7OStreamD2Ev
- 0x00000000 0x30 PaperWork.o
- .text._ZN7OStreamD1Ev
- 0x00000000 0x30 PaperWork.o
- .text._ZN7OStreamD0Ev
- 0x00000000 0x30 PaperWork.o
.text._ZN7OStreamlsERK6String
0x00000000 0x59 PaperWork.o
- .text._ZN15VirtualTerminalD1Ev
- 0x00000000 0x50 PaperWork.o
- .text._ZN15VirtualTerminalD0Ev
- 0x00000000 0x50 PaperWork.o
- .text._ZN15VirtualTerminal5writeERK6String
- 0x00000000 0x45 PaperWork.o
- .text._ZN15VirtualTerminal4readEv
- 0x00000000 0x9f PaperWork.o
.text._ZN7Process3getEv
0x00000000 0x5a PaperWork.o
.text._ZN7ProcessC1Ej
0x00000000 0x22 PaperWork.o
- .text._ZN11ApplicationD2Ev
- 0x00000000 0x25 PaperWork.o
- .text._ZN11ApplicationD1Ev
- 0x00000000 0x25 PaperWork.o
- .text._ZN11ApplicationD0Ev
- 0x00000000 0x25 PaperWork.o
- .text._ZN11Application4initEv
- 0x00000000 0x5 PaperWork.o
.text._ZN11Application8doEventsEv
0x00000000 0x5 PaperWork.o
.text._ZN11BasicStringI5WCharEC2Ev
@@ -241,18 +196,6 @@ Discarded input sections
0x00000000 0xb8 PaperWork.o
.text._ZNK11BasicStringI5WCharE8containsERKS0_
0x00000000 0x5a PaperWork.o
- .text._ZN6VectorI6StringED1Ev
- 0x00000000 0x7b PaperWork.o
- .text._ZN6flag_tD1Ev
- 0x00000000 0x32 PaperWork.o
- .text._ZN6VectorI6flag_tED1Ev
- 0x00000000 0x5b PaperWork.o
- .rodata._ZTV11Application
- 0x00000000 0x1c PaperWork.o
- .rodata._ZTV15VirtualTerminal
- 0x00000000 0x2c PaperWork.o
- .rodata._ZTV7OStream
- 0x00000000 0x14 PaperWork.o
.rodata._ZTV6String
0x00000000 0x10 PaperWork.o
.rodata._ZTV11BasicStringI5WCharE
@@ -268,9 +211,9 @@ Linker script and memory map
LOAD ../../Library/Melon.o
0x10000000 . = 0x10000000
-.text 0x10000000 0x6490
+.text 0x10000000 0x66e0
*(.text)
- .text 0x10000000 0x5d4c ../../Library/Melon.o
+ .text 0x10000000 0x5f9c ../../Library/Melon.o
0x10000000 WChar::WChar()
0x1000000e WChar::WChar()
0x1000001c WChar::WChar(char)
@@ -345,779 +288,764 @@ LOAD ../../Library/Melon.o
0x1000390c OStream::put(String const&)
0x100039a2 OStream::flush()
0x10003b4a OStream::operator<<(ostream_modifiers_e)
- 0x10003ba8 IStream::IStream()
- 0x10003be4 IStream::IStream()
- 0x10003c20 IStream::IStream(IStream const&)
- 0x10003c5c IStream::IStream(IStream const&)
- 0x10003c98 IStream::~IStream()
- 0x10003cdc IStream::~IStream()
- 0x10003d20 IStream::~IStream()
- 0x10003d64 IStream::populate()
- 0x10003e02 IStream::getChar()
- 0x10003efa IStream::get(WChar)
- 0x100040f0 __cxa_pure_virtual
- 0x100040f5 __cxa_atexit
- 0x100040ff memmove
- 0x10004123 __udivdi3
- 0x10004169 __umoddi3
- 0x100041b8 ShellApp::ShellApp(String, String)
- 0x10004364 ShellApp::ShellApp(String, String)
- 0x10004510 ShellApp::init()
- 0x100056ac ShellApp::getFlag(String)
- 0x10005720 ShellApp::addFlag(WChar, String, String, int, String)
- 0x1000582e ShellApp::sFlag(String)
- 0x100058d4 ShellApp::iFlag(String)
- 0x10005934 ShellApp::bFlag(String)
- 0x10005994 syscall(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)
- 0x100059bf threadFinishedSyscall(unsigned int)
- 0x100059c9 breakPoint()
- 0x100059cf putch(char)
- 0x10005a17 sleep(unsigned int)
- 0x10005a52 write_hex(unsigned int)
- 0x10005a90 RessourceCaller::RessourceCaller(unsigned int, unsigned int)
- 0x10005b00 RessourceCaller::RessourceCaller(unsigned int, unsigned int)
- 0x10005b70 RessourceCaller::sCall(unsigned int, unsigned char, unsigned int, unsigned int, unsigned int, unsigned int)
- 0x10005bb6 RessourceCaller::doCall(unsigned char, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)
- 0x10005c18 start
- 0x10005cf9 Mem::alloc(unsigned int)
- 0x10005d1d Mem::free(void*)
- 0x10005d39 Mem::mkXchgSpace(unsigned int)
- .text 0x10005d4c 0x744 PaperWork.o
- 0x10005d4c PaperWork::run()
+ 0x10003bf4 IStream::IStream()
+ 0x10003c36 IStream::IStream()
+ 0x10003c78 IStream::IStream(IStream const&)
+ 0x10003cb4 IStream::IStream(IStream const&)
+ 0x10003cf0 IStream::~IStream()
+ 0x10003d34 IStream::~IStream()
+ 0x10003d78 IStream::~IStream()
+ 0x10003dbc IStream::populate()
+ 0x10003e76 IStream::getChar()
+ 0x10003f6e IStream::get(WChar)
+ 0x10004164 __cxa_pure_virtual
+ 0x10004169 __cxa_atexit
+ 0x10004173 memmove
+ 0x10004197 __udivdi3
+ 0x100041dd __umoddi3
+ 0x1000422c ShellApp::ShellApp(String, String)
+ 0x100043dc ShellApp::ShellApp(String, String)
+ 0x1000458c ShellApp::~ShellApp()
+ 0x10004626 ShellApp::~ShellApp()
+ 0x100046c0 ShellApp::~ShellApp()
+ 0x1000475a ShellApp::init()
+ 0x100058fa ShellApp::getFlag(String)
+ 0x1000596e ShellApp::addFlag(WChar, String, String, int, String)
+ 0x10005a7c ShellApp::sFlag(String)
+ 0x10005b22 ShellApp::iFlag(String)
+ 0x10005b82 ShellApp::bFlag(String)
+ 0x10005be4 syscall(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)
+ 0x10005c0f threadFinishedSyscall(unsigned int)
+ 0x10005c19 breakPoint()
+ 0x10005c1f putch(char)
+ 0x10005c67 sleep(unsigned int)
+ 0x10005ca2 write_hex(unsigned int)
+ 0x10005ce0 RessourceCaller::RessourceCaller(unsigned int, unsigned int)
+ 0x10005d50 RessourceCaller::RessourceCaller(unsigned int, unsigned int)
+ 0x10005dc0 RessourceCaller::sCall(unsigned int, unsigned char, unsigned int, unsigned int, unsigned int, unsigned int)
+ 0x10005e06 RessourceCaller::doCall(unsigned char, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)
+ 0x10005e68 start
+ 0x10005f49 Mem::alloc(unsigned int)
+ 0x10005f6d Mem::free(void*)
+ 0x10005f89 Mem::mkXchgSpace(unsigned int)
+ .text 0x10005f9c 0x744 PaperWork.o
+ 0x10005f9c PaperWork::run()
.text._ZN5WChareqEj
- 0x10006490 0x10
+ 0x100066e0 0x10
.text._ZN5WChareqEj
- 0x10006490 0x10 ../../Library/Melon.o
- 0x10006490 WChar::operator==(unsigned int)
+ 0x100066e0 0x10 ../../Library/Melon.o
+ 0x100066e0 WChar::operator==(unsigned int)
.text._ZNK5WCharcvjEv
- 0x100064a0 0xa
+ 0x100066f0 0xa
.text._ZNK5WCharcvjEv
- 0x100064a0 0xa ../../Library/Melon.o
- 0x100064a0 WChar::operator unsigned int() const
+ 0x100066f0 0xa ../../Library/Melon.o
+ 0x100066f0 WChar::operator unsigned int() const
.text._ZN6Thread3getEv
- 0x100064aa 0x5a
+ 0x100066fa 0x5a
.text._ZN6Thread3getEv
- 0x100064aa 0x5a ../../Library/Melon.o
- 0x100064aa Thread::get()
+ 0x100066fa 0x5a ../../Library/Melon.o
+ 0x100066fa Thread::get()
.text._ZN6ThreadC1Ej
- 0x10006504 0x22
+ 0x10006754 0x22
.text._ZN6ThreadC1Ej
- 0x10006504 0x22 ../../Library/Melon.o
- 0x10006504 Thread::Thread(unsigned int)
+ 0x10006754 0x22 ../../Library/Melon.o
+ 0x10006754 Thread::Thread(unsigned int)
.text._ZN6Thread5sleepEj
- 0x10006526 0x42
+ 0x10006776 0x42
.text._ZN6Thread5sleepEj
- 0x10006526 0x42 ../../Library/Melon.o
- 0x10006526 Thread::sleep(unsigned int)
+ 0x10006776 0x42 ../../Library/Melon.o
+ 0x10006776 Thread::sleep(unsigned int)
.text._ZN7Process3getEv
- 0x10006568 0x5a
+ 0x100067b8 0x5a
.text._ZN7Process3getEv
- 0x10006568 0x5a ../../Library/Melon.o
- 0x10006568 Process::get()
+ 0x100067b8 0x5a ../../Library/Melon.o
+ 0x100067b8 Process::get()
.text._ZN7ProcessC1Ej
- 0x100065c2 0x22
+ 0x10006812 0x22
.text._ZN7ProcessC1Ej
- 0x100065c2 0x22 ../../Library/Melon.o
- 0x100065c2 Process::Process(unsigned int)
+ 0x10006812 0x22 ../../Library/Melon.o
+ 0x10006812 Process::Process(unsigned int)
.text._ZN7Process10allocPagesEjj
- 0x100065e4 0x41
+ 0x10006834 0x41
.text._ZN7Process10allocPagesEjj
- 0x100065e4 0x41 ../../Library/Melon.o
- 0x100065e4 Process::allocPages(unsigned int, unsigned int)
+ 0x10006834 0x41 ../../Library/Melon.o
+ 0x10006834 Process::allocPages(unsigned int, unsigned int)
.text._ZN7Process9freePagesEjj
- 0x10006626 0x41
+ 0x10006876 0x41
.text._ZN7Process9freePagesEjj
- 0x10006626 0x41 ../../Library/Melon.o
- 0x10006626 Process::freePages(unsigned int, unsigned int)
+ 0x10006876 0x41 ../../Library/Melon.o
+ 0x10006876 Process::freePages(unsigned int, unsigned int)
-.text._ZnwjPv 0x10006667 0x8
- .text._ZnwjPv 0x10006667 0x8 ../../Library/Melon.o
- 0x10006667 operator new(unsigned int, void*)
+.text._ZnwjPv 0x100068b7 0x8
+ .text._ZnwjPv 0x100068b7 0x8 ../../Library/Melon.o
+ 0x100068b7 operator new(unsigned int, void*)
-.text._Znaj 0x1000666f 0x13
- .text._Znaj 0x1000666f 0x13 ../../Library/Melon.o
- 0x1000666f operator new[](unsigned int)
+.text._Znaj 0x100068bf 0x13
+ .text._Znaj 0x100068bf 0x13 ../../Library/Melon.o
+ 0x100068bf operator new[](unsigned int)
-.text._ZdlPv 0x10006682 0x13
- .text._ZdlPv 0x10006682 0x13 ../../Library/Melon.o
- 0x10006682 operator delete(void*)
+.text._ZdlPv 0x100068d2 0x13
+ .text._ZdlPv 0x100068d2 0x13 ../../Library/Melon.o
+ 0x100068d2 operator delete(void*)
-.text._ZdaPv 0x10006695 0x13
- .text._ZdaPv 0x10006695 0x13 ../../Library/Melon.o
- 0x10006695 operator delete[](void*)
+.text._ZdaPv 0x100068e5 0x13
+ .text._ZdaPv 0x100068e5 0x13 ../../Library/Melon.o
+ 0x100068e5 operator delete[](void*)
.text._ZN5WChar6affectEPKch
- 0x100066a8 0xb0
+ 0x100068f8 0xb0
.text._ZN5WChar6affectEPKch
- 0x100066a8 0xb0 ../../Library/Melon.o
- 0x100066a8 WChar::affect(char const*, unsigned char)
+ 0x100068f8 0xb0 ../../Library/Melon.o
+ 0x100068f8 WChar::affect(char const*, unsigned char)
.text._ZN5WCharaSEj
- 0x10006758 0x10
+ 0x100069a8 0x10
.text._ZN5WCharaSEj
- 0x10006758 0x10 ../../Library/Melon.o
- 0x10006758 WChar::operator=(unsigned int)
+ 0x100069a8 0x10 ../../Library/Melon.o
+ 0x100069a8 WChar::operator=(unsigned int)
.text._ZN6StringC1Ev
- 0x10006768 0x1c
+ 0x100069b8 0x1c
.text._ZN6StringC1Ev
- 0x10006768 0x1c ../../Library/Melon.o
- 0x10006768 String::String()
+ 0x100069b8 0x1c ../../Library/Melon.o
+ 0x100069b8 String::String()
.text._ZN6StringC1ERKS_
- 0x10006784 0x23
+ 0x100069d4 0x23
.text._ZN6StringC1ERKS_
- 0x10006784 0x23 ../../Library/Melon.o
- 0x10006784 String::String(String const&)
+ 0x100069d4 0x23 ../../Library/Melon.o
+ 0x100069d4 String::String(String const&)
.text._ZN6StringpLERKS_
- 0x100067a8 0x1d
+ 0x100069f8 0x1d
.text._ZN6StringpLERKS_
- 0x100067a8 0x1d ../../Library/Melon.o
- 0x100067a8 String::operator+=(String const&)
+ 0x100069f8 0x1d ../../Library/Melon.o
+ 0x100069f8 String::operator+=(String const&)
.text._ZN6StringpLE5WChar
- 0x100067c6 0x1d
+ 0x10006a16 0x1d
.text._ZN6StringpLE5WChar
- 0x100067c6 0x1d ../../Library/Melon.o
- 0x100067c6 String::operator+=(WChar)
+ 0x10006a16 0x1d ../../Library/Melon.o
+ 0x10006a16 String::operator+=(WChar)
.text._ZN6StringD1Ev
- 0x100067e4 0x30
+ 0x10006a34 0x30
.text._ZN6StringD1Ev
- 0x100067e4 0x30 ../../Library/Melon.o
- 0x100067e4 String::~String()
+ 0x10006a34 0x30 ../../Library/Melon.o
+ 0x10006a34 String::~String()
.text._ZN6StringD0Ev
- 0x10006814 0x30
+ 0x10006a64 0x30
.text._ZN6StringD0Ev
- 0x10006814 0x30 ../../Library/Melon.o
- 0x10006814 String::~String()
+ 0x10006a64 0x30 ../../Library/Melon.o
+ 0x10006a64 String::~String()
.text._ZN11BasicStringI5WCharEC2Ev
- 0x10006844 0x22
+ 0x10006a94 0x22
.text._ZN11BasicStringI5WCharEC2Ev
- 0x10006844 0x22 ../../Library/Melon.o
- 0x10006844 BasicString<WChar>::BasicString()
+ 0x10006a94 0x22 ../../Library/Melon.o
+ 0x10006a94 BasicString<WChar>::BasicString()
.text._ZN11BasicStringI5WCharED2Ev
- 0x10006866 0x3d
+ 0x10006ab6 0x3d
.text._ZN11BasicStringI5WCharED2Ev
- 0x10006866 0x3d ../../Library/Melon.o
- 0x10006866 BasicString<WChar>::~BasicString()
+ 0x10006ab6 0x3d ../../Library/Melon.o
+ 0x10006ab6 BasicString<WChar>::~BasicString()
.text._ZN11BasicStringI5WCharED1Ev
- 0x100068a4 0x3d
+ 0x10006af4 0x3d
.text._ZN11BasicStringI5WCharED1Ev
- 0x100068a4 0x3d ../../Library/Melon.o
- 0x100068a4 BasicString<WChar>::~BasicString()
+ 0x10006af4 0x3d ../../Library/Melon.o
+ 0x10006af4 BasicString<WChar>::~BasicString()
.text._ZN11BasicStringI5WCharED0Ev
- 0x100068e2 0x3d
+ 0x10006b32 0x3d
.text._ZN11BasicStringI5WCharED0Ev
- 0x100068e2 0x3d ../../Library/Melon.o
- 0x100068e2 BasicString<WChar>::~BasicString()
+ 0x10006b32 0x3d ../../Library/Melon.o
+ 0x10006b32 BasicString<WChar>::~BasicString()
.text._ZN11BasicStringI5WCharEC2ERKS1_
- 0x10006920 0x2d
+ 0x10006b70 0x2d
.text._ZN11BasicStringI5WCharEC2ERKS1_
- 0x10006920 0x2d ../../Library/Melon.o
- 0x10006920 BasicString<WChar>::BasicString(BasicString<WChar> const&)
+ 0x10006b70 0x2d ../../Library/Melon.o
+ 0x10006b70 BasicString<WChar>::BasicString(BasicString<WChar> const&)
.text._ZN11BasicStringI5WCharE6affectERKS1_
- 0x1000694e 0xb8
+ 0x10006b9e 0xb8
.text._ZN11BasicStringI5WCharE6affectERKS1_
- 0x1000694e 0xb8 ../../Library/Melon.o
- 0x1000694e BasicString<WChar>::affect(BasicString<WChar> const&)
+ 0x10006b9e 0xb8 ../../Library/Melon.o
+ 0x10006b9e BasicString<WChar>::affect(BasicString<WChar> const&)
.text._ZN11BasicStringI5WCharE6appendERKS1_
- 0x10006a06 0x105
+ 0x10006c56 0x105
.text._ZN11BasicStringI5WCharE6appendERKS1_
- 0x10006a06 0x105 ../../Library/Melon.o
- 0x10006a06 BasicString<WChar>::append(BasicString<WChar> const&)
+ 0x10006c56 0x105 ../../Library/Melon.o
+ 0x10006c56 BasicString<WChar>::append(BasicString<WChar> const&)
.text._ZN11BasicStringI5WCharE6appendES0_
- 0x10006b0c 0xd2
+ 0x10006d5c 0xd2
.text._ZN11BasicStringI5WCharE6appendES0_
- 0x10006b0c 0xd2 ../../Library/Melon.o
- 0x10006b0c BasicString<WChar>::append(WChar)
+ 0x10006d5c 0xd2 ../../Library/Melon.o
+ 0x10006d5c BasicString<WChar>::append(WChar)
.text._ZNK11BasicStringI5WCharEixEi
- 0x10006bde 0x13
+ 0x10006e2e 0x13
.text._ZNK11BasicStringI5WCharEixEi
- 0x10006bde 0x13 ../../Library/Melon.o
- 0x10006bde BasicString<WChar>::operator[](int) const
+ 0x10006e2e 0x13 ../../Library/Melon.o
+ 0x10006e2e BasicString<WChar>::operator[](int) const
.text._ZN6VectorI6StringEC1Ev
- 0x10006bf2 0x18
+ 0x10006e42 0x18
.text._ZN6VectorI6StringEC1Ev
- 0x10006bf2 0x18 ../../Library/Melon.o
- 0x10006bf2 Vector<String>::Vector()
+ 0x10006e42 0x18 ../../Library/Melon.o
+ 0x10006e42 Vector<String>::Vector()
.text._ZN6VectorI6StringE4pushERKS0_
- 0x10006c0a 0xb8
+ 0x10006e5a 0xb8
.text._ZN6VectorI6StringE4pushERKS0_
- 0x10006c0a 0xb8 ../../Library/Melon.o
- 0x10006c0a Vector<String>::push(String const&)
+ 0x10006e5a 0xb8 ../../Library/Melon.o
+ 0x10006e5a Vector<String>::push(String const&)
.text._ZNK6VectorI6StringE4backEv
- 0x10006cc2 0x1f
+ 0x10006f12 0x1f
.text._ZNK6VectorI6StringE4backEv
- 0x10006cc2 0x1f ../../Library/Melon.o
- 0x10006cc2 Vector<String>::back() const
+ 0x10006f12 0x1f ../../Library/Melon.o
+ 0x10006f12 Vector<String>::back() const
.text._ZN15RessourceCaller5validEv
- 0x10006ce2 0x10
+ 0x10006f32 0x10
.text._ZN15RessourceCaller5validEv
- 0x10006ce2 0x10 ../../Library/Melon.o
- 0x10006ce2 RessourceCaller::valid()
+ 0x10006f32 0x10 ../../Library/Melon.o
+ 0x10006f32 RessourceCaller::valid()
.text._ZN9ByteArrayC1Ev
- 0x10006cf2 0x1c
+ 0x10006f42 0x1c
.text._ZN9ByteArrayC1Ev
- 0x10006cf2 0x1c ../../Library/Melon.o
- 0x10006cf2 ByteArray::ByteArray()
+ 0x10006f42 0x1c ../../Library/Melon.o
+ 0x10006f42 ByteArray::ByteArray()
.text._ZN9ByteArrayC1ERK6Stringh
- 0x10006d0e 0x3c
+ 0x10006f5e 0x3c
.text._ZN9ByteArrayC1ERK6Stringh
- 0x10006d0e 0x3c ../../Library/Melon.o
- 0x10006d0e ByteArray::ByteArray(String const&, unsigned char)
+ 0x10006f5e 0x3c ../../Library/Melon.o
+ 0x10006f5e ByteArray::ByteArray(String const&, unsigned char)
.text._ZN9ByteArraycvPhEv
- 0x10006d4a 0xb
+ 0x10006f9a 0xb
.text._ZN9ByteArraycvPhEv
- 0x10006d4a 0xb ../../Library/Melon.o
- 0x10006d4a ByteArray::operator unsigned char*()
+ 0x10006f9a 0xb ../../Library/Melon.o
+ 0x10006f9a ByteArray::operator unsigned char*()
.text._ZN4File4readEjPh
- 0x10006d56 0x41
+ 0x10006fa6 0x41
.text._ZN4File4readEjPh
- 0x10006d56 0x41 ../../Library/Melon.o
- 0x10006d56 File::read(unsigned int, unsigned char*)
+ 0x10006fa6 0x41 ../../Library/Melon.o
+ 0x10006fa6 File::read(unsigned int, unsigned char*)
.text._ZN4File5writeEjPh
- 0x10006d98 0x46
+ 0x10006fe8 0x46
.text._ZN4File5writeEjPh
- 0x10006d98 0x46 ../../Library/Melon.o
- 0x10006d98 File::write(unsigned int, unsigned char*)
+ 0x10006fe8 0x46 ../../Library/Melon.o
+ 0x10006fe8 File::write(unsigned int, unsigned char*)
.text._ZN4File4readER9ByteArray
- 0x10006dde 0x89
+ 0x1000702e 0x89
.text._ZN4File4readER9ByteArray
- 0x10006dde 0x89 ../../Library/Melon.o
- 0x10006dde File::read(ByteArray&)
+ 0x1000702e 0x89 ../../Library/Melon.o
+ 0x1000702e File::read(ByteArray&)
.text._ZN4File5writeER9ByteArray
- 0x10006e68 0x51
+ 0x100070b8 0x51
.text._ZN4File5writeER9ByteArray
- 0x10006e68 0x51 ../../Library/Melon.o
- 0x10006e68 File::write(ByteArray&)
+ 0x100070b8 0x51 ../../Library/Melon.o
+ 0x100070b8 File::write(ByteArray&)
.text._ZN4File4seekEyh
- 0x10006eba 0x77
+ 0x1000710a 0x77
.text._ZN4File4seekEyh
- 0x10006eba 0x77 ../../Library/Melon.o
- 0x10006eba File::seek(unsigned long long, unsigned char)
+ 0x1000710a 0x77 ../../Library/Melon.o
+ 0x1000710a File::seek(unsigned long long, unsigned char)
.text._ZN9ByteArrayD1Ev
- 0x10006f32 0x30
+ 0x10007182 0x30
.text._ZN9ByteArrayD1Ev
- 0x10006f32 0x30 ../../Library/Melon.o
- 0x10006f32 ByteArray::~ByteArray()
+ 0x10007182 0x30 ../../Library/Melon.o
+ 0x10007182 ByteArray::~ByteArray()
.text._ZN9ByteArrayD0Ev
- 0x10006f62 0x30
+ 0x100071b2 0x30
.text._ZN9ByteArrayD0Ev
- 0x10006f62 0x30 ../../Library/Melon.o
- 0x10006f62 ByteArray::~ByteArray()
+ 0x100071b2 0x30 ../../Library/Melon.o
+ 0x100071b2 ByteArray::~ByteArray()
.text._ZN11BasicStringIhEC2Ev
- 0x10006f92 0x22
+ 0x100071e2 0x22
.text._ZN11BasicStringIhEC2Ev
- 0x10006f92 0x22 ../../Library/Melon.o
- 0x10006f92 BasicString<unsigned char>::BasicString()
+ 0x100071e2 0x22 ../../Library/Melon.o
+ 0x100071e2 BasicString<unsigned char>::BasicString()
.text._ZN11BasicStringIhED2Ev
- 0x10006fb4 0x3d
+ 0x10007204 0x3d
.text._ZN11BasicStringIhED2Ev
- 0x10006fb4 0x3d ../../Library/Melon.o
- 0x10006fb4 BasicString<unsigned char>::~BasicString()
+ 0x10007204 0x3d ../../Library/Melon.o
+ 0x10007204 BasicString<unsigned char>::~BasicString()
.text._ZN11BasicStringIhED1Ev
- 0x10006ff2 0x3d
+ 0x10007242 0x3d
.text._ZN11BasicStringIhED1Ev
- 0x10006ff2 0x3d ../../Library/Melon.o
- 0x10006ff2 BasicString<unsigned char>::~BasicString()
+ 0x10007242 0x3d ../../Library/Melon.o
+ 0x10007242 BasicString<unsigned char>::~BasicString()
.text._ZN11BasicStringIhED0Ev
- 0x10007030 0x3d
+ 0x10007280 0x3d
.text._ZN11BasicStringIhED0Ev
- 0x10007030 0x3d ../../Library/Melon.o
- 0x10007030 BasicString<unsigned char>::~BasicString()
+ 0x10007280 0x3d ../../Library/Melon.o
+ 0x10007280 BasicString<unsigned char>::~BasicString()
.text._ZNK11BasicStringIhE4sizeEv
- 0x1000706e 0xb
+ 0x100072be 0xb
.text._ZNK11BasicStringIhE4sizeEv
- 0x1000706e 0xb ../../Library/Melon.o
- 0x1000706e BasicString<unsigned char>::size() const
+ 0x100072be 0xb ../../Library/Melon.o
+ 0x100072be BasicString<unsigned char>::size() const
.text._ZNK11BasicStringIhEixEi
- 0x1000707a 0x11
+ 0x100072ca 0x11
.text._ZNK11BasicStringIhEixEi
- 0x1000707a 0x11 ../../Library/Melon.o
- 0x1000707a BasicString<unsigned char>::operator[](int) const
+ 0x100072ca 0x11 ../../Library/Melon.o
+ 0x100072ca BasicString<unsigned char>::operator[](int) const
.text._ZN11BasicStringIhE5clearEv
- 0x1000708c 0x34
+ 0x100072dc 0x34
.text._ZN11BasicStringIhE5clearEv
- 0x1000708c 0x34 ../../Library/Melon.o
- 0x1000708c BasicString<unsigned char>::clear()
+ 0x100072dc 0x34 ../../Library/Melon.o
+ 0x100072dc BasicString<unsigned char>::clear()
.text._ZN11BasicStringIhEpLEh
- 0x100070c0 0x21
+ 0x10007310 0x21
.text._ZN11BasicStringIhEpLEh
- 0x100070c0 0x21 ../../Library/Melon.o
- 0x100070c0 BasicString<unsigned char>::operator+=(unsigned char)
+ 0x10007310 0x21 ../../Library/Melon.o
+ 0x10007310 BasicString<unsigned char>::operator+=(unsigned char)
.text._ZN11BasicStringIhE6appendEh
- 0x100070e2 0x9c
+ 0x10007332 0x9c
.text._ZN11BasicStringIhE6appendEh
- 0x100070e2 0x9c ../../Library/Melon.o
- 0x100070e2 BasicString<unsigned char>::append(unsigned char)
+ 0x10007332 0x9c ../../Library/Melon.o
+ 0x10007332 BasicString<unsigned char>::append(unsigned char)
.text._ZN5WChar6encodeEh
- 0x1000717e 0x7a
+ 0x100073ce 0x7a
.text._ZN5WChar6encodeEh
- 0x1000717e 0x7a ../../Library/Melon.o
- 0x1000717e WChar::encode(unsigned char)
+ 0x100073ce 0x7a ../../Library/Melon.o
+ 0x100073ce WChar::encode(unsigned char)
.text._ZNK11BasicStringI5WCharE4sizeEv
- 0x100071f8 0xb
+ 0x10007448 0xb
.text._ZNK11BasicStringI5WCharE4sizeEv
- 0x100071f8 0xb ../../Library/Melon.o
- 0x100071f8 BasicString<WChar>::size() const
+ 0x10007448 0xb ../../Library/Melon.o
+ 0x10007448 BasicString<WChar>::size() const
-.text._Znwj 0x10007203 0x13
- .text._Znwj 0x10007203 0x13 ../../Library/Melon.o
- 0x10007203 operator new(unsigned int)
+.text._Znwj 0x10007453 0x13
+ .text._Znwj 0x10007453 0x13 ../../Library/Melon.o
+ 0x10007453 operator new(unsigned int)
.text._ZN6StringC1E5WCharj
- 0x10007216 0x2a
+ 0x10007466 0x2a
.text._ZN6StringC1E5WCharj
- 0x10007216 0x2a ../../Library/Melon.o
- 0x10007216 String::String(WChar, unsigned int)
+ 0x10007466 0x2a ../../Library/Melon.o
+ 0x10007466 String::String(WChar, unsigned int)
.text._ZN7OStreamD1Ev
- 0x10007240 0x30
+ 0x10007490 0x30
.text._ZN7OStreamD1Ev
- 0x10007240 0x30 ../../Library/Melon.o
- 0x10007240 OStream::~OStream()
+ 0x10007490 0x30 ../../Library/Melon.o
+ 0x10007490 OStream::~OStream()
.text._ZN7OStreamD0Ev
- 0x10007270 0x30
+ 0x100074c0 0x30
.text._ZN7OStreamD0Ev
- 0x10007270 0x30 ../../Library/Melon.o
- 0x10007270 OStream::~OStream()
+ 0x100074c0 0x30 ../../Library/Melon.o
+ 0x100074c0 OStream::~OStream()
.text._ZN11BasicStringI5WCharEC2ES0_j
- 0x100072a0 0x34
+ 0x100074f0 0x34
.text._ZN11BasicStringI5WCharEC2ES0_j
- 0x100072a0 0x34 ../../Library/Melon.o
- 0x100072a0 BasicString<WChar>::BasicString(WChar, unsigned int)
+ 0x100074f0 0x34 ../../Library/Melon.o
+ 0x100074f0 BasicString<WChar>::BasicString(WChar, unsigned int)
.text._ZN10SimpleListI6StringEC1ERKS0_PS1_
- 0x100072d4 0x23
+ 0x10007524 0x23
.text._ZN10SimpleListI6StringEC1ERKS0_PS1_
- 0x100072d4 0x23 ../../Library/Melon.o
- 0x100072d4 SimpleList<String>::SimpleList(String const&, SimpleList<String>*)
+ 0x10007524 0x23 ../../Library/Melon.o
+ 0x10007524 SimpleList<String>::SimpleList(String const&, SimpleList<String>*)
.text._ZN10SimpleListI6StringE8addAtEndERKS0_
- 0x100072f8 0x94
+ 0x10007548 0x94
.text._ZN10SimpleListI6StringE8addAtEndERKS0_
- 0x100072f8 0x94 ../../Library/Melon.o
- 0x100072f8 SimpleList<String>::addAtEnd(String const&)
+ 0x10007548 0x94 ../../Library/Melon.o
+ 0x10007548 SimpleList<String>::addAtEnd(String const&)
.text._ZN10SimpleListI6StringE4nextEv
- 0x1000738c 0xb
+ 0x100075dc 0xb
.text._ZN10SimpleListI6StringE4nextEv
- 0x1000738c 0xb ../../Library/Melon.o
- 0x1000738c SimpleList<String>::next()
+ 0x100075dc 0xb ../../Library/Melon.o
+ 0x100075dc SimpleList<String>::next()
.text._ZN10SimpleListI6StringE1vEv
- 0x10007398 0x8
+ 0x100075e8 0x8
.text._ZN10SimpleListI6StringE1vEv
- 0x10007398 0x8 ../../Library/Melon.o
- 0x10007398 SimpleList<String>::v()
+ 0x100075e8 0x8 ../../Library/Melon.o
+ 0x100075e8 SimpleList<String>::v()
.text._ZN10SimpleListI6StringED1Ev
- 0x100073a0 0x3c
+ 0x100075f0 0x3c
.text._ZN10SimpleListI6StringED1Ev
- 0x100073a0 0x3c ../../Library/Melon.o
- 0x100073a0 SimpleList<String>::~SimpleList()
+ 0x100075f0 0x3c ../../Library/Melon.o
+ 0x100075f0 SimpleList<String>::~SimpleList()
.text._ZN11BasicStringI5WCharE6affectES0_j
- 0x100073dc 0xb8
+ 0x1000762c 0xb8
.text._ZN11BasicStringI5WCharE6affectES0_j
- 0x100073dc 0xb8 ../../Library/Melon.o
- 0x100073dc BasicString<WChar>::affect(WChar, unsigned int)
+ 0x1000762c 0xb8 ../../Library/Melon.o
+ 0x1000762c BasicString<WChar>::affect(WChar, unsigned int)
.text._ZNK11BasicStringI5WCharE5emptyEv
- 0x10007494 0x10
+ 0x100076e4 0x10
.text._ZNK11BasicStringI5WCharE5emptyEv
- 0x10007494 0x10 ../../Library/Melon.o
- 0x10007494 BasicString<WChar>::empty() const
+ 0x100076e4 0x10 ../../Library/Melon.o
+ 0x100076e4 BasicString<WChar>::empty() const
.text._ZN10SimpleListI6StringE7delThisEv
- 0x100074a4 0x1f
+ 0x100076f4 0x1f
.text._ZN10SimpleListI6StringE7delThisEv
- 0x100074a4 0x1f ../../Library/Melon.o
- 0x100074a4 SimpleList<String>::delThis()
+ 0x100076f4 0x1f ../../Library/Melon.o
+ 0x100076f4 SimpleList<String>::delThis()
.text._Z5doDivyjPj
- 0x100074c3 0x76
+ 0x10007713 0x76
.text._Z5doDivyjPj
- 0x100074c3 0x76 ../../Library/Melon.o
- 0x100074c3 doDiv(unsigned long long, unsigned int, unsigned int*)
+ 0x10007713 0x76 ../../Library/Melon.o
+ 0x10007713 doDiv(unsigned long long, unsigned int, unsigned int*)
.text._ZN6StringaSERKS_
- 0x1000753a 0x1a
+ 0x1000778a 0x1a
.text._ZN6StringaSERKS_
- 0x1000753a 0x1a ../../Library/Melon.o
- 0x1000753a String::operator=(String const&)
+ 0x1000778a 0x1a ../../Library/Melon.o
+ 0x1000778a String::operator=(String const&)
.text._ZNK6StringeqEPKc
- 0x10007554 0x22
+ 0x100077a4 0x22
.text._ZNK6StringeqEPKc
- 0x10007554 0x22 ../../Library/Melon.o
- 0x10007554 String::operator==(char const*) const
+ 0x100077a4 0x22 ../../Library/Melon.o
+ 0x100077a4 String::operator==(char const*) const
.text._ZN6StringneEPKc
- 0x10007576 0x25
+ 0x100077c6 0x25
.text._ZN6StringneEPKc
- 0x10007576 0x25 ../../Library/Melon.o
- 0x10007576 String::operator!=(char const*)
+ 0x100077c6 0x25 ../../Library/Melon.o
+ 0x100077c6 String::operator!=(char const*)
.text._ZNK6StringeqERKS_
- 0x1000759c 0x1a
+ 0x100077ec 0x1a
.text._ZNK6StringeqERKS_
- 0x1000759c 0x1a ../../Library/Melon.o
- 0x1000759c String::operator==(String const&) const
+ 0x100077ec 0x1a ../../Library/Melon.o
+ 0x100077ec String::operator==(String const&) const
.text._ZN6StringpLEPKc
- 0x100075b6 0x22
+ 0x10007806 0x22
.text._ZN6StringpLEPKc
- 0x100075b6 0x22 ../../Library/Melon.o
- 0x100075b6 String::operator+=(char const*)
+ 0x10007806 0x22 ../../Library/Melon.o
+ 0x10007806 String::operator+=(char const*)
.text._ZNK6StringplERKS_
- 0x100075d8 0x30
+ 0x10007828 0x30
.text._ZNK6StringplERKS_
- 0x100075d8 0x30 ../../Library/Melon.o
- 0x100075d8 String::operator+(String const&) const
+ 0x10007828 0x30 ../../Library/Melon.o
+ 0x10007828 String::operator+(String const&) const
.text._ZNK6StringplEPKc
- 0x10007608 0x38
+ 0x10007858 0x38
.text._ZNK6StringplEPKc
- 0x10007608 0x38 ../../Library/Melon.o
- 0x10007608 String::operator+(char const*) const
+ 0x10007858 0x38 ../../Library/Melon.o
+ 0x10007858 String::operator+(char const*) const
.text._ZN7OStreamD2Ev
- 0x10007640 0x30
+ 0x10007890 0x30
.text._ZN7OStreamD2Ev
- 0x10007640 0x30 ../../Library/Melon.o
- 0x10007640 OStream::~OStream()
+ 0x10007890 0x30 ../../Library/Melon.o
+ 0x10007890 OStream::~OStream()
.text._ZN7OStreamlsERK6String
- 0x10007670 0x59
+ 0x100078c0 0x59
.text._ZN7OStreamlsERK6String
- 0x10007670 0x59 ../../Library/Melon.o
- 0x10007670 OStream::operator<<(String const&)
+ 0x100078c0 0x59 ../../Library/Melon.o
+ 0x100078c0 OStream::operator<<(String const&)
.text._ZN7OStreamlsEi
- 0x100076ca 0x3d
+ 0x1000791a 0x3d
.text._ZN7OStreamlsEi
- 0x100076ca 0x3d ../../Library/Melon.o
- 0x100076ca OStream::operator<<(int)
+ 0x1000791a 0x3d ../../Library/Melon.o
+ 0x1000791a OStream::operator<<(int)
.text._ZN15VirtualTerminalD1Ev
- 0x10007708 0x50
+ 0x10007958 0x50
.text._ZN15VirtualTerminalD1Ev
- 0x10007708 0x50 ../../Library/Melon.o
- 0x10007708 non-virtual thunk to VirtualTerminal::~VirtualTerminal()
- 0x10007710 VirtualTerminal::~VirtualTerminal()
+ 0x10007958 0x50 ../../Library/Melon.o
+ 0x10007958 non-virtual thunk to VirtualTerminal::~VirtualTerminal()
+ 0x10007960 VirtualTerminal::~VirtualTerminal()
.text._ZN15VirtualTerminalD0Ev
- 0x10007758 0x50
+ 0x100079a8 0x50
.text._ZN15VirtualTerminalD0Ev
- 0x10007758 0x50 ../../Library/Melon.o
- 0x10007758 non-virtual thunk to VirtualTerminal::~VirtualTerminal()
- 0x10007760 VirtualTerminal::~VirtualTerminal()
+ 0x100079a8 0x50 ../../Library/Melon.o
+ 0x100079a8 non-virtual thunk to VirtualTerminal::~VirtualTerminal()
+ 0x100079b0 VirtualTerminal::~VirtualTerminal()
.text._ZN15VirtualTerminal5getInEv
- 0x100077a8 0x5e
+ 0x100079f8 0x5e
.text._ZN15VirtualTerminal5getInEv
- 0x100077a8 0x5e ../../Library/Melon.o
- 0x100077a8 VirtualTerminal::getIn()
+ 0x100079f8 0x5e ../../Library/Melon.o
+ 0x100079f8 VirtualTerminal::getIn()
.text._ZN15VirtualTerminal6getOutEv
- 0x10007806 0x5e
+ 0x10007a56 0x5e
.text._ZN15VirtualTerminal6getOutEv
- 0x10007806 0x5e ../../Library/Melon.o
- 0x10007806 VirtualTerminal::getOut()
+ 0x10007a56 0x5e ../../Library/Melon.o
+ 0x10007a56 VirtualTerminal::getOut()
.text._ZN15VirtualTerminalC1Ej
- 0x10007864 0x51
+ 0x10007ab4 0x58
.text._ZN15VirtualTerminalC1Ej
- 0x10007864 0x51 ../../Library/Melon.o
- 0x10007864 VirtualTerminal::VirtualTerminal(unsigned int)
+ 0x10007ab4 0x58 ../../Library/Melon.o
+ 0x10007ab4 VirtualTerminal::VirtualTerminal(unsigned int)
.text._ZN15VirtualTerminal5writeERK6String
- 0x100078b6 0x45
+ 0x10007b0c 0x45
.text._ZN15VirtualTerminal5writeERK6String
- 0x100078b6 0x45 ../../Library/Melon.o
- 0x100078b6 VirtualTerminal::write(String const&)
+ 0x10007b0c 0x45 ../../Library/Melon.o
+ 0x10007b0c VirtualTerminal::write(String const&)
.text._ZN15VirtualTerminal4readEv
- 0x100078fc 0x9f
+ 0x10007b52 0x173
.text._ZN15VirtualTerminal4readEv
- 0x100078fc 0x9f ../../Library/Melon.o
- 0x100078fc non-virtual thunk to VirtualTerminal::read()
- 0x10007904 VirtualTerminal::read()
+ 0x10007b52 0x173 ../../Library/Melon.o
+ 0x10007b52 non-virtual thunk to VirtualTerminal::read()
+ 0x10007b5a VirtualTerminal::read()
.text._ZN7Process4argcEv
- 0x1000799c 0x43
+ 0x10007cc6 0x43
.text._ZN7Process4argcEv
- 0x1000799c 0x43 ../../Library/Melon.o
- 0x1000799c Process::argc()
+ 0x10007cc6 0x43 ../../Library/Melon.o
+ 0x10007cc6 Process::argc()
.text._ZN7Process4argvEj
- 0x100079e0 0x66
+ 0x10007d0a 0x66
.text._ZN7Process4argvEj
- 0x100079e0 0x66 ../../Library/Melon.o
- 0x100079e0 Process::argv(unsigned int)
+ 0x10007d0a 0x66 ../../Library/Melon.o
+ 0x10007d0a Process::argv(unsigned int)
.text._ZN11ApplicationC2Ev
- 0x10007a46 0x22
+ 0x10007d70 0x22
.text._ZN11ApplicationC2Ev
- 0x10007a46 0x22 ../../Library/Melon.o
- 0x10007a46 Application::Application()
+ 0x10007d70 0x22 ../../Library/Melon.o
+ 0x10007d70 Application::Application()
.text._ZN11ApplicationD2Ev
- 0x10007a68 0x25
+ 0x10007d92 0x25
.text._ZN11ApplicationD2Ev
- 0x10007a68 0x25 ../../Library/Melon.o
- 0x10007a68 Application::~Application()
+ 0x10007d92 0x25 ../../Library/Melon.o
+ 0x10007d92 Application::~Application()
.text._ZN11ApplicationD1Ev
- 0x10007a8e 0x25
+ 0x10007db8 0x25
.text._ZN11ApplicationD1Ev
- 0x10007a8e 0x25 ../../Library/Melon.o
- 0x10007a8e Application::~Application()
+ 0x10007db8 0x25 ../../Library/Melon.o
+ 0x10007db8 Application::~Application()
.text._ZN11ApplicationD0Ev
- 0x10007ab4 0x25
+ 0x10007dde 0x25
.text._ZN11ApplicationD0Ev
- 0x10007ab4 0x25 ../../Library/Melon.o
- 0x10007ab4 Application::~Application()
+ 0x10007dde 0x25 ../../Library/Melon.o
+ 0x10007dde Application::~Application()
.text._ZN11Application4initEv
- 0x10007ada 0x5
+ 0x10007e04 0x5
.text._ZN11Application4initEv
- 0x10007ada 0x5 ../../Library/Melon.o
- 0x10007ada Application::init()
+ 0x10007e04 0x5 ../../Library/Melon.o
+ 0x10007e04 Application::init()
.text._ZN11Application8doEventsEv
- 0x10007ae0 0x5
+ 0x10007e0a 0x5
.text._ZN11Application8doEventsEv
- 0x10007ae0 0x5 ../../Library/Melon.o
- 0x10007ae0 Application::doEvents()
+ 0x10007e0a 0x5 ../../Library/Melon.o
+ 0x10007e0a Application::doEvents()
.text._ZN11Application4exitEj
- 0x10007ae6 0x35
+ 0x10007e10 0x35
.text._ZN11Application4exitEj
- 0x10007ae6 0x35 ../../Library/Melon.o
- 0x10007ae6 Application::exit(unsigned int)
+ 0x10007e10 0x35 ../../Library/Melon.o
+ 0x10007e10 Application::exit(unsigned int)
.text._ZN6flag_tC1Ev
- 0x10007b1c 0x3d
+ 0x10007e46 0x3d
.text._ZN6flag_tC1Ev
- 0x10007b1c 0x3d ../../Library/Melon.o
- 0x10007b1c flag_t::flag_t()
+ 0x10007e46 0x3d ../../Library/Melon.o
+ 0x10007e46 flag_t::flag_t()
.text._ZN6flag_tD1Ev
- 0x10007b5a 0x32
+ 0x10007e84 0x32
.text._ZN6flag_tD1Ev
- 0x10007b5a 0x32 ../../Library/Melon.o
- 0x10007b5a flag_t::~flag_t()
+ 0x10007e84 0x32 ../../Library/Melon.o
+ 0x10007e84 flag_t::~flag_t()
.text._ZNK11BasicStringI5WCharE7compareERKS1_
- 0x10007b8c 0x84
+ 0x10007eb6 0x84
.text._ZNK11BasicStringI5WCharE7compareERKS1_
- 0x10007b8c 0x84 ../../Library/Melon.o
- 0x10007b8c BasicString<WChar>::compare(BasicString<WChar> const&) const
+ 0x10007eb6 0x84 ../../Library/Melon.o
+ 0x10007eb6 BasicString<WChar>::compare(BasicString<WChar> const&) const
.text._ZNK11BasicStringI5WCharE8containsERKS0_
- 0x10007c10 0x5a
+ 0x10007f3a 0x5a
.text._ZNK11BasicStringI5WCharE8containsERKS0_
- 0x10007c10 0x5a ../../Library/Melon.o
- 0x10007c10 BasicString<WChar>::contains(WChar const&) const
+ 0x10007f3a 0x5a ../../Library/Melon.o
+ 0x10007f3a BasicString<WChar>::contains(WChar const&) const
.text._ZN6VectorI6StringED1Ev
- 0x10007c6a 0x7b
+ 0x10007f94 0x7b
.text._ZN6VectorI6StringED1Ev
- 0x10007c6a 0x7b ../../Library/Melon.o
- 0x10007c6a Vector<String>::~Vector()
+ 0x10007f94 0x7b ../../Library/Melon.o
+ 0x10007f94 Vector<String>::~Vector()
.text._ZN6VectorI6flag_tEC1Ev
- 0x10007ce6 0x18
+ 0x10008010 0x18
.text._ZN6VectorI6flag_tEC1Ev
- 0x10007ce6 0x18 ../../Library/Melon.o
- 0x10007ce6 Vector<flag_t>::Vector()
+ 0x10008010 0x18 ../../Library/Melon.o
+ 0x10008010 Vector<flag_t>::Vector()
.text._ZN6VectorI6flag_tED1Ev
- 0x10007cfe 0x5b
+ 0x10008028 0x5b
.text._ZN6VectorI6flag_tED1Ev
- 0x10007cfe 0x5b ../../Library/Melon.o
- 0x10007cfe Vector<flag_t>::~Vector()
+ 0x10008028 0x5b ../../Library/Melon.o
+ 0x10008028 Vector<flag_t>::~Vector()
.text._ZNK6VectorI6flag_tE4sizeEv
- 0x10007d5a 0xb
+ 0x10008084 0xb
.text._ZNK6VectorI6flag_tE4sizeEv
- 0x10007d5a 0xb ../../Library/Melon.o
- 0x10007d5a Vector<flag_t>::size() const
+ 0x10008084 0xb ../../Library/Melon.o
+ 0x10008084 Vector<flag_t>::size() const
.text._ZNK6VectorI6flag_tEixEj
- 0x10007d66 0x13
+ 0x10008090 0x13
.text._ZNK6VectorI6flag_tEixEj
- 0x10007d66 0x13 ../../Library/Melon.o
- 0x10007d66 Vector<flag_t>::operator[](unsigned int) const
+ 0x10008090 0x13 ../../Library/Melon.o
+ 0x10008090 Vector<flag_t>::operator[](unsigned int) const
.text._ZN6flag_tC1ERKS_
- 0x10007d7a 0x7f
+ 0x100080a4 0x7f
.text._ZN6flag_tC1ERKS_
- 0x10007d7a 0x7f ../../Library/Melon.o
- 0x10007d7a flag_t::flag_t(flag_t const&)
+ 0x100080a4 0x7f ../../Library/Melon.o
+ 0x100080a4 flag_t::flag_t(flag_t const&)
.text._ZN6VectorI6flag_tE4pushERKS0_
- 0x10007dfa 0xa4
+ 0x10008124 0xa4
.text._ZN6VectorI6flag_tE4pushERKS0_
- 0x10007dfa 0xa4 ../../Library/Melon.o
- 0x10007dfa Vector<flag_t>::push(flag_t const&)
-
-.text._ZN8ShellAppD1Ev
- 0x10007e9e 0x84
- .text._ZN8ShellAppD1Ev
- 0x10007e9e 0x84 ../../Library/Melon.o
- 0x10007e9e ShellApp::~ShellApp()
-
-.text._ZN8ShellAppD0Ev
- 0x10007f22 0x84
- .text._ZN8ShellAppD0Ev
- 0x10007f22 0x84 ../../Library/Melon.o
- 0x10007f22 ShellApp::~ShellApp()
-
-.iplt 0x10007fa8 0x0 load address 0x10007fa6
+ 0x10008124 0xa4 ../../Library/Melon.o
+ 0x10008124 Vector<flag_t>::push(flag_t const&)
+
+.iplt 0x100081c8 0x0
.iplt 0x00000000 0x0 ../../Library/Melon.o
.text._ZNK15RessourceCaller5resIdEv
- 0x10007fa6 0xa
+ 0x100081c8 0xa
.text._ZNK15RessourceCaller5resIdEv
- 0x10007fa6 0xa PaperWork.o
- 0x10007fa6 RessourceCaller::resId() const
+ 0x100081c8 0xa PaperWork.o
+ 0x100081c8 RessourceCaller::resId() const
.text._ZN6StringaSEPKc
- 0x10007fb0 0x22
+ 0x100081d2 0x22
.text._ZN6StringaSEPKc
- 0x10007fb0 0x22 PaperWork.o
- 0x10007fb0 String::operator=(char const*)
+ 0x100081d2 0x22 PaperWork.o
+ 0x100081d2 String::operator=(char const*)
.text._ZN15VirtualTerminal8readLineEb
- 0x10007fd2 0x89
+ 0x100081f4 0x89
.text._ZN15VirtualTerminal8readLineEb
- 0x10007fd2 0x89 PaperWork.o
- 0x10007fd2 VirtualTerminal::readLine(bool)
+ 0x100081f4 0x89 PaperWork.o
+ 0x100081f4 VirtualTerminal::readLine(bool)
.text._ZN7Process3runERK6String
- 0x1000805b 0x53
+ 0x1000827d 0x53
.text._ZN7Process3runERK6String
- 0x1000805b 0x53 PaperWork.o
- 0x1000805b Process::run(String const&)
+ 0x1000827d 0x53 PaperWork.o
+ 0x1000827d Process::run(String const&)
.text._ZN7Process5startEv
- 0x100080ae 0x43
+ 0x100082d0 0x43
.text._ZN7Process5startEv
- 0x100080ae 0x43 PaperWork.o
- 0x100080ae Process::start()
+ 0x100082d0 0x43 PaperWork.o
+ 0x100082d0 Process::start()
.text._ZN7Process4waitEv
- 0x100080f2 0x43
+ 0x10008314 0x43
.text._ZN7Process4waitEv
- 0x100080f2 0x43 PaperWork.o
- 0x100080f2 Process::wait()
+ 0x10008314 0x43 PaperWork.o
+ 0x10008314 Process::wait()
.text._ZN7Process7pushArgERK6String
- 0x10008136 0x42
+ 0x10008358 0x42
.text._ZN7Process7pushArgERK6String
- 0x10008136 0x42 PaperWork.o
- 0x10008136 Process::pushArg(String const&)
+ 0x10008358 0x42 PaperWork.o
+ 0x10008358 Process::pushArg(String const&)
.text._ZN7Process7setInVTERK15VirtualTerminal
- 0x10008178 0x4d
+ 0x1000839a 0x4d
.text._ZN7Process7setInVTERK15VirtualTerminal
- 0x10008178 0x4d PaperWork.o
- 0x10008178 Process::setInVT(VirtualTerminal const&)
+ 0x1000839a 0x4d PaperWork.o
+ 0x1000839a Process::setInVT(VirtualTerminal const&)
.text._ZN7Process8setOutVTERK15VirtualTerminal
- 0x100081c6 0x4d
+ 0x100083e8 0x4d
.text._ZN7Process8setOutVTERK15VirtualTerminal
- 0x100081c6 0x4d PaperWork.o
- 0x100081c6 Process::setOutVT(VirtualTerminal const&)
+ 0x100083e8 0x4d PaperWork.o
+ 0x100083e8 Process::setOutVT(VirtualTerminal const&)
.text._ZN7Process14authenticatePWE6StringS0_
- 0x10008214 0x47
+ 0x10008436 0x47
.text._ZN7Process14authenticatePWE6StringS0_
- 0x10008214 0x47 PaperWork.o
- 0x10008214 Process::authenticatePW(String, String)
-
-.text._ZN8ShellAppD2Ev
- 0x1000825c 0x84
- .text._ZN8ShellAppD2Ev
- 0x1000825c 0x84 PaperWork.o
- 0x1000825c ShellApp::~ShellApp()
+ 0x10008436 0x47 PaperWork.o
+ 0x10008436 Process::authenticatePW(String, String)
.text._ZN9PaperWorkC1Ev
- 0x100082e0 0x2bf
+ 0x1000847e 0x2bf
.text._ZN9PaperWorkC1Ev
- 0x100082e0 0x2bf PaperWork.o
- 0x100082e0 PaperWork::PaperWork()
+ 0x1000847e 0x2bf PaperWork.o
+ 0x1000847e PaperWork::PaperWork()
.text._ZN9PaperWorkD1Ev
- 0x100085a0 0x30
+ 0x1000873e 0x30
.text._ZN9PaperWorkD1Ev
- 0x100085a0 0x30 PaperWork.o
- 0x100085a0 PaperWork::~PaperWork()
+ 0x1000873e 0x30 PaperWork.o
+ 0x1000873e PaperWork::~PaperWork()
.text._ZN9PaperWorkD0Ev
- 0x100085d0 0x30
+ 0x1000876e 0x30
.text._ZN9PaperWorkD0Ev
- 0x100085d0 0x30 PaperWork.o
- 0x100085d0 PaperWork::~PaperWork()
+ 0x1000876e 0x30 PaperWork.o
+ 0x1000876e PaperWork::~PaperWork()
-.rodata 0x10009000 0x3d2
+.rodata 0x10009000 0x3d6
*(.rodata)
- .rodata 0x10009000 0x28d ../../Library/Melon.o
- *fill* 0x1000928d 0x3 00
- .rodata 0x10009290 0x142 PaperWork.o
+ .rodata 0x10009000 0x291 ../../Library/Melon.o
+ *fill* 0x10009291 0x3 00
+ .rodata 0x10009294 0x142 PaperWork.o
.rodata._ZTV6String
0x100093d8 0x10
@@ -1304,10 +1232,6 @@ LOAD ../../Library/Melon.o
0x00000000 0x0 ../../Library/Melon.o
.rel.text._ZN6VectorI6flag_tE4pushERKS0_
0x00000000 0x0 ../../Library/Melon.o
- .rel.text._ZN8ShellAppD1Ev
- 0x00000000 0x0 ../../Library/Melon.o
- .rel.text._ZN8ShellAppD0Ev
- 0x00000000 0x0 ../../Library/Melon.o
.rel.rodata._ZTV6String
0x00000000 0x0 ../../Library/Melon.o
.rel.rodata._ZTV11BasicStringI5WCharE
@@ -1332,8 +1256,6 @@ LOAD ../../Library/Melon.o
0x00000000 0x0 ../../Library/Melon.o
.rel.text._ZN7Process8setOutVTERK15VirtualTerminal
0x00000000 0x0 ../../Library/Melon.o
- .rel.text._ZN8ShellAppD2Ev
- 0x00000000 0x0 ../../Library/Melon.o
.rel.text._ZN9PaperWorkC1Ev
0x00000000 0x0 ../../Library/Melon.o
.rel.rodata._ZTV9PaperWork
@@ -1364,7 +1286,7 @@ LOAD ../../Library/Melon.o
.igot.plt 0x1000a024 0x0
.igot.plt 0x00000000 0x0 ../../Library/Melon.o
-.bss 0x1000a040 0x2a4
+.bss 0x1000a040 0x2ac
0x1000a040 sbss = .
*(COMMON)
*(.bss)
@@ -1373,11 +1295,11 @@ LOAD ../../Library/Melon.o
0x1000a240 __dso_handle
0x1000a244 heap
*fill* 0x1000a248 0x18 00
- .bss 0x1000a260 0x84 PaperWork.o
- 0x1000a2e4 ebss = .
- 0x1000a2e4 end = .
- 0x1000a2e4 _end = .
- 0x1000a2e4 __end = .
+ .bss 0x1000a260 0x8c PaperWork.o
+ 0x1000a2ec ebss = .
+ 0x1000a2ec end = .
+ 0x1000a2ec _end = .
+ 0x1000a2ec __end = .
LOAD PaperWork.o
OUTPUT(PaperWork elf32-i386)
diff --git a/Source/Kernel/VFS/FSNode-sc.proto.cpp b/Source/Kernel/VFS/FSNode-sc.proto.cpp
index 717ccef..d86014c 100644
--- a/Source/Kernel/VFS/FSNode-sc.proto.cpp
+++ b/Source/Kernel/VFS/FSNode-sc.proto.cpp
@@ -90,6 +90,7 @@ bool FSNode::readable(User* user) {
}
bool FSNode::writable(User* user) {
+ if (!m_fs->isWritable()) return false;
if (ISROOT) return true;
if (user == 0) user = Usr::user();
if (user->getUid() == m_uid)
diff --git a/Source/Kernel/VTManager/VirtualTerminal-kbd.proto.cpp b/Source/Kernel/VTManager/VirtualTerminal-kbd.proto.cpp
index 5b551eb..e96c327 100644
--- a/Source/Kernel/VTManager/VirtualTerminal-kbd.proto.cpp
+++ b/Source/Kernel/VTManager/VirtualTerminal-kbd.proto.cpp
@@ -64,6 +64,9 @@ String VirtualTerminal::readLine(bool show) {
else if (show) put(" "); //Put a space so that cursor stays at same place
} else if (tmp.hascmd && !tmp.haschar && tmp.command == KBDC_TAB) {
ret += "\t";
+ } else if (tmp.hascmd && tmp.haschar && tmp.modifiers == STATUS_CTRL && tmp.character == WChar("d")) {
+ ret += EOF;
+ break;
} else if (tmp.haschar && !tmp.hascmd) {
ret += tmp.character;
}
diff --git a/Source/Library/Common/FileStream.class.cpp b/Source/Library/Common/FileStream.class.cpp
new file mode 100644
index 0000000..6154b2f
--- /dev/null
+++ b/Source/Library/Common/FileStream.class.cpp
@@ -0,0 +1,67 @@
+#include "FileStream.class.h"
+
+//************************************
+// INPUT FILE STREAM
+// ********************
+
+FileIStream::FileIStream(const String &filename, u8int encoding, FSNode start) {
+ m_file = new File(filename, FM_READ, start);
+ m_encoding = encoding;
+}
+
+FileIStream::~FileIStream() {
+ if (m_file != 0) {
+ m_file->close();
+ delete m_file;
+ }
+}
+
+void FileIStream::appendFile(const String &filename) {
+ if (m_filenames == 0) {
+ m_filenames = new SimpleList<String>(filename);
+ } else {
+ m_filenames->addAtEnd(filename);
+ }
+}
+
+String FileIStream::read() {
+ if (m_file == 0) return "";
+ while (m_file->eof() or !m_file->valid()) {
+ m_file->close();
+ delete m_file;
+ m_file = 0;
+ if (m_filenames == 0) {
+ return "";
+ } else {
+#ifdef THIS_IS_MELON_KERNEL
+ m_file = new File(m_filenames->v(), FM_READ);
+#else
+ m_file = new File(m_filenames->v(), FM_READ, FS::cwdNode());
+#endif
+ m_filenames = m_filenames->delThis();
+ }
+ }
+ ByteArray temp;
+ temp.resize(512);
+ u32int r = m_file->read(temp);
+ temp.resize(r);
+ return temp.toString(m_encoding);
+}
+
+//************************************
+// OUTPUT FILE STREAM
+// ********************
+
+FileOStream::FileOStream(const String& filename, u8int mode, u8int encoding, FSNode start) {
+ m_file = new File(filename, mode, start);
+ m_encoding = encoding;
+}
+
+FileOStream::~FileOStream() {
+ delete m_file;
+}
+
+void FileOStream::write(const String &s) {
+ ByteArray a(s, m_encoding);
+ m_file->write(a);
+}
diff --git a/Source/Library/Common/FileStream.class.h b/Source/Library/Common/FileStream.class.h
new file mode 100644
index 0000000..d0fb971
--- /dev/null
+++ b/Source/Library/Common/FileStream.class.h
@@ -0,0 +1,41 @@
+#ifndef DEF_FILESTREAM_CLASS_H
+#define DEF_FILESTREAM_CLASS_H
+
+#include <IStream.proto.h>
+#include <OStream.proto.h>
+
+#ifdef THIS_IS_MELON_KERNEL
+#include <VFS/File.class.h>
+#else
+#include <Binding/File.class.h>
+#endif
+
+class FileIStream : public IStream {
+ private:
+ String read();
+
+ SimpleList<String> *m_filenames;
+
+ File *m_file;
+ u8int m_encoding;
+
+ public:
+ FileIStream(const String &filename, u8int encoding = UE_UTF8, FSNode start = FSNode(0));
+ ~FileIStream();
+
+ void appendFile(const String &filename);
+};
+
+class FileOStream : public OStream {
+ private:
+ File *m_file;
+ u8int m_encoding;
+
+ public:
+ FileOStream(const String &filename, u8int mode, u8int encoding = UE_UTF8, FSNode start = FSNode(0));
+ ~FileOStream();
+
+ void write(const String &s);
+};
+
+#endif
diff --git a/Source/Library/Common/IStream.proto.cpp b/Source/Library/Common/IStream.proto.cpp
index 0cc2a79..59c623e 100644
--- a/Source/Library/Common/IStream.proto.cpp
+++ b/Source/Library/Common/IStream.proto.cpp
@@ -3,6 +3,7 @@
IStream::IStream() {
m_buffer = NULL;
m_ptr = 0;
+ m_eof = false;
}
IStream::IStream(const IStream& other) {
@@ -15,8 +16,12 @@ IStream::~IStream() {
}
bool IStream::populate() {
+ if (m_eof) return false;
String s = read();
- if (s.empty()) return false;
+ if (s.empty()) {
+ m_eof = true;
+ return false;
+ }
if (m_buffer == NULL) {
m_buffer = new SimpleList<String>(s);
} else {
diff --git a/Source/Library/Common/IStream.proto.h b/Source/Library/Common/IStream.proto.h
index f689a22..e844726 100644
--- a/Source/Library/Common/IStream.proto.h
+++ b/Source/Library/Common/IStream.proto.h
@@ -10,6 +10,7 @@ class IStream : private Mutex {
SimpleList<String> *m_buffer;
int m_ptr;
void operator =(IStream& other);
+ bool m_eof;
bool populate();
@@ -21,6 +22,8 @@ class IStream : private Mutex {
IStream(const IStream& other);
virtual ~IStream();
+ bool eof() const { return m_eof && (m_buffer == NULL); }
+
WChar getChar();
String get(WChar delimiter = "\n");
String getWord() { return get(" "); }
diff --git a/Source/Library/Common/OStream.proto.cpp b/Source/Library/Common/OStream.proto.cpp
index bbf5dc3..ba876b3 100644
--- a/Source/Library/Common/OStream.proto.cpp
+++ b/Source/Library/Common/OStream.proto.cpp
@@ -55,6 +55,9 @@ OStream& OStream::operator<< (ostream_modifiers_e m) {
flush();
} else if (m == ENDL) {
put("\n");
+ } else if (m == END) {
+ put(String(EOF, 1));
+ flush();
}
return *this;
}
diff --git a/Source/Library/Common/OStream.proto.h b/Source/Library/Common/OStream.proto.h
index 2fc68e1..ff19e7b 100644
--- a/Source/Library/Common/OStream.proto.h
+++ b/Source/Library/Common/OStream.proto.h
@@ -7,7 +7,8 @@
enum ostream_modifiers_e {
FLUSH,
- ENDL
+ ENDL,
+ END
};
class OStream : private Mutex {
diff --git a/Source/Library/Common/StringStream.class.cpp b/Source/Library/Common/StringStream.class.cpp
new file mode 100644
index 0000000..c4377ce
--- /dev/null
+++ b/Source/Library/Common/StringStream.class.cpp
@@ -0,0 +1,28 @@
+#include "StringStream.class.h"
+
+StringIStream::StringIStream(const String &e) {
+ m_elements = new SimpleList<String>(e);
+}
+
+StringIStream::StringIStream() {
+ m_elements = 0;
+}
+
+StringIStream::~StringIStream() {
+ if (m_elements != 0) delete m_elements;
+}
+
+String StringIStream::read() {
+ if (m_elements == 0) return "";
+ String ret = m_elements->v();
+ m_elements = m_elements->delThis();
+ return ret;
+}
+
+void StringIStream::append(const String &e) {
+ if (m_elements == 0) {
+ m_elements = new SimpleList<String>(e);
+ } else {
+ m_elements->addAtEnd(e);
+ }
+}
diff --git a/Source/Library/Common/StringStream.class.h b/Source/Library/Common/StringStream.class.h
new file mode 100644
index 0000000..814b539
--- /dev/null
+++ b/Source/Library/Common/StringStream.class.h
@@ -0,0 +1,35 @@
+#ifndef DEF_STRINGSTREAM_CLASS_H
+#define DEF_STRINGSTREAM_CLASS_H
+
+#include <IStream.proto.h>
+#include <OStream.proto.h>
+
+class StringIStream : public IStream {
+ private:
+ SimpleList<String> *m_elements;
+
+ String read();
+
+ public:
+ StringIStream(const String &e);
+ StringIStream();
+ ~StringIStream();
+
+ void append(const String &e);
+};
+
+class StringOStream : public OStream {
+ private:
+ String m_str;
+
+ void write(const String& s) { m_str += s; }
+
+ public:
+
+ const String &str() const { return m_str; }
+ void clear() { m_str = ""; }
+};
+
+
+#endif
+
diff --git a/Source/Library/Common/WChar.class.h b/Source/Library/Common/WChar.class.h
index afaeb44..6db4b1b 100644
--- a/Source/Library/Common/WChar.class.h
+++ b/Source/Library/Common/WChar.class.h
@@ -7,6 +7,8 @@
#include <common.h>
#endif
+#define EOF "\3"
+
enum {
UE_UTF8,
UE_UTF16_LE,
diff --git a/Source/Library/Makefile b/Source/Library/Makefile
index cee4944..83e3689 100644
--- a/Source/Library/Makefile
+++ b/Source/Library/Makefile
@@ -21,6 +21,8 @@ Objects = Common/WChar.class.uo \
Common/Rand.ns.uo \
Common/OStream.proto.uo \
Common/IStream.proto.uo \
+ Common/FileStream.class.uo \
+ Common/StringStream.class.uo \
Common/cppsupport.wtf.uo \
Userland/App/ShellApp.proto.uo \
Userland/Syscall/Syscall.wtf.uo \
diff --git a/Source/Library/Userland/App/ShellApp.proto.cpp b/Source/Library/Userland/App/ShellApp.proto.cpp
index f2233bc..9528ca2 100644
--- a/Source/Library/Userland/App/ShellApp.proto.cpp
+++ b/Source/Library/Userland/App/ShellApp.proto.cpp
@@ -9,6 +9,10 @@ ShellApp::ShellApp(String name, String desc)
addFlag("h", "help", "Show this help screen");
}
+ShellApp::~ShellApp() {
+ outvt << END;
+}
+
void ShellApp::init() {
//Parse flags
u32int argc = pr.argc();
diff --git a/Source/Library/Userland/App/ShellApp.proto.h b/Source/Library/Userland/App/ShellApp.proto.h
index 5575112..2308fd1 100644
--- a/Source/Library/Userland/App/ShellApp.proto.h
+++ b/Source/Library/Userland/App/ShellApp.proto.h
@@ -24,6 +24,7 @@ class ShellApp : public Application {
Vector<flag_t> flags;
String appName, appDesc;
ShellApp(String name, String desc);
+ ~ShellApp();
virtual void init();
diff --git a/Source/Library/Userland/Binding/VirtualTerminal.class.h b/Source/Library/Userland/Binding/VirtualTerminal.class.h
index 6576c1c..54bdc53 100644
--- a/Source/Library/Userland/Binding/VirtualTerminal.class.h
+++ b/Source/Library/Userland/Binding/VirtualTerminal.class.h
@@ -11,6 +11,9 @@
#include <WChar.class.h>
class VirtualTerminal : public RessourceCaller, public OStream, public IStream {
+ private:
+ bool m_eof;
+
public:
static VirtualTerminal getIn() {
u32int id = RessourceCaller::sCall(VTIF_OBJTYPE, VTIF_SGETPRINVT);
@@ -20,7 +23,7 @@ class VirtualTerminal : public RessourceCaller, public OStream, public IStream {
u32int id = RessourceCaller::sCall(VTIF_OBJTYPE, VTIF_SGETPROUTVT);
return VirtualTerminal(id);
}
- VirtualTerminal(u32int id) : RessourceCaller(id, VTIF_OBJTYPE) {}
+ VirtualTerminal(u32int id) : RessourceCaller(id, VTIF_OBJTYPE) { m_eof = false; }
/*void writeHex(u32int number) {
doCall(VTIF_WRITEHEX, number);
@@ -32,7 +35,13 @@ class VirtualTerminal : public RessourceCaller, public OStream, public IStream {
doCall(VTIF_WRITE, (u32int)&s);
}
String read() {
- return String::unserialize(doCall(VTIF_READLINE, 1)) += "\n";
+ if (m_eof) return "";
+ String ret = String::unserialize(doCall(VTIF_READLINE, 1));
+ if (ret[ret.size() - 1] == WChar(EOF)) {
+ ret = ret.substr(0, ret.size() - 1);
+ m_eof = true;
+ }
+ return ret += "\n";
}
keypress_t getKeypress(bool show = true, bool block = true) {
keypress_t* ptr = (keypress_t*)doCall(VTIF_GETKEYPRESS, (show ? 1 : 0) | (block ? 2 : 0));