From 654a75401775d74f95f3d98611e333bb5641ee9b Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 28 Jul 2018 10:23:36 +0800 Subject: *update --- src/libjin/3rdparty/smount/smount.h | 89 +++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/libjin/3rdparty/smount/smount.h (limited to 'src/libjin/3rdparty/smount/smount.h') diff --git a/src/libjin/3rdparty/smount/smount.h b/src/libjin/3rdparty/smount/smount.h new file mode 100644 index 0000000..c0836a7 --- /dev/null +++ b/src/libjin/3rdparty/smount/smount.h @@ -0,0 +1,89 @@ +/** +* Copyright (c) 2018 chai +*/ +#ifndef SMOUNT_H +#define SMOUNT_H + +// path type +enum +{ + PATH_DIR = 1, // directory + PATH_REG = 2 // regular file +}; + +// sm status +enum +{ + SMT_SUCCESS = 0, + SMT_INVALIDMOUNT = 1, // invalid mount directory. + SMT_NOSUCHDIR = 2, // directory or file doesn't exsist. + SMT_UNABLEOPEN = 3, // + SMT_CANTWRITE = 4, +}; + +typedef struct smtPath +{ + int type; + char* path; + struct smtPath* next; +}smtPath; + +/** +* A shared context structrue. +*/ +typedef struct smtShared +{ + smtPath* mount; // the root directory +}smtShared; + +smtShared* smtnewshared(); + +void smtcloseshared(smtShared* S); + +/** +* Get error string with given error code. +*/ +const char *smterrstr(int err); + +/** +* Mount a sub file system. +*/ +int smtmount(smtShared* S, const char *path); + +/** +* Free mount +*/ +void smtunmount(smtShared* S); + +int smtexists(smtShared* S, const char *path); + +/** +* Get size of a file. +*/ +int smtsize(smtShared* S, const char *path); + +/** +* Can only read files under root directory. +*/ +void *smtread(smtShared* S, const char *path, unsigned int *size); + +int smtisdir(smtShared* S, const char *path); + +int smtisreg(smtShared* S, const char *path); + +/** +* List all folders and files inside current mount directory. +*/ +smtPath *smtlist(smtShared*S, const char *path); + +void smtfreelist(smtPath* S); + +int smtwrite(smtShared* S, const char *path, const void *data, int size); + +void smtdelete(smtShared* S, const char *path); + +int smtmkdir(smtShared* S, const char *path); + +char* smtfullpath(smtShared* S, const char* path); + +#endif \ No newline at end of file -- cgit v1.1-26-g67d0