From 6e0c8bbf44161e0cf3c2576e69d1cd3de889635a Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sun, 23 Oct 2011 12:04:51 +0000 Subject: [PATCH] added qse_dir_geterrnum() and qse_dir_geterrmsg()) --- qse/include/qse/fs/dir.h | 27 +++++++++++++++++++++++---- qse/lib/fs/dir.c | 19 +++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/qse/include/qse/fs/dir.h b/qse/include/qse/fs/dir.h index 791272d2..790039cc 100644 --- a/qse/include/qse/fs/dir.h +++ b/qse/include/qse/fs/dir.h @@ -24,6 +24,16 @@ #include #include +enum qse_dir_errnum_t +{ + QSE_DIR_ENOERR = 0, + QSE_DIR_EINTERN, + + QSE_DIR_ENOMEM, + QSE_DIR_EINVAL +}; +typedef enum qse_dir_errnum_t qse_dir_errnum_t; + struct qse_dir_ent_t { enum @@ -36,8 +46,8 @@ struct qse_dir_ent_t QSE_DIR_ENT_BLOCK, QSE_DIR_ENT_LINK } type; - qse_foff_t size; qse_char_t* name; + qse_foff_t size; }; typedef struct qse_dir_ent_t qse_dir_ent_t; @@ -45,9 +55,10 @@ typedef struct qse_dir_ent_t qse_dir_ent_t; struct qse_dir_t { QSE_DEFINE_COMMON_FIELDS (dir) - qse_dir_ent_t ent; - qse_char_t* curdir; - void* info; + qse_dir_errnum_t errnum; + qse_dir_ent_t ent; + qse_char_t* curdir; + void* info; }; typedef struct qse_dir_t qse_dir_t; @@ -76,6 +87,14 @@ void qse_dir_fini ( qse_dir_t* dir ); +qse_dir_errnum_t qse_dir_geterrnum ( + qse_dir_t* dir +); + +const qse_char_t* qse_dir_geterrmsg ( + qse_dir_t* dir +); + qse_dir_ent_t* qse_dir_read ( qse_dir_t* dir ); diff --git a/qse/lib/fs/dir.c b/qse/lib/fs/dir.c index 1adb4272..6960f079 100644 --- a/qse/lib/fs/dir.c +++ b/qse/lib/fs/dir.c @@ -433,3 +433,22 @@ int qse_dir_rewind (qse_dir_t* dir) return 0; } +qse_dir_errnum_t qse_dir_geterrnum (qse_dir_t* dir) +{ + return dir->errnum; +} + +const qse_char_t* qse_dir_geterrmsg (qse_dir_t* dir) +{ + static const qse_char_t* errstr[] = + { + QSE_T("no error"), + QSE_T("internal error that should never have happened"), + + QSE_T("insufficient memory"), + QSE_T("invalid parameter or data"), + }; + + return (dir->errnum >= 0 && dir->errnum < QSE_COUNTOF(errstr))? + errstr[dir->errnum]: QSE_T("unknown error"); +}