From f889c9c20fc09f26eb8a70674c1d60181835c38a Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 25 Oct 2018 00:50:35 +0800 Subject: =?UTF-8?q?*=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/3rdparty/smount/smount.h | 74 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/3rdparty/smount/smount.h (limited to 'src/3rdparty/smount/smount.h') diff --git a/src/3rdparty/smount/smount.h b/src/3rdparty/smount/smount.h new file mode 100644 index 0000000..0f8f774 --- /dev/null +++ b/src/3rdparty/smount/smount.h @@ -0,0 +1,74 @@ +/** +* 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