diff options
Diffstat (limited to 'src/user/lib/fwik/io')
-rw-r--r-- | src/user/lib/fwik/io/Dir.cpp | 37 | ||||
-rw-r--r-- | src/user/lib/fwik/io/IOStream.cpp | 19 | ||||
-rw-r--r-- | src/user/lib/fwik/io/Node.cpp | 118 | ||||
-rw-r--r-- | src/user/lib/fwik/io/Term.cpp | 62 |
4 files changed, 0 insertions, 236 deletions
diff --git a/src/user/lib/fwik/io/Dir.cpp b/src/user/lib/fwik/io/Dir.cpp deleted file mode 100644 index cfcc77b..0000000 --- a/src/user/lib/fwik/io/Dir.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include <IO/Dir.h> - -Dir::Dir(const Node &n) : Node(n) { - _init(); -} - -Dir::Dir(FILE f) : Node(f) { - _init(); - if (error == E_INVALID_TYPE) libc::close(fd); -} - -Dir::Dir(const char* filename, int mode) : Node(filename, mode) { - _init(); - if (error == E_INVALID_TYPE) libc::close(fd); -} - -void Dir::_init() { - if (error < 0) return; - pos = 0; - if ((info.type & FT_DIR) == 0) { - error = E_INVALID_TYPE; - } -} - -Dir::~Dir() { -} - -String Dir::read_ent() { - char buf[256]; - int l = libc::read(fd, pos, 256, buf); - if (l > 0) { - pos++; - return String(buf, l); - } else { - return ""; - } -} diff --git a/src/user/lib/fwik/io/IOStream.cpp b/src/user/lib/fwik/io/IOStream.cpp deleted file mode 100644 index 9d13251..0000000 --- a/src/user/lib/fwik/io/IOStream.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include <IO/IOStream.h> - -void IOStream::print(const char* str) { - if (term == 0) return; - term->print(str); -} - -void IOStream::printf(const char* fmt, ...) { - if (term == 0) return; - va_list ap; - va_start(ap, fmt); - term->vprintf(fmt, ap); - va_end(ap); -} - -String IOStream::readln() { - if (term == 0) return ""; - return term->readln(); -} diff --git a/src/user/lib/fwik/io/Node.cpp b/src/user/lib/fwik/io/Node.cpp deleted file mode 100644 index 5585aa8..0000000 --- a/src/user/lib/fwik/io/Node.cpp +++ /dev/null @@ -1,118 +0,0 @@ -#include <IO/Node.h> - -Node::Node(FILE f) { - fd = f; - error = libc::statf(f, &info); -} - -Node::Node(const char* filename, int mode) { - fd = libc::open(filename, mode); - if (fd < 0) { - if (fd != E_NOT_FOUND) error = libc::stat(filename, &info); - } else { - int i = libc::statf(fd, &info); - error = i; - if (error < 0) libc::close(fd); - } -} - -Node::Node(FILE parent, const char* filename, int mode) { - fd = libc::open_relative(parent, filename, mode); - if (fd < 0) { - if (fd != E_NOT_FOUND) error = libc::stat_relative(parent, filename, &info); - } else { - int i = libc::statf(fd, &info); - error = i; - if (error < 0) libc::close(fd); - } -} - -void Node::close() { - if (error == 0) libc::close(fd); - error = E_INVALID_FD; -} - -//////// - -static void simplify_path(char* p) { - char *it = p; - char *member = it; - while (*it != 0) { - if (*it == '/') { - if (it == member && it != p) { - // two consecutive slashes - char *i = member; - while (1) { - i[0] = i[1]; - if (i[0] == 0) break; - i++; - } - } else { - *it = 0; - if (libc::strcmp(member, ".") == 0) { - char *i = member; - while (1) { - i[0] = i[2]; - if (i[0] == 0) break; - i++; - } - } else if (libc::strcmp(member, "..") == 0) { - *it = '/'; - char* start = member - 2; - char* next = member + 3; - while (start > p && *start != '/') { - start--; - } - start++; - it = member = start; - while (1) { - *start = *next; - if (*start == 0) break; - start++; - next++; - } - } else { - *it = '/'; - it++; - member = it; - } - } - } else { - it++; - } - } -} - -String path_cat(const String &a, const String &b, bool trailing_slash) { - int len, la = a.size(), lb = b.size(); - if (b[0] == '/') { - len = lb + 2; - } else { - len = la + lb + 3; - } - char buf[len]; - if (b[0] == '/') { - libc::memcpy(buf, b.c_str(), lb); - if (buf[lb-1] != '/') { - buf[lb++] = '/'; - } - buf[lb] = 0; - } else { - libc::memcpy(buf, a.c_str(), la); - if (buf[la-1] != '/') { - buf[la++] = '/'; - } - libc::memcpy(buf + la, b.c_str(), lb); - if (buf[la + lb - 1] != '/') { - buf[la + lb] = '/'; - lb++; - } - buf[la + lb] = 0; - } - simplify_path(buf); - if (!trailing_slash) { - int l = libc::strlen(buf); - if (buf[l-1] == '/') buf[l-1] = 0; - } - return String(buf); -} diff --git a/src/user/lib/fwik/io/Term.cpp b/src/user/lib/fwik/io/Term.cpp deleted file mode 100644 index f8f686e..0000000 --- a/src/user/lib/fwik/io/Term.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include <IO/Term.h> - -Term::Term(const Node &n) : Node(n) { - _init(); -} - -Term::Term(FILE f) : Node(f) { - _init(); - if (error E_INVALID_TYPE) libc::close(fd); -} - -Term::Term(const char* filename, int mode) : Node(filename, mode) { - _init(); - if (error == E_INVALID_TYPE) libc::close(fd); -} - -void Term::_init() { - if (error < 0) return; - if (info.type & FT_TERMINAL) { - w = info.size >> 16; - h = info.size & 0xFFFF; - } else { - error = E_INVALID_TYPE; - } - hist.str = 0; - hist.max = 12; -} - -Term::~Term() { - if (hist.str != 0) { - for (int i = 0; i < hist.max; i++) { - if (hist.str[i] != 0) free(hist.str[i]); - } - free(hist.str); - } -} - -void Term::print(const char *s) { - libc::fprint(fd, s); -} - -void Term::printf(const char* fmt, ...) { - va_list ap; - va_start(ap, fmt); - libc::vfprintf(fd, fmt, ap); - va_end(ap); -} - -void Term::vprintf(const char* fmt, va_list ap) { - libc::vfprintf(fd, fmt, ap); -} - -String Term::readln() { - char *s = libc::freadln(fd); - String ret(s); - free(s); - return ret; -} - -String Term::readline() { - return String(libc::freadline(fd, &hist)); -} |