aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Filesystem/Filesystem.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-07-26 23:58:12 +0800
committerchai <chaifix@163.com>2018-07-26 23:58:12 +0800
commit1a882936e91826e4d69584745e16a79650272015 (patch)
tree61572b11d766fcb8cfa9e98f001c5fecc5712d7c /src/libjin/Filesystem/Filesystem.cpp
parent977b845c3e09a5b51895be81ef7514ae4030f588 (diff)
*change name
Diffstat (limited to 'src/libjin/Filesystem/Filesystem.cpp')
-rw-r--r--src/libjin/Filesystem/Filesystem.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/libjin/Filesystem/Filesystem.cpp b/src/libjin/Filesystem/Filesystem.cpp
new file mode 100644
index 0000000..af94034
--- /dev/null
+++ b/src/libjin/Filesystem/Filesystem.cpp
@@ -0,0 +1,68 @@
+#include "filesystem.h"
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h> /* defines FILENAME_MAX */
+
+namespace jin
+{
+namespace fs
+{
+
+ Filesystem* Filesystem::fs = 0;
+
+ Filesystem::Filesystem()
+ {
+ S = smtnewshared();
+ }
+
+ Filesystem* Filesystem::get()
+ {
+ return fs ? fs : (fs = new Filesystem());
+ }
+
+ /**
+ * r is relative path
+ */
+ void Filesystem::mount(const char * path)
+ {
+ int err = smtmount(S, path);
+ if (err)
+ {
+ printf("%s mounted path %s", smterrstr(err), path);
+ exit(1);
+ }
+ }
+
+ /**
+ *
+ */
+ int Filesystem::read(const char* path, Buffer* buffer)
+ {
+ buffer->data = smtread(S, path, &buffer->size);
+ if (buffer->data == 0)
+ return 0;
+ return 1;
+ }
+
+ const char* Filesystem::getFull(const char* path)
+ {
+ return smtfullpath(S, path);
+ }
+
+ bool Filesystem::isDir(const char* path)
+ {
+ return smtisdir(S, path);
+ }
+
+ bool Filesystem::isFile(const char* path)
+ {
+ return smtisreg(S, path);
+ }
+
+ bool Filesystem::exists(const char* path)
+ {
+ return smtexists(S, path) == 0;
+ }
+
+}
+} \ No newline at end of file