added QSE_XXX_EPERM to some files

This commit is contained in:
2016-12-17 17:38:03 +00:00
parent 5a642d0dd6
commit 662fdec270
18 changed files with 84 additions and 46 deletions

View File

@ -39,8 +39,8 @@ const qse_char_t* qse_awk_dflerrstr (const qse_awk_t* awk, qse_awk_errnum_t errn
QSE_T("insufficient memory"),
QSE_T("invalid parameter or data"),
QSE_T("access denied"),
QSE_T("not supported"),
QSE_T("operation not allowed"),
QSE_T("not supported"),
QSE_T("'${0}' not found"),
QSE_T("'${0}' already exists"),
QSE_T("I/O error"),

View File

@ -57,6 +57,7 @@ enum
DIR_ENOMEM,
DIR_EINVAL,
DIR_EACCES,
DIR_EPERM,
DIR_ENOENT,
DIR_EMAPTOSCALAR
};
@ -98,6 +99,8 @@ static int dir_err_to_errnum (qse_dir_errnum_t num)
return DIR_EINVAL;
case QSE_DIR_EACCES:
return DIR_EACCES;
case QSE_DIR_EPERM:
return DIR_EPERM;
case QSE_DIR_ENOENT:
return DIR_ENOENT;
default:
@ -117,6 +120,8 @@ static int awk_err_to_errnum (qse_awk_errnum_t num)
return DIR_EINVAL;
case QSE_AWK_EACCES:
return DIR_EACCES;
case QSE_AWK_EPERM:
return DIR_EPERM;
case QSE_AWK_ENOENT:
return DIR_ENOENT;
case QSE_AWK_EMAPTOSCALAR:
@ -358,6 +363,7 @@ static qse_char_t* errmsg[] =
QSE_T("insufficient memory"),
QSE_T("invalid data"),
QSE_T("access denied"),
QSE_T("operation not permitted"),
QSE_T("no entry"),
QSE_T("cannot change a map to a scalar"),
QSE_T("unknown error")

View File

@ -1857,7 +1857,7 @@ int qse_awk_addgbl (qse_awk_t* awk, const qse_char_t* name)
if (awk->tree.ngbls > awk->tree.ngbls_base)
{
/* this function is not allowed after qse_awk_parse is called */
SETERR_COD (awk, QSE_AWK_ENOPER);
SETERR_COD (awk, QSE_AWK_EPERM);
return -1;
}
@ -1884,7 +1884,7 @@ int qse_awk_delgbl (qse_awk_t* awk, const qse_char_t* name)
if (awk->tree.ngbls > awk->tree.ngbls_base)
{
/* this function is not allow after qse_awk_parse is called */
qse_awk_seterrnum (awk, QSE_AWK_ENOPER, QSE_NULL);
qse_awk_seterrnum (awk, QSE_AWK_EPERM, QSE_NULL);
return -1;
}

View File

@ -816,7 +816,7 @@ qse_awk_rtx_t* qse_awk_rtx_open (
awk->tree.chain_size == 0 &&
qse_htb_getsize(awk->tree.funs) == 0)
{
qse_awk_seterrnum (awk, QSE_AWK_ENOPER, QSE_NULL);
qse_awk_seterrnum (awk, QSE_AWK_EPERM, QSE_NULL);
return QSE_NULL;
}
@ -1576,7 +1576,7 @@ qse_awk_val_t* qse_awk_rtx_callfun (
{
/* cannot call the function again when exit() is called
* in an AWK program or qse_awk_rtx_stop() is invoked */
SETERR_COD (rtx, QSE_AWK_ENOPER);
SETERR_COD (rtx, QSE_AWK_EPERM);
return QSE_NULL;
}
/*rtx->exit_level = EXIT_NONE;*/

View File

@ -140,7 +140,8 @@
case EINVAL: return __SYSERRNUM__ (obj2, EINVAL); \
case EBUSY: \
case EACCES: return __SYSERRNUM__ (obj2, EACCES); \
case ENOTDIR: \
case EPERM: return __SYSERRNUM__ (obj2, EPERM); \
case ENOTDIR: return __SYSERRNUM__ (obj2, ENOTDIR); \
case ENOENT: return __SYSERRNUM__ (obj2, ENOENT); \
case EEXIST: return __SYSERRNUM__ (obj2, EEXIST); \
case EINTR: return __SYSERRNUM__ (obj2, EINTR); \
@ -162,7 +163,8 @@
case EINVAL: return __SYSERRNUM__ (obj2, EINVAL); \
case EBUSY: \
case EACCES: return __SYSERRNUM__ (obj2, EACCES); \
case ENOTDIR: \
case EPERM: return __SYSERRNUM__ (obj2, EPERM); \
case ENOTDIR: return __SYSERRNUM__ (obj2, ENOTDIR); \
case ENOENT: return __SYSERRNUM__ (obj2, ENOENT); \
case EEXIST: return __SYSERRNUM__ (obj2, EEXIST); \
case EINTR: return __SYSERRNUM__ (obj2, EINTR); \
@ -183,7 +185,8 @@
case EINVAL: return __SYSERRNUM__ (obj2, EINVAL); \
case EBUSY: \
case EACCES: return __SYSERRNUM__ (obj2, EACCES); \
case ENOTDIR: \
case EPERM: return __SYSERRNUM__ (obj2, EPERM); \
case ENOTDIR: return __SYSERRNUM__ (obj2, ENOTDIR); \
case ENOENT: return __SYSERRNUM__ (obj2, ENOENT); \
case EEXIST: return __SYSERRNUM__ (obj2, EEXIST); \
case EINTR: return __SYSERRNUM__ (obj2, EINTR); \
@ -204,7 +207,8 @@
case EINVAL: return __SYSERRNUM__ (obj2, EINVAL); \
case EBUSY: \
case EACCES: return __SYSERRNUM__ (obj2, EACCES); \
case ENOTDIR: \
case EPERM: return __SYSERRNUM__ (obj2, EPERM); \
case ENOTDIR: return __SYSERRNUM__ (obj2, ENOTDIR); \
case ENOENT: return __SYSERRNUM__ (obj2, ENOENT); \
case EEXIST: return __SYSERRNUM__ (obj2, EEXIST); \
case EINTR: return __SYSERRNUM__ (obj2, EINTR); \

View File

@ -396,6 +396,12 @@ static void pop_cfs (qse_fs_t* fs, cpfile_t* cpfile, qse_dir_t** dir)
QSE_MMGR_FREE (fs->mmgr, cfs);
}
static int can_copy_dir_into (qse_fs_t* fs, cpfile_t* cpfile)
{
/* TODO: */
return 1;
}
static int copy_file (qse_fs_t* fs, cpfile_t* cpfile)
{
#if defined(NO_RECURSION)
@ -422,11 +428,12 @@ start_over:
}
/* the destination is also a directory */
if (cpfile->src_attr.ino == cpfile->dst_attr.ino &&
cpfile->src_attr.dev == cpfile->dst_attr.dev)
{
/* cannot copy a directory to itself */
fs->errnum = QSE_FS_EINVAL; /* TODO: better error code */
fs->errnum = QSE_FS_EPERM;
goto oops;
}
@ -462,12 +469,20 @@ start_over:
goto oops;
}
/* TODO: check if the directory is beging copied into itself in advance...XXXXXXXXXXXXXXXXXXXXXX */
if (qse_fs_mkdirsys (fs, cpfile->dst_fspath) <= -1)
{
/* it's ok if the destination directory already exists */
if (fs->errnum != QSE_FS_EEXIST) goto oops;
}
if (!can_copy_dir_into (fs, cpfile))
{
fs->errnum = QSE_FS_EPERM;
goto oops;
}
while (1)
{
x = qse_dir_read (dir, &dirent);
@ -533,29 +548,15 @@ start_over:
cpfile->src_attr.dev == cpfile->dst_attr.dev)
{
/* cannot copy a file to itself */
fs->errnum = QSE_FS_EINVAL; /* TODO: better error code */
fs->errnum = QSE_FS_EPERM;
goto oops;
}
if (cpfile->dst_attr.isdir)
{
#if 0
if (cpfile->flags & CPFILE_DST_FSPATH_MERGED)
{
/* merge_dstdir_and_file() has been called already.
* no more getting into a subdirectory */
fs->errnum = QSE_FS_EISDIR;
goto oops;
}
else
{
#endif
/* arrange to copy a file into a directory */
if (merge_dstdir_and_srcbase (fs, cpfile) <= -1) return -1;
goto copy_file;
#if 0
}
#endif
/* arrange to copy a file into a directory */
if (merge_dstdir_and_srcbase (fs, cpfile) <= -1) return -1;
goto copy_file;
}
if (!(cpfile->flags & QSE_FS_CPFILE_REPLACE))
@ -643,9 +644,10 @@ int qse_fs_cpfilembs (qse_fs_t* fs, const qse_mchar_t* srcpath, const qse_mchar_
if (flags & QSE_FS_CPFILE_GLOB)
{
fs->errnum = QSE_FS_ENOERR;
if (qse_globmbs (srcpath, copy_file_for_glob, &ctx, DEFAULT_GLOB_FLAGS, fs->mmgr, fs->cmgr) <= -1)
{
fs->errnum = QSE_FS_EGLOB;
if (fs->errnum == QSE_FS_ENOERR) fs->errnum = QSE_FS_EGLOB;
return -1;
}
@ -672,9 +674,10 @@ int qse_fs_cpfilewcs (qse_fs_t* fs, const qse_wchar_t* srcpath, const qse_wchar_
if (flags & QSE_FS_CPFILE_GLOB)
{
fs->errnum = QSE_FS_ENOERR;
if (qse_globwcs (srcpath, copy_file_for_glob, &ctx, DEFAULT_GLOB_FLAGS, fs->mmgr, fs->cmgr) <= -1)
{
fs->errnum = QSE_FS_EGLOB;
if (fs->errnum == QSE_FS_ENOERR) fs->errnum = QSE_FS_EGLOB;
return -1;
}

View File

@ -108,9 +108,11 @@ qse_fs_errnum_t qse_fs_syserrtoerrnum (qse_fs_t* fs, qse_fs_syserr_t e)
return QSE_FS_EINVAL;
case EACCES:
case EPERM:
return QSE_FS_EACCES;
case EPERM:
return QSE_FS_EPERM;
case ENOENT:
return QSE_FS_ENOENT;
@ -140,9 +142,11 @@ qse_fs_errnum_t qse_fs_syserrtoerrnum (qse_fs_t* fs, qse_fs_syserr_t e)
return QSE_FS_EINVAL;
case EACCES:
case EPERM:
return QSE_FS_EACCES;
case EPERM:
return QSE_FS_EPERM;
case ENOENT:
return QSE_FS_ENOENT;
@ -199,6 +203,9 @@ qse_fs_errnum_t qse_fs_direrrtoerrnum (qse_fs_t* fs, qse_dir_errnum_t e)
case QSE_DIR_EACCES:
return QSE_FS_EACCES;
case QSE_DIR_EPERM:
return QSE_FS_EPERM;
case QSE_DIR_ENOENT:
return QSE_FS_ENOENT;