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