added errnum to qse_dir_t
This commit is contained in:
parent
6e0c8bbf44
commit
4213133aac
@ -34,7 +34,7 @@ POST_UNINSTALL = :
|
|||||||
build_triplet = @build@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
subdir = .
|
subdir = .
|
||||||
DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
|
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||||
$(srcdir)/Makefile.in $(srcdir)/README.in \
|
$(srcdir)/Makefile.in $(srcdir)/README.in \
|
||||||
$(top_srcdir)/configure ac/config.guess ac/config.sub \
|
$(top_srcdir)/configure ac/config.guess ac/config.sub \
|
||||||
ac/depcomp ac/install-sh ac/ltmain.sh ac/missing
|
ac/depcomp ac/install-sh ac/ltmain.sh ac/missing
|
||||||
|
@ -30,7 +30,11 @@ enum qse_dir_errnum_t
|
|||||||
QSE_DIR_EINTERN,
|
QSE_DIR_EINTERN,
|
||||||
|
|
||||||
QSE_DIR_ENOMEM,
|
QSE_DIR_ENOMEM,
|
||||||
QSE_DIR_EINVAL
|
QSE_DIR_EINVAL,
|
||||||
|
QSE_DIR_EACCES,
|
||||||
|
QSE_DIR_ENOENT,
|
||||||
|
QSE_DIR_ENOTDIR,
|
||||||
|
QSE_DIR_ESYSTEM
|
||||||
};
|
};
|
||||||
typedef enum qse_dir_errnum_t qse_dir_errnum_t;
|
typedef enum qse_dir_errnum_t qse_dir_errnum_t;
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
# include <sys/types.h>
|
# include <sys/types.h>
|
||||||
# include <sys/stat.h>
|
# include <sys/stat.h>
|
||||||
# include <dirent.h>
|
# include <dirent.h>
|
||||||
|
# include <errno.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct info_t info_t;
|
typedef struct info_t info_t;
|
||||||
@ -157,7 +158,7 @@ int qse_dir_change (qse_dir_t* dir, const qse_char_t* name)
|
|||||||
|
|
||||||
if (name[0] == QSE_T('\0'))
|
if (name[0] == QSE_T('\0'))
|
||||||
{
|
{
|
||||||
/* dir->errnum = QSE_DIR_EINVAL; */
|
dir->errnum = QSE_DIR_EINVAL;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,7 +166,11 @@ int qse_dir_change (qse_dir_t* dir, const qse_char_t* name)
|
|||||||
if (info == QSE_NULL)
|
if (info == QSE_NULL)
|
||||||
{
|
{
|
||||||
info = QSE_MMGR_ALLOC (dir->mmgr, QSE_SIZEOF(*info));
|
info = QSE_MMGR_ALLOC (dir->mmgr, QSE_SIZEOF(*info));
|
||||||
if (info == QSE_NULL) return -1;
|
if (info == QSE_NULL)
|
||||||
|
{
|
||||||
|
dir->errnum = QSE_DIR_ENOMEM;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
QSE_MEMSET (info, 0, QSE_SIZEOF(*info));
|
QSE_MEMSET (info, 0, QSE_SIZEOF(*info));
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
@ -185,7 +190,7 @@ int qse_dir_change (qse_dir_t* dir, const qse_char_t* name)
|
|||||||
dirname = qse_stradup (tmp_name, dir->mmgr);
|
dirname = qse_stradup (tmp_name, dir->mmgr);
|
||||||
if (dirname == QSE_NULL)
|
if (dirname == QSE_NULL)
|
||||||
{
|
{
|
||||||
/* dir->errnum = QSE_DIR_ENOMEM; */
|
dir->errnum = QSE_DIR_ENOMEM;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,7 +202,12 @@ int qse_dir_change (qse_dir_t* dir, const qse_char_t* name)
|
|||||||
handle = FindFirstFile (dirname, &wfd);
|
handle = FindFirstFile (dirname, &wfd);
|
||||||
if (handle == INVALID_HANDLE_VALUE)
|
if (handle == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
/* dir->errnum = QSE_DIR_ESYSTEM; */
|
DWORD e = GetLastError();
|
||||||
|
dir->errnum = (e == ERROR_ACCESS_DENIED)? QSE_DIR_EACCES:
|
||||||
|
(e == ERROR_FILE_NOT_FOUND)? QSE_DIR_ENOENT:
|
||||||
|
(e == ERROR_INVALID_NAME)? QSE_DIR_EINVAL:
|
||||||
|
(e == ERROR_DIRECTORY)? QSE_DIR_EINVAL:
|
||||||
|
QSE_DIR_ESYSTEM;
|
||||||
QSE_MMGR_FREE (dir->mmgr, dirname);
|
QSE_MMGR_FREE (dir->mmgr, dirname);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -222,7 +232,7 @@ int qse_dir_change (qse_dir_t* dir, const qse_char_t* name)
|
|||||||
dirname = qse_strdup (name, dir->mmgr);
|
dirname = qse_strdup (name, dir->mmgr);
|
||||||
if (dirname == QSE_NULL)
|
if (dirname == QSE_NULL)
|
||||||
{
|
{
|
||||||
/* dir->errnum = QSE_DIR_ENOMEM; */
|
dir->errnum = QSE_DIR_ENOMEM;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,7 +244,7 @@ int qse_dir_change (qse_dir_t* dir, const qse_char_t* name)
|
|||||||
mbsdirname = qse_wcstombsdup (name, dir->mmgr);
|
mbsdirname = qse_wcstombsdup (name, dir->mmgr);
|
||||||
if (mbsdirname == QSE_NULL)
|
if (mbsdirname == QSE_NULL)
|
||||||
{
|
{
|
||||||
/* dir->errnum = QSE_DIR_ENOMEM */
|
dir->errnum = QSE_DIR_ENOMEM;
|
||||||
QSE_MMGR_FREE (dir->mmgr, dirname);
|
QSE_MMGR_FREE (dir->mmgr, dirname);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -250,7 +260,12 @@ int qse_dir_change (qse_dir_t* dir, const qse_char_t* name)
|
|||||||
|
|
||||||
if (handle == QSE_NULL)
|
if (handle == QSE_NULL)
|
||||||
{
|
{
|
||||||
/* dir->errnum = QSE_DIR... */
|
dir->errnum = (errno == EACCES)? QSE_DIR_EACCES:
|
||||||
|
(errno == ENOENT)? QSE_DIR_ENOENT:
|
||||||
|
(errno == ENOTDIR)? QSE_DIR_ENOTDIR:
|
||||||
|
(errno == ENOMEM)? QSE_DIR_ENOMEM:
|
||||||
|
QSE_DIR_ESYSTEM;
|
||||||
|
|
||||||
QSE_MMGR_FREE (dir->mmgr, dirname);
|
QSE_MMGR_FREE (dir->mmgr, dirname);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -305,7 +320,7 @@ static int set_entry_name (qse_dir_t* dir, const qse_mchar_t* name)
|
|||||||
);
|
);
|
||||||
if (tmp == QSE_NULL)
|
if (tmp == QSE_NULL)
|
||||||
{
|
{
|
||||||
/* dir->errnum = QSE_DIR_ENOMEM; */
|
dir->errnum = QSE_DIR_ENOMEM;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -341,9 +356,7 @@ qse_dir_ent_t* qse_dir_read (qse_dir_t* dir)
|
|||||||
|
|
||||||
if (info->no_more_files)
|
if (info->no_more_files)
|
||||||
{
|
{
|
||||||
/*
|
dir->errnum = QSE_DIR_ENOERR;
|
||||||
dir->errnum = QSE_DIR_ENOENT;
|
|
||||||
*/
|
|
||||||
return QSE_NULL;
|
return QSE_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -368,7 +381,20 @@ qse_dir_ent_t* qse_dir_read (qse_dir_t* dir)
|
|||||||
if (FindNextFile (info->handle, &info->wfd) == FALSE)
|
if (FindNextFile (info->handle, &info->wfd) == FALSE)
|
||||||
{
|
{
|
||||||
/*if (GetLastError() == ERROR_NO_MORE_FILES) */
|
/*if (GetLastError() == ERROR_NO_MORE_FILES) */
|
||||||
info->no_more_files = 1;
|
DWORD e = GetLastError();
|
||||||
|
if (e == ERROR_NO_MORE_FILES)
|
||||||
|
{
|
||||||
|
info->no_more_files = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dir->errnum = (e == ERROR_ACCESS_DENIED)? QSE_DIR_EACCES:
|
||||||
|
(e == ERROR_FILE_NOT_FOUND)? QSE_DIR_ENOENT:
|
||||||
|
(e == ERROR_INVALID_NAME)? QSE_DIR_EINVAL:
|
||||||
|
(e == ERROR_DIRECTORY)? QSE_DIR_EINVAL:
|
||||||
|
QSE_DIR_ESYSTEM;
|
||||||
|
return QSE_NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#elif defined(__OS2__)
|
#elif defined(__OS2__)
|
||||||
# error NOT IMPLEMENTED
|
# error NOT IMPLEMENTED
|
||||||
@ -380,7 +406,7 @@ qse_dir_ent_t* qse_dir_read (qse_dir_t* dir)
|
|||||||
ent = readdir (info->handle);
|
ent = readdir (info->handle);
|
||||||
if (ent == QSE_NULL)
|
if (ent == QSE_NULL)
|
||||||
{
|
{
|
||||||
/* TODO: dir->errnum = ... */
|
/*dir->errnum = QSE_DIR_ENOENT;*/ /* TODO: to be more specific */
|
||||||
return QSE_NULL;
|
return QSE_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -447,6 +473,10 @@ const qse_char_t* qse_dir_geterrmsg (qse_dir_t* dir)
|
|||||||
|
|
||||||
QSE_T("insufficient memory"),
|
QSE_T("insufficient memory"),
|
||||||
QSE_T("invalid parameter or data"),
|
QSE_T("invalid parameter or data"),
|
||||||
|
QSE_T("permission denined"),
|
||||||
|
QSE_T("no such entry"),
|
||||||
|
QSE_T("not a directory"),
|
||||||
|
QSE_T("system error")
|
||||||
};
|
};
|
||||||
|
|
||||||
return (dir->errnum >= 0 && dir->errnum < QSE_COUNTOF(errstr))?
|
return (dir->errnum >= 0 && dir->errnum < QSE_COUNTOF(errstr))?
|
||||||
|
Loading…
Reference in New Issue
Block a user