diff options
Diffstat (limited to 'src/3rdparty/smount/smount.h')
-rw-r--r-- | src/3rdparty/smount/smount.h | 74 |
1 files changed, 74 insertions, 0 deletions
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 |