added qse_dir_geterrnum() and qse_dir_geterrmsg())

This commit is contained in:
hyung-hwan 2011-10-23 12:04:51 +00:00
parent 5cd5041ed3
commit 6e0c8bbf44
2 changed files with 42 additions and 4 deletions

View File

@ -24,6 +24,16 @@
#include <qse/types.h> #include <qse/types.h>
#include <qse/macros.h> #include <qse/macros.h>
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 struct qse_dir_ent_t
{ {
enum enum
@ -36,8 +46,8 @@ struct qse_dir_ent_t
QSE_DIR_ENT_BLOCK, QSE_DIR_ENT_BLOCK,
QSE_DIR_ENT_LINK QSE_DIR_ENT_LINK
} type; } type;
qse_foff_t size;
qse_char_t* name; qse_char_t* name;
qse_foff_t size;
}; };
typedef struct qse_dir_ent_t qse_dir_ent_t; 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 struct qse_dir_t
{ {
QSE_DEFINE_COMMON_FIELDS (dir) QSE_DEFINE_COMMON_FIELDS (dir)
qse_dir_ent_t ent; qse_dir_errnum_t errnum;
qse_char_t* curdir; qse_dir_ent_t ent;
void* info; qse_char_t* curdir;
void* info;
}; };
typedef struct qse_dir_t qse_dir_t; typedef struct qse_dir_t qse_dir_t;
@ -76,6 +87,14 @@ void qse_dir_fini (
qse_dir_t* dir 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_ent_t* qse_dir_read (
qse_dir_t* dir qse_dir_t* dir
); );

View File

@ -433,3 +433,22 @@ int qse_dir_rewind (qse_dir_t* dir)
return 0; 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");
}