summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorAlexis211 <alexis211@gmail.com>2009-12-20 19:39:46 +0100
committerAlexis211 <alexis211@gmail.com>2009-12-20 19:39:46 +0100
commit1d301e54da75b90172d129594265f2b629f3125a (patch)
tree1eb918a01ef7677c4328ef1d23a2538647448f0b /Source
parent13d720389a01161a327a30918ad7ac9eec4a3d6c (diff)
downloadMelon-1d301e54da75b90172d129594265f2b629f3125a.tar.gz
Melon-1d301e54da75b90172d129594265f2b629f3125a.zip
rot13, demo app for StreamApp, is working :)
Diffstat (limited to 'Source')
-rwxr-xr-xSource/Applications/Shell/Applets/rot13bin0 -> 73404 bytes
-rw-r--r--Source/Applications/Shell/Applets/rot13.cpp30
-rw-r--r--Source/Applications/Shell/Applets/rot13.map1371
-rw-r--r--Source/Applications/Shell/Makefile8
-rw-r--r--Source/Applications/Shell/Shell.class.cpp1
-rw-r--r--Source/Kernel/TaskManager/Thread.class.cpp6
-rw-r--r--Source/Library/Common/FileStream.class.cpp11
-rw-r--r--Source/Library/Common/IStream.proto.cpp5
-rw-r--r--Source/Library/Common/OStream.proto.cpp4
-rw-r--r--Source/Library/Userland/App/ShellApp.proto.cpp5
-rw-r--r--Source/Library/Userland/App/StreamApp.proto.cpp5
-rw-r--r--Source/Library/Userland/Binding/VirtualTerminal.class.h1
12 files changed, 1434 insertions, 13 deletions
diff --git a/Source/Applications/Shell/Applets/rot13 b/Source/Applications/Shell/Applets/rot13
new file mode 100755
index 0000000..5ec705f
--- /dev/null
+++ b/Source/Applications/Shell/Applets/rot13
Binary files differ
diff --git a/Source/Applications/Shell/Applets/rot13.cpp b/Source/Applications/Shell/Applets/rot13.cpp
new file mode 100644
index 0000000..79c2124
--- /dev/null
+++ b/Source/Applications/Shell/Applets/rot13.cpp
@@ -0,0 +1,30 @@
+#include <App/StreamApp.proto.h>
+
+class rot13 : public StreamApp {
+ public:
+ rot13() : StreamApp("rot13", "Cat a file, but ROT13 it") {}
+ int run();
+};
+
+APP(rot13);
+
+int rot13::run() {
+ while (!in->eof()) {
+ String s = in->get();
+ for (u32int i = 0; i < s.size(); i++) {
+ WChar &c = s[i];
+ if (c >= WChar('A') and c <= WChar('Z')) {
+ c += 13;
+ if (c > WChar('Z')) c -= 26;
+ }
+ if (c >= WChar('a') and c <= WChar('z')) {
+ c += 13;
+ if (c > WChar('z')) c -= 26;
+ }
+ }
+ if (in->eof() && s.empty()) break;
+ *out << s << ENDL;
+ }
+ return 0;
+}
+
diff --git a/Source/Applications/Shell/Applets/rot13.map b/Source/Applications/Shell/Applets/rot13.map
new file mode 100644
index 0000000..10461ef
--- /dev/null
+++ b/Source/Applications/Shell/Applets/rot13.map
@@ -0,0 +1,1371 @@
+
+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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../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 ../../Library/Melon.o
+ .group 0x00000000 0x8 ../../Library/Melon.o
+ .group 0x00000000 0x8 ../../Library/Melon.o
+ .group 0x00000000 0x8 ../../Library/Melon.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .group 0x00000000 0x8 Applets/rot13.o
+ .text._ZdlPv 0x00000000 0x13 Applets/rot13.o
+ .text._ZN5WChareqEj
+ 0x00000000 0x10 Applets/rot13.o
+ .text._ZNK5WCharcvjEv
+ 0x00000000 0xa Applets/rot13.o
+ .text._ZN6StringD1Ev
+ 0x00000000 0x30 Applets/rot13.o
+ .text._ZN6StringD0Ev
+ 0x00000000 0x30 Applets/rot13.o
+ .text._ZN7OStreamlsERK6String
+ 0x00000000 0x59 Applets/rot13.o
+ .text._ZN11Application8doEventsEv
+ 0x00000000 0x5 Applets/rot13.o
+ .text._ZN11BasicStringI5WCharED2Ev
+ 0x00000000 0x3d Applets/rot13.o
+ .text._ZN11BasicStringI5WCharED1Ev
+ 0x00000000 0x3d Applets/rot13.o
+ .text._ZN11BasicStringI5WCharED0Ev
+ 0x00000000 0x3d Applets/rot13.o
+ .text._ZNK11BasicStringI5WCharE8containsERKS0_
+ 0x00000000 0x5a Applets/rot13.o
+ .text._ZNK11BasicStringI5WCharE4sizeEv
+ 0x00000000 0xb Applets/rot13.o
+ .text._ZNK11BasicStringI5WCharEixEi
+ 0x00000000 0x13 Applets/rot13.o
+ .text._ZNK11BasicStringI5WCharE5emptyEv
+ 0x00000000 0x10 Applets/rot13.o
+ .rodata._ZTV6String
+ 0x00000000 0x10 Applets/rot13.o
+ .rodata._ZTV11BasicStringI5WCharE
+ 0x00000000 0x10 Applets/rot13.o
+
+Memory Configuration
+
+Name Origin Length Attributes
+*default* 0x00000000 0xffffffff
+
+Linker script and memory map
+
+LOAD ../../Library/Melon.o
+ 0x10000000 . = 0x10000000
+
+.text 0x10000000 0x777d
+ *(.text)
+ .text 0x10000000 0x746c ../../Library/Melon.o
+ 0x10000000 WChar::WChar()
+ 0x1000000e WChar::WChar()
+ 0x1000001c WChar::WChar(char)
+ 0x1000003e WChar::WChar(char)
+ 0x10000060 WChar::WChar(char const*, unsigned char)
+ 0x100000e6 WChar::WChar(char const*, unsigned char)
+ 0x1000016c WChar::ucharLen(char const*, unsigned char)
+ 0x10000298 WChar::utfLen(char const*, unsigned char)
+ 0x1000030c WChar::affectAscii(char)
+ 0x1000034c WChar::affectUtf8(char const*)
+ 0x10000514 WChar::affectUtf16be(char const*)
+ 0x10000684 WChar::affectUtf16le(char const*)
+ 0x100007f4 WChar::affectUtf32be(char const*)
+ 0x10000886 WChar::affectUtf32le(char const*)
+ 0x10000918 WChar::toAscii()
+ 0x10000978 WChar::toUtf8()
+ 0x10000a62 WChar::toUtf32be()
+ 0x10000a98 WChar::toUtf32le()
+ 0x10001894 CMem::memcpy(unsigned char*, unsigned char const*, unsigned int)
+ 0x1000192b CMem::memset(unsigned char*, unsigned char, int)
+ 0x10001962 CMem::memsetw(unsigned short*, unsigned short, int)
+ 0x1000199d CMem::strlen(char const*)
+ 0x100019cc atomic_exchange(unsigned int*, unsigned int)
+ 0x100019e4 Mutex::Mutex(unsigned int)
+ 0x100019f2 Mutex::Mutex(unsigned int)
+ 0x10001a00 Mutex::lock()
+ 0x10001a32 Mutex::waitLock()
+ 0x10001a7a Mutex::unlock()
+ 0x10001a88 Mutex::locked()
+ 0x10001a98 Heap::Heap()
+ 0x10001ae2 Heap::Heap()
+ 0x10001b2c Heap::~Heap()
+ 0x10001b32 Heap::~Heap()
+ 0x10001b38 Heap::create(unsigned int, unsigned int, unsigned int)
+ 0x10001c5e Heap::expand(unsigned int)
+ 0x10001d86 Heap::contract()
+ 0x10001ea4 Heap::alloc(unsigned int, bool)
+ 0x10002060 Heap::free(void*)
+ 0x100021fc Heap::insertIntoIndex(heap_header_t*)
+ 0x10002324 Heap::findIndexEntry(heap_header_t*)
+ 0x10002368 Heap::removeFromIndex(unsigned int)
+ 0x100023b6 Heap::removeFromIndex(heap_header_t*)
+ 0x100023ec String::hex(unsigned int)
+ 0x10002500 String::number(int)
+ 0x100026f0 String::unserialize(unsigned int)
+ 0x100027ae String::serialize() const
+ 0x10002824 String::String(char const*, unsigned char)
+ 0x10002874 String::String(char const*, unsigned char)
+ 0x100028c4 String::affect(char const*, unsigned char)
+ 0x100029e8 String::compare(char const*, unsigned char) const
+ 0x10002abe String::append(char const*, unsigned char)
+ 0x10002c32 String::concat(String const&) const
+ 0x10002c88 String::concat(char const*, unsigned char) const
+ 0x10002cec String::concat(WChar) const
+ 0x10002d42 String::toInt() const
+ 0x10002e44 String::toInt16() const
+ 0x10002f44 String::split(WChar) const
+ 0x1000304a String::substr(int, int)
+ 0x10003188 TextFile::write(String, bool)
+ 0x100031f6 TextFile::readLine(char)
+ 0x10003350 ByteArray::ByteArray(char const*)
+ 0x1000339c ByteArray::ByteArray(char const*)
+ 0x100033e8 ByteArray::affect(String const&, unsigned char)
+ 0x100035ea ByteArray::resize(unsigned int)
+ 0x100036d0 ByteArray::toString(unsigned char)
+ 0x10003770 Rand::rand()
+ 0x1000380d Rand::max()
+ 0x1000381c OStream::OStream()
+ 0x10003858 OStream::OStream()
+ 0x10003894 OStream::OStream(OStream const&)
+ 0x100038d0 OStream::OStream(OStream const&)
+ 0x1000390c OStream::put(String const&)
+ 0x100039b8 OStream::flush()
+ 0x10003b60 OStream::operator<<(ostream_modifiers_e)
+ 0x10003c18 IStream::IStream()
+ 0x10003c5a IStream::IStream()
+ 0x10003c9c IStream::IStream(IStream const&)
+ 0x10003cd8 IStream::IStream(IStream const&)
+ 0x10003d14 IStream::~IStream()
+ 0x10003d58 IStream::~IStream()
+ 0x10003d9c IStream::~IStream()
+ 0x10003de0 IStream::populate()
+ 0x10003e9a IStream::getChar()
+ 0x10003f92 IStream::get(WChar)
+ 0x100041d8 FileIStream::FileIStream(String const&, unsigned char, FSNode)
+ 0x1000427e FileIStream::FileIStream(String const&, unsigned char, FSNode)
+ 0x10004324 FileIStream::FileIStream(unsigned char, FSNode)
+ 0x10004374 FileIStream::FileIStream(unsigned char, FSNode)
+ 0x100043c4 FileIStream::~FileIStream()
+ 0x1000441a FileIStream::~FileIStream()
+ 0x10004470 FileIStream::~FileIStream()
+ 0x100044c6 FileIStream::appendFile(String const&)
+ 0x10004524 FileIStream::read()
+ 0x100046d6 FileOStream::FileOStream(String const&, unsigned char, unsigned char, FSNode)
+ 0x1000476c FileOStream::FileOStream(String const&, unsigned char, unsigned char, FSNode)
+ 0x10004802 FileOStream::~FileOStream()
+ 0x10004840 FileOStream::~FileOStream()
+ 0x1000487e FileOStream::~FileOStream()
+ 0x100048bc FileOStream::write(String const&)
+ 0x10004904 StringIStream::StringIStream(String const&)
+ 0x10004954 StringIStream::StringIStream(String const&)
+ 0x100049a4 StringIStream::StringIStream()
+ 0x100049ca StringIStream::StringIStream()
+ 0x100049f0 StringIStream::~StringIStream()
+ 0x10004a4a StringIStream::~StringIStream()
+ 0x10004aa4 StringIStream::~StringIStream()
+ 0x10004afe StringIStream::read()
+ 0x10004b88 StringIStream::append(String const&)
+ 0x10004be8 __cxa_pure_virtual
+ 0x10004bed __cxa_atexit
+ 0x10004bf7 memmove
+ 0x10004c1b __udivdi3
+ 0x10004c61 __umoddi3
+ 0x10004cb0 ShellApp::ShellApp(String const&, String const&)
+ 0x10004e60 ShellApp::ShellApp(String const&, String const&)
+ 0x10005010 ShellApp::~ShellApp()
+ 0x100050aa ShellApp::~ShellApp()
+ 0x10005144 ShellApp::~ShellApp()
+ 0x100051de ShellApp::init()
+ 0x100063bc ShellApp::getFlag(String)
+ 0x10006430 ShellApp::addFlag(WChar, String, String, int, String)
+ 0x1000653e ShellApp::sFlag(String)
+ 0x100065e4 ShellApp::iFlag(String)
+ 0x10006644 ShellApp::bFlag(String)
+ 0x100066a4 StreamApp::StreamApp(String const&, String const&)
+ 0x10006906 StreamApp::StreamApp(String const&, String const&)
+ 0x10006b68 StreamApp::~StreamApp()
+ 0x10006b98 StreamApp::~StreamApp()
+ 0x10006bc8 StreamApp::~StreamApp()
+ 0x10006bf8 StreamApp::init()
+ 0x100070b4 syscall(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)
+ 0x100070df threadFinishedSyscall(unsigned int)
+ 0x100070e9 breakPoint()
+ 0x100070ef putch(char)
+ 0x10007137 sleep(unsigned int)
+ 0x10007172 write_hex(unsigned int)
+ 0x100071b0 RessourceCaller::RessourceCaller(unsigned int, unsigned int)
+ 0x10007220 RessourceCaller::RessourceCaller(unsigned int, unsigned int)
+ 0x10007290 RessourceCaller::sCall(unsigned int, unsigned char, unsigned int, unsigned int, unsigned int, unsigned int)
+ 0x100072d6 RessourceCaller::doCall(unsigned char, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)
+ 0x10007338 start
+ 0x10007419 Mem::alloc(unsigned int)
+ 0x1000743d Mem::free(void*)
+ 0x10007459 Mem::mkXchgSpace(unsigned int)
+ .text 0x1000746c 0x311 Applets/rot13.o
+ 0x1000746c rot13::run()
+
+.text._ZN5WChareqEj
+ 0x1000777e 0x10
+ .text._ZN5WChareqEj
+ 0x1000777e 0x10 ../../Library/Melon.o
+ 0x1000777e WChar::operator==(unsigned int)
+
+.text._ZNK5WCharcvjEv
+ 0x1000778e 0xa
+ .text._ZNK5WCharcvjEv
+ 0x1000778e 0xa ../../Library/Melon.o
+ 0x1000778e WChar::operator unsigned int() const
+
+.text._ZN6Thread3getEv
+ 0x10007798 0x5a
+ .text._ZN6Thread3getEv
+ 0x10007798 0x5a ../../Library/Melon.o
+ 0x10007798 Thread::get()
+
+.text._ZN6ThreadC1Ej
+ 0x100077f2 0x22
+ .text._ZN6ThreadC1Ej
+ 0x100077f2 0x22 ../../Library/Melon.o
+ 0x100077f2 Thread::Thread(unsigned int)
+
+.text._ZN6Thread5sleepEj
+ 0x10007814 0x42
+ .text._ZN6Thread5sleepEj
+ 0x10007814 0x42 ../../Library/Melon.o
+ 0x10007814 Thread::sleep(unsigned int)
+
+.text._ZN7Process3getEv
+ 0x10007856 0x5a
+ .text._ZN7Process3getEv
+ 0x10007856 0x5a ../../Library/Melon.o
+ 0x10007856 Process::get()
+
+.text._ZN7ProcessC1Ej
+ 0x100078b0 0x22
+ .text._ZN7ProcessC1Ej
+ 0x100078b0 0x22 ../../Library/Melon.o
+ 0x100078b0 Process::Process(unsigned int)
+
+.text._ZN7Process10allocPagesEjj
+ 0x100078d2 0x41
+ .text._ZN7Process10allocPagesEjj
+ 0x100078d2 0x41 ../../Library/Melon.o
+ 0x100078d2 Process::allocPages(unsigned int, unsigned int)
+
+.text._ZN7Process9freePagesEjj
+ 0x10007914 0x41
+ .text._ZN7Process9freePagesEjj
+ 0x10007914 0x41 ../../Library/Melon.o
+ 0x10007914 Process::freePages(unsigned int, unsigned int)
+
+.text._ZnwjPv 0x10007955 0x8
+ .text._ZnwjPv 0x10007955 0x8 ../../Library/Melon.o
+ 0x10007955 operator new(unsigned int, void*)
+
+.text._Znaj 0x1000795d 0x13
+ .text._Znaj 0x1000795d 0x13 ../../Library/Melon.o
+ 0x1000795d operator new[](unsigned int)
+
+.text._ZdlPv 0x10007970 0x13
+ .text._ZdlPv 0x10007970 0x13 ../../Library/Melon.o
+ 0x10007970 operator delete(void*)
+
+.text._ZdaPv 0x10007983 0x13
+ .text._ZdaPv 0x10007983 0x13 ../../Library/Melon.o
+ 0x10007983 operator delete[](void*)
+
+.text._ZN5WChar6affectEPKch
+ 0x10007996 0xb0
+ .text._ZN5WChar6affectEPKch
+ 0x10007996 0xb0 ../../Library/Melon.o
+ 0x10007996 WChar::affect(char const*, unsigned char)
+
+.text._ZN5WCharaSEj
+ 0x10007a46 0x10
+ .text._ZN5WCharaSEj
+ 0x10007a46 0x10 ../../Library/Melon.o
+ 0x10007a46 WChar::operator=(unsigned int)
+
+.text._ZN6StringC1Ev
+ 0x10007a56 0x1c
+ .text._ZN6StringC1Ev
+ 0x10007a56 0x1c ../../Library/Melon.o
+ 0x10007a56 String::String()
+
+.text._ZN6StringC1ERKS_
+ 0x10007a72 0x23
+ .text._ZN6StringC1ERKS_
+ 0x10007a72 0x23 ../../Library/Melon.o
+ 0x10007a72 String::String(String const&)
+
+.text._ZN6StringpLERKS_
+ 0x10007a96 0x1d
+ .text._ZN6StringpLERKS_
+ 0x10007a96 0x1d ../../Library/Melon.o
+ 0x10007a96 String::operator+=(String const&)
+
+.text._ZN6StringpLE5WChar
+ 0x10007ab4 0x1d
+ .text._ZN6StringpLE5WChar
+ 0x10007ab4 0x1d ../../Library/Melon.o
+ 0x10007ab4 String::operator+=(WChar)
+
+.text._ZN6StringD1Ev
+ 0x10007ad2 0x30
+ .text._ZN6StringD1Ev
+ 0x10007ad2 0x30 ../../Library/Melon.o
+ 0x10007ad2 String::~String()
+
+.text._ZN6StringD0Ev
+ 0x10007b02 0x30
+ .text._ZN6StringD0Ev
+ 0x10007b02 0x30 ../../Library/Melon.o
+ 0x10007b02 String::~String()
+
+.text._ZN11BasicStringI5WCharEC2Ev
+ 0x10007b32 0x22
+ .text._ZN11BasicStringI5WCharEC2Ev
+ 0x10007b32 0x22 ../../Library/Melon.o
+ 0x10007b32 BasicString<WChar>::BasicString()
+
+.text._ZN11BasicStringI5WCharED2Ev
+ 0x10007b54 0x3d
+ .text._ZN11BasicStringI5WCharED2Ev
+ 0x10007b54 0x3d ../../Library/Melon.o
+ 0x10007b54 BasicString<WChar>::~BasicString()
+
+.text._ZN11BasicStringI5WCharED1Ev
+ 0x10007b92 0x3d
+ .text._ZN11BasicStringI5WCharED1Ev
+ 0x10007b92 0x3d ../../Library/Melon.o
+ 0x10007b92 BasicString<WChar>::~BasicString()
+
+.text._ZN11BasicStringI5WCharED0Ev
+ 0x10007bd0 0x3d
+ .text._ZN11BasicStringI5WCharED0Ev
+ 0x10007bd0 0x3d ../../Library/Melon.o
+ 0x10007bd0 BasicString<WChar>::~BasicString()
+
+.text._ZN11BasicStringI5WCharEC2ERKS1_
+ 0x10007c0e 0x2d
+ .text._ZN11BasicStringI5WCharEC2ERKS1_
+ 0x10007c0e 0x2d ../../Library/Melon.o
+ 0x10007c0e BasicString<WChar>::BasicString(BasicString<WChar> const&)
+
+.text._ZN11BasicStringI5WCharE6affectERKS1_
+ 0x10007c3c 0xb8
+ .text._ZN11BasicStringI5WCharE6affectERKS1_
+ 0x10007c3c 0xb8 ../../Library/Melon.o
+ 0x10007c3c BasicString<WChar>::affect(BasicString<WChar> const&)
+
+.text._ZN11BasicStringI5WCharE6appendERKS1_
+ 0x10007cf4 0x105
+ .text._ZN11BasicStringI5WCharE6appendERKS1_
+ 0x10007cf4 0x105 ../../Library/Melon.o
+ 0x10007cf4 BasicString<WChar>::append(BasicString<WChar> const&)
+
+.text._ZN11BasicStringI5WCharE6appendES0_
+ 0x10007dfa 0xd2
+ .text._ZN11BasicStringI5WCharE6appendES0_
+ 0x10007dfa 0xd2 ../../Library/Melon.o
+ 0x10007dfa BasicString<WChar>::append(WChar)
+
+.text._ZNK11BasicStringI5WCharEixEi
+ 0x10007ecc 0x13
+ .text._ZNK11BasicStringI5WCharEixEi
+ 0x10007ecc 0x13 ../../Library/Melon.o
+ 0x10007ecc BasicString<WChar>::operator[](int) const
+
+.text._ZN6VectorI6StringEC1Ev
+ 0x10007ee0 0x18
+ .text._ZN6VectorI6StringEC1Ev
+ 0x10007ee0 0x18 ../../Library/Melon.o
+ 0x10007ee0 Vector<String>::Vector()
+
+.text._ZN6VectorI6StringE4pushERKS0_
+ 0x10007ef8 0xb8
+ .text._ZN6VectorI6StringE4pushERKS0_
+ 0x10007ef8 0xb8 ../../Library/Melon.o
+ 0x10007ef8 Vector<String>::push(String const&)
+
+.text._ZNK6VectorI6StringE4backEv
+ 0x10007fb0 0x1f
+ .text._ZNK6VectorI6StringE4backEv
+ 0x10007fb0 0x1f ../../Library/Melon.o
+ 0x10007fb0 Vector<String>::back() const
+
+.text._ZN15RessourceCaller5validEv
+ 0x10007fd0 0x10
+ .text._ZN15RessourceCaller5validEv
+ 0x10007fd0 0x10 ../../Library/Melon.o
+ 0x10007fd0 RessourceCaller::valid()
+
+.text._ZN9ByteArrayC1Ev
+ 0x10007fe0 0x1c
+ .text._ZN9ByteArrayC1Ev
+ 0x10007fe0 0x1c ../../Library/Melon.o
+ 0x10007fe0 ByteArray::ByteArray()
+
+.text._ZN9ByteArrayC1ERK6Stringh
+ 0x10007ffc 0x3c
+ .text._ZN9ByteArrayC1ERK6Stringh
+ 0x10007ffc 0x3c ../../Library/Melon.o
+ 0x10007ffc ByteArray::ByteArray(String const&, unsigned char)
+
+.text._ZN9ByteArraycvPhEv
+ 0x10008038 0xb
+ .text._ZN9ByteArraycvPhEv
+ 0x10008038 0xb ../../Library/Melon.o
+ 0x10008038 ByteArray::operator unsigned char*()
+
+.text._ZN4File4readEjPh
+ 0x10008044 0x41
+ .text._ZN4File4readEjPh
+ 0x10008044 0x41 ../../Library/Melon.o
+ 0x10008044 File::read(unsigned int, unsigned char*)
+
+.text._ZN4File5writeEjPh
+ 0x10008086 0x46
+ .text._ZN4File5writeEjPh
+ 0x10008086 0x46 ../../Library/Melon.o
+ 0x10008086 File::write(unsigned int, unsigned char*)
+
+.text._ZN4File4readER9ByteArray
+ 0x100080cc 0x89
+ .text._ZN4File4readER9ByteArray
+ 0x100080cc 0x89 ../../Library/Melon.o
+ 0x100080cc File::read(ByteArray&)
+
+.text._ZN4File5writeER9ByteArray
+ 0x10008156 0x51
+ .text._ZN4File5writeER9ByteArray
+ 0x10008156 0x51 ../../Library/Melon.o
+ 0x10008156 File::write(ByteArray&)
+
+.text._ZN4File4seekEyh
+ 0x100081a8 0x77
+ .text._ZN4File4seekEyh
+ 0x100081a8 0x77 ../../Library/Melon.o
+ 0x100081a8 File::seek(unsigned long long, unsigned char)
+
+.text._ZN9ByteArrayD1Ev
+ 0x10008220 0x30
+ .text._ZN9ByteArrayD1Ev
+ 0x10008220 0x30 ../../Library/Melon.o
+ 0x10008220 ByteArray::~ByteArray()
+
+.text._ZN9ByteArrayD0Ev
+ 0x10008250 0x30
+ .text._ZN9ByteArrayD0Ev
+ 0x10008250 0x30 ../../Library/Melon.o
+ 0x10008250 ByteArray::~ByteArray()
+
+.text._ZN11BasicStringIhEC2Ev
+ 0x10008280 0x22
+ .text._ZN11BasicStringIhEC2Ev
+ 0x10008280 0x22 ../../Library/Melon.o
+ 0x10008280 BasicString<unsigned char>::BasicString()
+
+.text._ZN11BasicStringIhED2Ev
+ 0x100082a2 0x3d
+ .text._ZN11BasicStringIhED2Ev
+ 0x100082a2 0x3d ../../Library/Melon.o
+ 0x100082a2 BasicString<unsigned char>::~BasicString()
+
+.text._ZN11BasicStringIhED1Ev
+ 0x100082e0 0x3d
+ .text._ZN11BasicStringIhED1Ev
+ 0x100082e0 0x3d ../../Library/Melon.o
+ 0x100082e0 BasicString<unsigned char>::~BasicString()
+
+.text._ZN11BasicStringIhED0Ev
+ 0x1000831e 0x3d
+ .text._ZN11BasicStringIhED0Ev
+ 0x1000831e 0x3d ../../Library/Melon.o
+ 0x1000831e BasicString<unsigned char>::~BasicString()
+
+.text._ZNK11BasicStringIhE4sizeEv
+ 0x1000835c 0xb
+ .text._ZNK11BasicStringIhE4sizeEv
+ 0x1000835c 0xb ../../Library/Melon.o
+ 0x1000835c BasicString<unsigned char>::size() const
+
+.text._ZNK11BasicStringIhEixEi
+ 0x10008368 0x11
+ .text._ZNK11BasicStringIhEixEi
+ 0x10008368 0x11 ../../Library/Melon.o
+ 0x10008368 BasicString<unsigned char>::operator[](int) const
+
+.text._ZN11BasicStringIhE5clearEv
+ 0x1000837a 0x34
+ .text._ZN11BasicStringIhE5clearEv
+ 0x1000837a 0x34 ../../Library/Melon.o
+ 0x1000837a BasicString<unsigned char>::clear()
+
+.text._ZN11BasicStringIhEpLEh
+ 0x100083ae 0x21
+ .text._ZN11BasicStringIhEpLEh
+ 0x100083ae 0x21 ../../Library/Melon.o
+ 0x100083ae BasicString<unsigned char>::operator+=(unsigned char)
+
+.text._ZN11BasicStringIhE6appendEh
+ 0x100083d0 0x9c
+ .text._ZN11BasicStringIhE6appendEh
+ 0x100083d0 0x9c ../../Library/Melon.o
+ 0x100083d0 BasicString<unsigned char>::append(unsigned char)
+
+.text._ZN5WChar6encodeEh
+ 0x1000846c 0x7a
+ .text._ZN5WChar6encodeEh
+ 0x1000846c 0x7a ../../Library/Melon.o
+ 0x1000846c WChar::encode(unsigned char)
+
+.text._ZNK11BasicStringI5WCharE4sizeEv
+ 0x100084e6 0xb
+ .text._ZNK11BasicStringI5WCharE4sizeEv
+ 0x100084e6 0xb ../../Library/Melon.o
+ 0x100084e6 BasicString<WChar>::size() const
+
+.text._Znwj 0x100084f1 0x13
+ .text._Znwj 0x100084f1 0x13 ../../Library/Melon.o
+ 0x100084f1 operator new(unsigned int)
+
+.text._ZN6StringC1E5WCharj
+ 0x10008504 0x2a
+ .text._ZN6StringC1E5WCharj
+ 0x10008504 0x2a ../../Library/Melon.o
+ 0x10008504 String::String(WChar, unsigned int)
+
+.text._ZN7OStreamD1Ev
+ 0x1000852e 0x30
+ .text._ZN7OStreamD1Ev
+ 0x1000852e 0x30 ../../Library/Melon.o
+ 0x1000852e OStream::~OStream()
+
+.text._ZN7OStreamD0Ev
+ 0x1000855e 0x30
+ .text._ZN7OStreamD0Ev
+ 0x1000855e 0x30 ../../Library/Melon.o
+ 0x1000855e OStream::~OStream()
+
+.text._ZN11BasicStringI5WCharEC2ES0_j
+ 0x1000858e 0x34
+ .text._ZN11BasicStringI5WCharEC2ES0_j
+ 0x1000858e 0x34 ../../Library/Melon.o
+ 0x1000858e BasicString<WChar>::BasicString(WChar, unsigned int)
+
+.text._ZNK11BasicStringI5WCharE5emptyEv
+ 0x100085c2 0x10
+ .text._ZNK11BasicStringI5WCharE5emptyEv
+ 0x100085c2 0x10 ../../Library/Melon.o
+ 0x100085c2 BasicString<WChar>::empty() const
+
+.text._ZN10SimpleListI6StringEC1ERKS0_PS1_
+ 0x100085d2 0x23
+ .text._ZN10SimpleListI6StringEC1ERKS0_PS1_
+ 0x100085d2 0x23 ../../Library/Melon.o
+ 0x100085d2 SimpleList<String>::SimpleList(String const&, SimpleList<String>*)
+
+.text._ZN10SimpleListI6StringE8addAtEndERKS0_
+ 0x100085f6 0x94
+ .text._ZN10SimpleListI6StringE8addAtEndERKS0_
+ 0x100085f6 0x94 ../../Library/Melon.o
+ 0x100085f6 SimpleList<String>::addAtEnd(String const&)
+
+.text._ZN10SimpleListI6StringE4nextEv
+ 0x1000868a 0xb
+ .text._ZN10SimpleListI6StringE4nextEv
+ 0x1000868a 0xb ../../Library/Melon.o
+ 0x1000868a SimpleList<String>::next()
+
+.text._ZN10SimpleListI6StringE1vEv
+ 0x10008696 0x8
+ .text._ZN10SimpleListI6StringE1vEv
+ 0x10008696 0x8 ../../Library/Melon.o
+ 0x10008696 SimpleList<String>::v()
+
+.text._ZN10SimpleListI6StringED1Ev
+ 0x1000869e 0x3c
+ .text._ZN10SimpleListI6StringED1Ev
+ 0x1000869e 0x3c ../../Library/Melon.o
+ 0x1000869e SimpleList<String>::~SimpleList()
+
+.text._ZN11BasicStringI5WCharE6affectES0_j
+ 0x100086da 0xb8
+ .text._ZN11BasicStringI5WCharE6affectES0_j
+ 0x100086da 0xb8 ../../Library/Melon.o
+ 0x100086da BasicString<WChar>::affect(WChar, unsigned int)
+
+.text._ZN10SimpleListI6StringE7delThisEv
+ 0x10008792 0x1f
+ .text._ZN10SimpleListI6StringE7delThisEv
+ 0x10008792 0x1f ../../Library/Melon.o
+ 0x10008792 SimpleList<String>::delThis()
+
+.text._ZN7OStreamD2Ev
+ 0x100087b2 0x30
+ .text._ZN7OStreamD2Ev
+ 0x100087b2 0x30 ../../Library/Melon.o
+ 0x100087b2 OStream::~OStream()
+
+.text._ZNK15RessourceCaller5resIdEv
+ 0x100087e2 0xa
+ .text._ZNK15RessourceCaller5resIdEv
+ 0x100087e2 0xa ../../Library/Melon.o
+ 0x100087e2 RessourceCaller::resId() const
+
+.text._ZN4FileC1E6Stringh6FSNode
+ 0x100087ec 0x5f
+ .text._ZN4FileC1E6Stringh6FSNode
+ 0x100087ec 0x5f ../../Library/Melon.o
+ 0x100087ec File::File(String, unsigned char, FSNode)
+
+.text._ZN4File5closeEv
+ 0x1000884c 0x43
+ .text._ZN4File5closeEv
+ 0x1000884c 0x43 ../../Library/Melon.o
+ 0x1000884c File::close()
+
+.text._ZN4File3eofEv
+ 0x10008890 0x48
+ .text._ZN4File3eofEv
+ 0x10008890 0x48 ../../Library/Melon.o
+ 0x10008890 File::eof()
+
+.text._Z5doDivyjPj
+ 0x100088d8 0x76
+ .text._Z5doDivyjPj
+ 0x100088d8 0x76 ../../Library/Melon.o
+ 0x100088d8 doDiv(unsigned long long, unsigned int, unsigned int*)
+
+.text._ZN6StringaSERKS_
+ 0x1000894e 0x1a
+ .text._ZN6StringaSERKS_
+ 0x1000894e 0x1a ../../Library/Melon.o
+ 0x1000894e String::operator=(String const&)
+
+.text._ZNK6StringeqEPKc
+ 0x10008968 0x22
+ .text._ZNK6StringeqEPKc
+ 0x10008968 0x22 ../../Library/Melon.o
+ 0x10008968 String::operator==(char const*) const
+
+.text._ZN6StringneEPKc
+ 0x1000898a 0x25
+ .text._ZN6StringneEPKc
+ 0x1000898a 0x25 ../../Library/Melon.o
+ 0x1000898a String::operator!=(char const*)
+
+.text._ZNK6StringeqERKS_
+ 0x100089b0 0x1a
+ .text._ZNK6StringeqERKS_
+ 0x100089b0 0x1a ../../Library/Melon.o
+ 0x100089b0 String::operator==(String const&) const
+
+.text._ZN6StringpLEPKc
+ 0x100089ca 0x22
+ .text._ZN6StringpLEPKc
+ 0x100089ca 0x22 ../../Library/Melon.o
+ 0x100089ca String::operator+=(char const*)
+
+.text._ZNK6StringplERKS_
+ 0x100089ec 0x30
+ .text._ZNK6StringplERKS_
+ 0x100089ec 0x30 ../../Library/Melon.o
+ 0x100089ec String::operator+(String const&) const
+
+.text._ZNK6StringplEPKc
+ 0x10008a1c 0x38
+ .text._ZNK6StringplEPKc
+ 0x10008a1c 0x38 ../../Library/Melon.o
+ 0x10008a1c String::operator+(char const*) const
+
+.text._ZN7OStreamlsERK6String
+ 0x10008a54 0x59
+ .text._ZN7OStreamlsERK6String
+ 0x10008a54 0x59 ../../Library/Melon.o
+ 0x10008a54 OStream::operator<<(String const&)
+
+.text._ZN7OStreamlsEi
+ 0x10008aae 0x3d
+ .text._ZN7OStreamlsEi
+ 0x10008aae 0x3d ../../Library/Melon.o
+ 0x10008aae OStream::operator<<(int)
+
+.text._ZN15VirtualTerminalD1Ev
+ 0x10008aec 0x50
+ .text._ZN15VirtualTerminalD1Ev
+ 0x10008aec 0x50 ../../Library/Melon.o
+ 0x10008aec non-virtual thunk to VirtualTerminal::~VirtualTerminal()
+ 0x10008af4 VirtualTerminal::~VirtualTerminal()
+
+.text._ZN15VirtualTerminalD0Ev
+ 0x10008b3c 0x50
+ .text._ZN15VirtualTerminalD0Ev
+ 0x10008b3c 0x50 ../../Library/Melon.o
+ 0x10008b3c non-virtual thunk to VirtualTerminal::~VirtualTerminal()
+ 0x10008b44 VirtualTerminal::~VirtualTerminal()
+
+.text._ZN15VirtualTerminal5getInEv
+ 0x10008b8c 0x5e
+ .text._ZN15VirtualTerminal5getInEv
+ 0x10008b8c 0x5e ../../Library/Melon.o
+ 0x10008b8c VirtualTerminal::getIn()
+
+.text._ZN15VirtualTerminal6getOutEv
+ 0x10008bea 0x5e
+ .text._ZN15VirtualTerminal6getOutEv
+ 0x10008bea 0x5e ../../Library/Melon.o
+ 0x10008bea VirtualTerminal::getOut()
+
+.text._ZN15VirtualTerminalC1Ej
+ 0x10008c48 0x58
+ .text._ZN15VirtualTerminalC1Ej
+ 0x10008c48 0x58 ../../Library/Melon.o
+ 0x10008c48 VirtualTerminal::VirtualTerminal(unsigned int)
+
+.text._ZN15VirtualTerminal5writeERK6String
+ 0x10008ca0 0x45
+ .text._ZN15VirtualTerminal5writeERK6String
+ 0x10008ca0 0x45 ../../Library/Melon.o
+ 0x10008ca0 VirtualTerminal::write(String const&)
+
+.text._ZN15VirtualTerminal4readEv
+ 0x10008ce6 0x1a2
+ .text._ZN15VirtualTerminal4readEv
+ 0x10008ce6 0x1a2 ../../Library/Melon.o
+ 0x10008ce6 non-virtual thunk to VirtualTerminal::read()
+ 0x10008cee VirtualTerminal::read()
+
+.text._ZN7Process4argcEv
+ 0x10008e88 0x43
+ .text._ZN7Process4argcEv
+ 0x10008e88 0x43 ../../Library/Melon.o
+ 0x10008e88 Process::argc()
+
+.text._ZN7Process4argvEj
+ 0x10008ecc 0x66
+ .text._ZN7Process4argvEj
+ 0x10008ecc 0x66 ../../Library/Melon.o
+ 0x10008ecc Process::argv(unsigned int)
+
+.text._ZN11ApplicationC2Ev
+ 0x10008f32 0x22
+ .text._ZN11ApplicationC2Ev
+ 0x10008f32 0x22 ../../Library/Melon.o
+ 0x10008f32 Application::Application()
+
+.text._ZN11ApplicationD2Ev
+ 0x10008f54 0x25
+ .text._ZN11ApplicationD2Ev
+ 0x10008f54 0x25 ../../Library/Melon.o
+ 0x10008f54 Application::~Application()
+
+.text._ZN11ApplicationD1Ev
+ 0x10008f7a 0x25
+ .text._ZN11ApplicationD1Ev
+ 0x10008f7a 0x25 ../../Library/Melon.o
+ 0x10008f7a Application::~Application()
+
+.text._ZN11ApplicationD0Ev
+ 0x10008fa0 0x25
+ .text._ZN11ApplicationD0Ev
+ 0x10008fa0 0x25 ../../Library/Melon.o
+ 0x10008fa0 Application::~Application()
+
+.text._ZN11Application4initEv
+ 0x10008fc6 0x5
+ .text._ZN11Application4initEv
+ 0x10008fc6 0x5 ../../Library/Melon.o
+ 0x10008fc6 Application::init()
+
+.text._ZN11Application8doEventsEv
+ 0x10008fcc 0x5
+ .text._ZN11Application8doEventsEv
+ 0x10008fcc 0x5 ../../Library/Melon.o
+ 0x10008fcc Application::doEvents()
+
+.text._ZN11Application4exitEj
+ 0x10008fd2 0x35
+ .text._ZN11Application4exitEj
+ 0x10008fd2 0x35 ../../Library/Melon.o
+ 0x10008fd2 Application::exit(unsigned int)
+
+.text._ZN6flag_tC1Ev
+ 0x10009008 0x3d
+ .text._ZN6flag_tC1Ev
+ 0x10009008 0x3d ../../Library/Melon.o
+ 0x10009008 flag_t::flag_t()
+
+.text._ZN6flag_tD1Ev
+ 0x10009046 0x32
+ .text._ZN6flag_tD1Ev
+ 0x10009046 0x32 ../../Library/Melon.o
+ 0x10009046 flag_t::~flag_t()
+
+.text._ZNK11BasicStringI5WCharE7compareERKS1_
+ 0x10009078 0x84
+ .text._ZNK11BasicStringI5WCharE7compareERKS1_
+ 0x10009078 0x84 ../../Library/Melon.o
+ 0x10009078 BasicString<WChar>::compare(BasicString<WChar> const&) const
+
+.text._ZNK11BasicStringI5WCharE8containsERKS0_
+ 0x100090fc 0x5a
+ .text._ZNK11BasicStringI5WCharE8containsERKS0_
+ 0x100090fc 0x5a ../../Library/Melon.o
+ 0x100090fc BasicString<WChar>::contains(WChar const&) const
+
+.text._ZN6VectorI6StringED1Ev
+ 0x10009156 0x7b
+ .text._ZN6VectorI6StringED1Ev
+ 0x10009156 0x7b ../../Library/Melon.o
+ 0x10009156 Vector<String>::~Vector()
+
+.text._ZN6VectorI6flag_tEC1Ev
+ 0x100091d2 0x18
+ .text._ZN6VectorI6flag_tEC1Ev
+ 0x100091d2 0x18 ../../Library/Melon.o
+ 0x100091d2 Vector<flag_t>::Vector()
+
+.text._ZN6VectorI6flag_tED1Ev
+ 0x100091ea 0x5b
+ .text._ZN6VectorI6flag_tED1Ev
+ 0x100091ea 0x5b ../../Library/Melon.o
+ 0x100091ea Vector<flag_t>::~Vector()
+
+.text._ZN6VectorI6StringE5clearEv
+ 0x10009246 0xa4
+ .text._ZN6VectorI6StringE5clearEv
+ 0x10009246 0xa4 ../../Library/Melon.o
+ 0x10009246 Vector<String>::clear()
+
+.text._ZNK6VectorI6flag_tE4sizeEv
+ 0x100092ea 0xb
+ .text._ZNK6VectorI6flag_tE4sizeEv
+ 0x100092ea 0xb ../../Library/Melon.o
+ 0x100092ea Vector<flag_t>::size() const
+
+.text._ZNK6VectorI6flag_tEixEj
+ 0x100092f6 0x13
+ .text._ZNK6VectorI6flag_tEixEj
+ 0x100092f6 0x13 ../../Library/Melon.o
+ 0x100092f6 Vector<flag_t>::operator[](unsigned int) const
+
+.text._ZN6flag_tC1ERKS_
+ 0x1000930a 0x7f
+ .text._ZN6flag_tC1ERKS_
+ 0x1000930a 0x7f ../../Library/Melon.o
+ 0x1000930a flag_t::flag_t(flag_t const&)
+
+.text._ZN6VectorI6flag_tE4pushERKS0_
+ 0x1000938a 0xa4
+ .text._ZN6VectorI6flag_tE4pushERKS0_
+ 0x1000938a 0xa4 ../../Library/Melon.o
+ 0x1000938a Vector<flag_t>::push(flag_t const&)
+
+.text._ZNK6VectorI6StringE5emptyEv
+ 0x1000942e 0x10
+ .text._ZNK6VectorI6StringE5emptyEv
+ 0x1000942e 0x10 ../../Library/Melon.o
+ 0x1000942e Vector<String>::empty() const
+
+.text._ZN6FSNodeC1Ej
+ 0x1000943e 0x22
+ .text._ZN6FSNodeC1Ej
+ 0x1000943e 0x22 ../../Library/Melon.o
+ 0x1000943e FSNode::FSNode(unsigned int)
+
+.text._ZN2FS7cwdNodeEv
+ 0x10009460 0x54
+ .text._ZN2FS7cwdNodeEv
+ 0x10009460 0x54 ../../Library/Melon.o
+ 0x10009460 FS::cwdNode()
+
+.text._ZNK6VectorI6StringE4sizeEv
+ 0x100094b4 0xb
+ .text._ZNK6VectorI6StringE4sizeEv
+ 0x100094b4 0xb ../../Library/Melon.o
+ 0x100094b4 Vector<String>::size() const
+
+.text._ZNK6VectorI6StringEixEj
+ 0x100094c0 0x19
+ .text._ZNK6VectorI6StringEixEj
+ 0x100094c0 0x19 ../../Library/Melon.o
+ 0x100094c0 Vector<String>::operator[](unsigned int) const
+
+.iplt 0x100094dc 0x0 load address 0x100094d9
+ .iplt 0x00000000 0x0 ../../Library/Melon.o
+
+.text._ZN5WCharpLEj
+ 0x100094da 0x17
+ .text._ZN5WCharpLEj
+ 0x100094da 0x17 Applets/rot13.o
+ 0x100094da WChar::operator+=(unsigned int)
+
+.text._ZN5WCharmIEj
+ 0x100094f2 0x17
+ .text._ZN5WCharmIEj
+ 0x100094f2 0x17 Applets/rot13.o
+ 0x100094f2 WChar::operator-=(unsigned int)
+
+.text._ZNK7IStream3eofEv
+ 0x1000950a 0x26
+ .text._ZNK7IStream3eofEv
+ 0x1000950a 0x26 Applets/rot13.o
+ 0x1000950a IStream::eof() const
+
+.text._ZN5rot13C1Ev
+ 0x10009530 0x76
+ .text._ZN5rot13C1Ev
+ 0x10009530 0x76 Applets/rot13.o
+ 0x10009530 rot13::rot13()
+
+.text._ZN5rot13D1Ev
+ 0x100095a6 0x30
+ .text._ZN5rot13D1Ev
+ 0x100095a6 0x30 Applets/rot13.o
+ 0x100095a6 rot13::~rot13()
+
+.text._ZN5rot13D0Ev
+ 0x100095d6 0x30
+ .text._ZN5rot13D0Ev
+ 0x100095d6 0x30 Applets/rot13.o
+ 0x100095d6 rot13::~rot13()
+
+.rodata 0x1000a000 0x397
+ *(.rodata)
+ .rodata 0x1000a000 0x376 ../../Library/Melon.o
+ .rodata 0x1000a376 0x21 Applets/rot13.o
+
+.rodata._ZTV6String
+ 0x1000a398 0x10
+ .rodata._ZTV6String
+ 0x1000a398 0x10 ../../Library/Melon.o
+ 0x1000a398 vtable for String
+
+.rodata._ZTV11BasicStringI5WCharE
+ 0x1000a3a8 0x10
+ .rodata._ZTV11BasicStringI5WCharE
+ 0x1000a3a8 0x10 ../../Library/Melon.o
+ 0x1000a3a8 vtable for BasicString<WChar>
+
+.rodata._ZTV9ByteArray
+ 0x1000a3b8 0x10
+ .rodata._ZTV9ByteArray
+ 0x1000a3b8 0x10 ../../Library/Melon.o
+ 0x1000a3b8 vtable for ByteArray
+
+.rodata._ZTV11BasicStringIhE
+ 0x1000a3c8 0x10
+ .rodata._ZTV11BasicStringIhE
+ 0x1000a3c8 0x10 ../../Library/Melon.o
+ 0x1000a3c8 vtable for BasicString<unsigned char>
+
+.rodata._ZTV7OStream
+ 0x1000a3d8 0x14
+ .rodata._ZTV7OStream
+ 0x1000a3d8 0x14 ../../Library/Melon.o
+ 0x1000a3d8 vtable for OStream
+
+.rodata._ZTV7IStream
+ 0x1000a3f0 0x14
+ .rodata._ZTV7IStream
+ 0x1000a3f0 0x14 ../../Library/Melon.o
+ 0x1000a3f0 vtable for IStream
+
+.rodata._ZTV11FileOStream
+ 0x1000a408 0x14
+ .rodata._ZTV11FileOStream
+ 0x1000a408 0x14 ../../Library/Melon.o
+ 0x1000a408 vtable for FileOStream
+
+.rodata._ZTV11FileIStream
+ 0x1000a420 0x14
+ .rodata._ZTV11FileIStream
+ 0x1000a420 0x14 ../../Library/Melon.o
+ 0x1000a420 vtable for FileIStream
+
+.rodata._ZTV13StringIStream
+ 0x1000a438 0x14
+ .rodata._ZTV13StringIStream
+ 0x1000a438 0x14 ../../Library/Melon.o
+ 0x1000a438 vtable for StringIStream
+
+.rodata._ZTV8ShellApp
+ 0x1000a450 0x1c
+ .rodata._ZTV8ShellApp
+ 0x1000a450 0x1c ../../Library/Melon.o
+ 0x1000a450 vtable for ShellApp
+
+.rodata._ZTV11Application
+ 0x1000a470 0x1c
+ .rodata._ZTV11Application
+ 0x1000a470 0x1c ../../Library/Melon.o
+ 0x1000a470 vtable for Application
+
+.rodata._ZTV15VirtualTerminal
+ 0x1000a4a0 0x2c
+ .rodata._ZTV15VirtualTerminal
+ 0x1000a4a0 0x2c ../../Library/Melon.o
+ 0x1000a4a0 vtable for VirtualTerminal
+
+.rodata._ZTV9StreamApp
+ 0x1000a4d0 0x1c
+ .rodata._ZTV9StreamApp
+ 0x1000a4d0 0x1c ../../Library/Melon.o
+ 0x1000a4d0 vtable for StreamApp
+
+.rodata._ZTV5rot13
+ 0x1000a4f0 0x1c
+ .rodata._ZTV5rot13
+ 0x1000a4f0 0x1c Applets/rot13.o
+ 0x1000a4f0 vtable for rot13
+
+.rel.dyn 0x1000a50c 0x0
+ .rel.iplt 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6Thread3getEv
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN7Process3getEv
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6StringC1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6StringC1ERKS_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6StringpLERKS_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6StringpLE5WChar
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6StringD1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6StringD0Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringI5WCharEC2Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringI5WCharED2Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringI5WCharED1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringI5WCharED0Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringI5WCharEC2ERKS1_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringI5WCharE6affectERKS1_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringI5WCharE6appendERKS1_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringI5WCharE6appendES0_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6VectorI6StringE4pushERKS0_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN9ByteArrayC1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN9ByteArrayC1ERK6Stringh
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN4File4readER9ByteArray
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN4File5writeER9ByteArray
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN9ByteArrayD1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN9ByteArrayD0Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringIhEC2Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringIhED2Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringIhED1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringIhED0Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringIhE5clearEv
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringIhEpLEh
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringIhE6appendEh
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6StringC1E5WCharj
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN7OStreamD1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN7OStreamD0Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringI5WCharEC2ES0_j
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN10SimpleListI6StringEC1ERKS0_PS1_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN10SimpleListI6StringE8addAtEndERKS0_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN10SimpleListI6StringED1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11BasicStringI5WCharE6affectES0_j
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN7OStreamD2Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN4FileC1E6Stringh6FSNode
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6StringaSERKS_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZNK6StringeqERKS_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN7OStreamlsERK6String
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN7OStreamlsEi
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN15VirtualTerminalD1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN15VirtualTerminalD0Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN15VirtualTerminal5getInEv
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN15VirtualTerminal6getOutEv
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN15VirtualTerminalC1Ej
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN15VirtualTerminal4readEv
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11ApplicationC2Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11ApplicationD2Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11ApplicationD1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11ApplicationD0Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN11Application4exitEj
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6flag_tC1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6flag_tD1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZNK11BasicStringI5WCharE7compareERKS1_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZNK11BasicStringI5WCharE8containsERKS0_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6VectorI6flag_tED1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6VectorI6StringE5clearEv
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6flag_tC1ERKS_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN6VectorI6flag_tE4pushERKS0_
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN2FS7cwdNodeEv
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.rodata._ZTV6String
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.rodata._ZTV11BasicStringI5WCharE
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.rodata._ZTV9ByteArray
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.rodata._ZTV11BasicStringIhE
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.rodata._ZTV7OStream
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.rodata._ZTV8ShellApp
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.rodata._ZTV11Application
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.rodata._ZTV15VirtualTerminal
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.rodata._ZTV9StreamApp
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN5rot13C1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.rodata._ZTV5rot13
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN5rot13D1Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+ .rel.text._ZN5rot13D0Ev
+ 0x00000000 0x0 ../../Library/Melon.o
+
+.data 0x1000b000 0x24
+ 0x1000b000 start_ctors = .
+ *(.ctor*)
+ .ctors 0x1000b000 0x4 ../../Library/Melon.o
+ .ctors 0x1000b004 0x4 Applets/rot13.o
+ 0x1000b008 end_ctors = .
+ 0x1000b008 start_dtors = .
+ *(.dtor*)
+ 0x1000b008 end_dtors = .
+ *(.data)
+ .data 0x1000b008 0x18 ../../Library/Melon.o
+ 0x1000b008 Rand::m
+ 0x1000b00c Rand::a
+ 0x1000b010 Rand::b
+ 0x1000b018 Rand::current
+ .data 0x1000b020 0x4 Applets/rot13.o
+ 0x1000b020 app
+
+.igot.plt 0x1000b024 0x0
+ .igot.plt 0x00000000 0x0 ../../Library/Melon.o
+
+.bss 0x1000b040 0x2b4
+ 0x1000b040 sbss = .
+ *(COMMON)
+ *(.bss)
+ .bss 0x1000b040 0x208 ../../Library/Melon.o
+ 0x1000b040 WChar::CP437
+ 0x1000b240 __dso_handle
+ 0x1000b244 heap
+ *fill* 0x1000b248 0x18 00
+ .bss 0x1000b260 0x94 Applets/rot13.o
+ 0x1000b2f4 ebss = .
+ 0x1000b2f4 end = .
+ 0x1000b2f4 _end = .
+ 0x1000b2f4 __end = .
+LOAD Applets/rot13.o
+OUTPUT(Applets/rot13 elf32-i386)
+
+.note.GNU-stack
+ 0x00000000 0x0
+ .note.GNU-stack
+ 0x00000000 0x0 ../../Library/Melon.o
+ .note.GNU-stack
+ 0x00000000 0x0 Applets/rot13.o
+
+.comment 0x00000000 0x27
+ .comment 0x00000000 0x27 ../../Library/Melon.o
+ 0x2f8 (size before relaxing)
+ .comment 0x00000000 0x28 Applets/rot13.o
diff --git a/Source/Applications/Shell/Makefile b/Source/Applications/Shell/Makefile
index d546a15..e972dfb 100644
--- a/Source/Applications/Shell/Makefile
+++ b/Source/Applications/Shell/Makefile
@@ -10,7 +10,9 @@ Objects = Shell.class.o \
Shell-fs.class.o
OutFile = Shell
-all: $(OutFile)
+Applets = Applets/rot13
+
+all: $(OutFile) $(Applets)
echo "* Done with $(OutFile)."
rebuild: mrproper all
@@ -19,6 +21,10 @@ $(OutFile): $(Objects)
echo "* Linking $@..."
$(LD) $(LDFLAGS) $^ -o $@
+Applets/%: Applets/%.o
+ echo "* Linking $@..."
+ $(LD) $(LDFLAGS) $^ -o $@ -Map $@.map
+
%.o: %.cpp
echo "* Compiling $<..."
$(CXX) $(CXXFLAGS) -c $< -o $@
diff --git a/Source/Applications/Shell/Shell.class.cpp b/Source/Applications/Shell/Shell.class.cpp
index a2eb490..4283b30 100644
--- a/Source/Applications/Shell/Shell.class.cpp
+++ b/Source/Applications/Shell/Shell.class.cpp
@@ -27,6 +27,7 @@ int Shell::run() {
while (1) {
outvt << "{" << cwd.getName() << "}: " << FLUSH;
String s = invt.get();
+ if (s.contains(EOF)) return 0;
if (s.empty()) continue;
while (s[0] == WChar(" ") or s[0] == WChar("\t")) {
s = s.substr(1, s.size() - 1);
diff --git a/Source/Kernel/TaskManager/Thread.class.cpp b/Source/Kernel/TaskManager/Thread.class.cpp
index af501fe..2cd9515 100644
--- a/Source/Kernel/TaskManager/Thread.class.cpp
+++ b/Source/Kernel/TaskManager/Thread.class.cpp
@@ -182,9 +182,11 @@ void Thread::handleException(registers_t *regs, int no) {
if (rw) vt << "R/W ";
if (us) vt << "User ";
if (rsvd) vt << "Rsvd ";
- vt << "At:" << (u32int)faddr;
+ vt << "At:" << (u32int)faddr << "\n";
- vt << "\nThread finishing.\n";
+ Sys::stackTrace(regs->ebp, vt, 5, true);
+
+ vt << "Thread finishing.\n";
Task::currentThreadExits(E_PAGEFAULT); //Calling this will setup a new stack
return;
}
diff --git a/Source/Library/Common/FileStream.class.cpp b/Source/Library/Common/FileStream.class.cpp
index 322e9aa..317a023 100644
--- a/Source/Library/Common/FileStream.class.cpp
+++ b/Source/Library/Common/FileStream.class.cpp
@@ -6,11 +6,13 @@
FileIStream::FileIStream(const String &filename, u8int encoding, FSNode start) : m_start(start) {
m_file = new File(filename, FM_READ, start);
+ m_filenames = 0;
m_encoding = encoding;
}
FileIStream::FileIStream(u8int encoding, FSNode start) : m_start(start) {
m_file = 0;
+ m_filenames = 0;
m_encoding = encoding;
}
@@ -30,10 +32,11 @@ void FileIStream::appendFile(const String &filename) {
}
String FileIStream::read() {
- if (m_file == 0) return "";
- while (m_file->eof() or !m_file->valid()) {
- m_file->close();
- delete m_file;
+ while (m_file == 0 or m_file->eof() or !m_file->valid()) {
+ if (m_file != 0) {
+ m_file->close();
+ delete m_file;
+ }
m_file = 0;
if (m_filenames == 0) {
return "";
diff --git a/Source/Library/Common/IStream.proto.cpp b/Source/Library/Common/IStream.proto.cpp
index 59c623e..6176eac 100644
--- a/Source/Library/Common/IStream.proto.cpp
+++ b/Source/Library/Common/IStream.proto.cpp
@@ -51,7 +51,10 @@ WChar IStream::getChar() {
String IStream::get(WChar delimiter) {
waitLock();
//calculate length of string to read
- if (m_buffer == 0) populate();
+ if (m_buffer == 0) {
+ unlock();
+ if (!populate()) return "";
+ }
int length = 0, ptr = m_ptr;
for (SimpleList<String> *iter = m_buffer; iter != 0;) {
if (iter->v()[ptr] == delimiter) break;
diff --git a/Source/Library/Common/OStream.proto.cpp b/Source/Library/Common/OStream.proto.cpp
index ba876b3..f0667e7 100644
--- a/Source/Library/Common/OStream.proto.cpp
+++ b/Source/Library/Common/OStream.proto.cpp
@@ -11,6 +11,7 @@ OStream::OStream(const OStream& other) {
}
void OStream::put(const String &s) {
+ if (s.empty()) return;
waitLock();
if (m_buffer == NULL or m_last == NULL) {
m_buffer = m_last = new SimpleList<String>(s);
@@ -55,8 +56,9 @@ OStream& OStream::operator<< (ostream_modifiers_e m) {
flush();
} else if (m == ENDL) {
put("\n");
+ flush();
} else if (m == END) {
- put(String(EOF, 1));
+ put(EOF);
flush();
}
return *this;
diff --git a/Source/Library/Userland/App/ShellApp.proto.cpp b/Source/Library/Userland/App/ShellApp.proto.cpp
index 840e985..123eb73 100644
--- a/Source/Library/Userland/App/ShellApp.proto.cpp
+++ b/Source/Library/Userland/App/ShellApp.proto.cpp
@@ -16,7 +16,8 @@ ShellApp::~ShellApp() {
void ShellApp::init() {
//Parse flags
u32int argc = pr.argc();
- for (u32int i = 0; i < argc; i++) {
+ args.clear();
+ for (u32int i = 1; i < argc; i++) {
String arg = pr.argv(i);
if (arg.empty()) continue;
if (arg == "-") {
@@ -89,7 +90,7 @@ void ShellApp::init() {
//Eventually show help screen
if (bFlag("help")) {
outvt << appName << ": " << appDesc << "\n";
- outvt << "Usage: \t" << appName << " <flags> [-] <arguments>\n\n";
+ outvt << "Usage: \t" << pr.argv(0) << " <flags> [-] <arguments>\n\n";
outvt << "Possible flags :\n";
for (u32int i = 0; i < flags.size(); i++) {
outvt << " --" << flags[i].lName << "\t" << (flags[i].sName != 0 ? "-" : "") << String(flags[i].sName) << "\t";
diff --git a/Source/Library/Userland/App/StreamApp.proto.cpp b/Source/Library/Userland/App/StreamApp.proto.cpp
index 97f473e..b1dc7dd 100644
--- a/Source/Library/Userland/App/StreamApp.proto.cpp
+++ b/Source/Library/Userland/App/StreamApp.proto.cpp
@@ -6,6 +6,7 @@ StreamApp::StreamApp(const String& name, const String& desc)
: ShellApp(name, desc) {
addFlag("o", "output", "Set the output to a file instead of the text output", FT_STR, "");
addFlag("e", "encoding", "Set the encoding for files (input and output)", FT_STR, "utf8");
+ addFlag("a", "append", "When writing to a file, append instead of truncating", FT_BOOL, "");
}
StreamApp::~StreamApp() {
@@ -13,7 +14,7 @@ StreamApp::~StreamApp() {
void StreamApp::init() {
ShellApp::init();
-
+
u8int encoding = UE_UTF8;
if (sFlag("encoding") == "utf8") encoding = UE_UTF8;
if (sFlag("encoding") == "utf16be") encoding = UE_UTF16_BE;
@@ -24,7 +25,7 @@ void StreamApp::init() {
if (sFlag("output") == "") {
out = &outvt;
} else {
- out = new FileOStream(sFlag("output"), FM_TRUNCATE, encoding, FS::cwdNode());
+ out = new FileOStream(sFlag("output"), (bFlag("append") ? FM_APPEND : FM_TRUNCATE), encoding, FS::cwdNode());
}
if (args.size() == 0) {
diff --git a/Source/Library/Userland/Binding/VirtualTerminal.class.h b/Source/Library/Userland/Binding/VirtualTerminal.class.h
index 54bdc53..2a38abd 100644
--- a/Source/Library/Userland/Binding/VirtualTerminal.class.h
+++ b/Source/Library/Userland/Binding/VirtualTerminal.class.h
@@ -39,6 +39,7 @@ class VirtualTerminal : public RessourceCaller, public OStream, public IStream {
String ret = String::unserialize(doCall(VTIF_READLINE, 1));
if (ret[ret.size() - 1] == WChar(EOF)) {
ret = ret.substr(0, ret.size() - 1);
+ if (ret.empty()) return "";
m_eof = true;
}
return ret += "\n";