enhanced qse_glob for win32 and os2.

added input file expansion to cmd/sed/sed.c for win32 and os2
This commit is contained in:
hyung-hwan 2012-08-31 13:00:33 +00:00
parent fde4ee404b
commit b673e79c8c
9 changed files with 1027 additions and 430 deletions

View File

@ -30,6 +30,7 @@
#include <qse/cmn/stdio.h> #include <qse/cmn/stdio.h>
#include <qse/cmn/main.h> #include <qse/cmn/main.h>
#include <qse/cmn/mbwc.h> #include <qse/cmn/mbwc.h>
#include <qse/cmn/glob.h>
#include <locale.h> #include <locale.h>
@ -586,7 +587,82 @@ static void trace_exec (qse_sed_t* sed, qse_sed_exec_op_t op, const qse_sed_cmd_
} }
#endif #endif
int sed_main (int argc, qse_char_t* argv[]) #if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
struct xarg_t
{
qse_mmgr_t* mmgr;
qse_char_t** ptr;
qse_size_t size;
qse_size_t capa;
};
typedef struct xarg_t xarg_t;
static int collect (const qse_cstr_t* path, void* ctx)
{
xarg_t* xarg = (xarg_t*)ctx;
if (xarg->size <= xarg->capa)
{
qse_char_t** tmp;
tmp = QSE_MMGR_REALLOC (xarg->mmgr, xarg->ptr, QSE_SIZEOF(*tmp) * (xarg->capa + 128));
if (tmp == QSE_NULL) return -1;
xarg->ptr = tmp;
xarg->capa += 128;
}
xarg->ptr[xarg->size] = qse_strdup (path->ptr, xarg->mmgr);
if (xarg->ptr[xarg->size] == QSE_NULL) return -1;
xarg->size++;
return 0;
}
static void purge_xarg (xarg_t* xarg)
{
if (xarg->ptr)
{
qse_size_t i;
for (i = 0; i < xarg->size; i++)
QSE_MMGR_FREE (xarg->mmgr, xarg->ptr[i]);
QSE_MMGR_FREE (xarg->mmgr, xarg->ptr);
xarg->size = 0;
xarg->capa = 0;
}
}
static int expand (int argc, qse_char_t* argv[], xarg_t* xarg)
{
int i;
qse_cstr_t tmp;
for (i = 0; i < argc; i++)
{
int x;
x = qse_glob (argv[i], collect, xarg, QSE_GLOB_PERIOD, xarg->mmgr);
if (x <= -1) return -1;
if (x == 0)
{
/* not expanded. just use it as is */
tmp.ptr = argv[i];
tmp.len = qse_strlen(argv[i]);
if (collect (&tmp, xarg) <= -1) return -1;
}
}
return 0;
}
#endif
static int sed_main (int argc, qse_char_t* argv[])
{ {
qse_mmgr_t* mmgr = QSE_MMGR_GETDFL(); qse_mmgr_t* mmgr = QSE_MMGR_GETDFL();
qse_sed_t* sed = QSE_NULL; qse_sed_t* sed = QSE_NULL;
@ -594,6 +670,11 @@ int sed_main (int argc, qse_char_t* argv[])
qse_size_t script_count; qse_size_t script_count;
int ret = -1; int ret = -1;
#if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
xarg_t xarg;
int xarg_inited = 0;
#endif
ret = handle_args (argc, argv); ret = handle_args (argc, argv);
if (ret <= -1) return -1; if (ret <= -1) return -1;
if (ret == 0) return 0; if (ret == 0) return 0;
@ -689,14 +770,21 @@ int sed_main (int argc, qse_char_t* argv[])
if (g_trace) qse_sed_setexectracer (sed, trace_exec); if (g_trace) qse_sed_setexectracer (sed, trace_exec);
#endif #endif
#if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
qse_memset (&xarg, 0, QSE_SIZEOF(xarg));
xarg.mmgr = qse_sed_getmmgr(sed);
xarg_inited = 1;
#endif
if (g_separate && g_infile_pos > 0) if (g_separate && g_infile_pos > 0)
{ {
/* 's' and input files are specified on the command line */ /* 's' and input files are specified on the command line */
qse_sed_iostd_t out_file; qse_sed_iostd_t out_file;
qse_sed_iostd_t out_inplace; qse_sed_iostd_t out_inplace;
qse_sed_iostd_t* output_file = QSE_NULL; qse_sed_iostd_t* output_file = QSE_NULL;
qse_sed_iostd_t* output = QSE_NULL; qse_sed_iostd_t* output = QSE_NULL;
qse_char_t** inptr;
int inpos, num_ins;
if (g_output_file && if (g_output_file &&
qse_strcmp (g_output_file, QSE_T("-")) != 0) qse_strcmp (g_output_file, QSE_T("-")) != 0)
@ -721,15 +809,29 @@ int sed_main (int argc, qse_char_t* argv[])
output = output_file; output = output_file;
} }
while (g_infile_pos < argc) #if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
/* perform wild-card expansions for non-unix platforms */
if (expand (argc - g_infile_pos, &argv[g_infile_pos], &xarg) <= -1)
{
qse_fprintf (QSE_STDERR, QSE_T("ERROR: out of memory\n"));
goto oops;
}
num_ins = xarg.size;
inptr = xarg.ptr;
#else
num_ins = argc - g_infile_pos;
inptr = &argv[g_infile_pos];
#endif
for (inpos = 0; inpos < num_ins; inpos++)
{ {
qse_sed_iostd_t in[2]; qse_sed_iostd_t in[2];
qse_char_t* tmpl_tmpfile; qse_char_t* tmpl_tmpfile;
in[0].type = QSE_SED_IOSTD_FILE; in[0].type = QSE_SED_IOSTD_FILE;
in[0].u.file.path = in[0].u.file.path =
(qse_strcmp (argv[g_infile_pos], QSE_T("-")) == 0)? (qse_strcmp (inptr[inpos], QSE_T("-")) == 0)? QSE_NULL: inptr[inpos];
QSE_NULL: argv[g_infile_pos];
in[0].u.file.cmgr = g_infile_cmgr; in[0].u.file.cmgr = g_infile_cmgr;
in[1].type = QSE_SED_IOSTD_NULL; in[1].type = QSE_SED_IOSTD_NULL;
@ -814,8 +916,6 @@ int sed_main (int argc, qse_char_t* argv[])
} }
if (qse_sed_isstop (sed)) break; if (qse_sed_isstop (sed)) break;
g_infile_pos++;
} }
if (output) qse_sio_close (output->u.sio); if (output) qse_sio_close (output->u.sio);
@ -829,10 +929,23 @@ int sed_main (int argc, qse_char_t* argv[])
if (g_infile_pos > 0) if (g_infile_pos > 0)
{ {
int i, num_ins; int i, num_ins;
const qse_char_t* tmp;
/* input files are specified on the command line */ /* input files are specified on the command line */
#if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
/* perform wild-card expansions for non-unix platforms */
if (expand (argc - g_infile_pos, &argv[g_infile_pos], &xarg) <= -1)
{
qse_fprintf (QSE_STDERR, QSE_T("ERROR: out of memory\n"));
goto oops;
}
num_ins = xarg.size;
#else
num_ins = argc - g_infile_pos; num_ins = argc - g_infile_pos;
#endif
in = QSE_MMGR_ALLOC (qse_sed_getmmgr(sed), QSE_SIZEOF(*in) * (num_ins + 1)); in = QSE_MMGR_ALLOC (qse_sed_getmmgr(sed), QSE_SIZEOF(*in) * (num_ins + 1));
if (in == QSE_NULL) if (in == QSE_NULL)
{ {
@ -843,11 +956,14 @@ int sed_main (int argc, qse_char_t* argv[])
for (i = 0; i < num_ins; i++) for (i = 0; i < num_ins; i++)
{ {
in[i].type = QSE_SED_IOSTD_FILE; in[i].type = QSE_SED_IOSTD_FILE;
#if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
tmp = xarg.ptr[i];
#else
tmp = argv[g_infile_pos++];
#endif
in[i].u.file.path = in[i].u.file.path =
(qse_strcmp (argv[g_infile_pos], QSE_T("-")) == 0)? (qse_strcmp (tmp, QSE_T("-")) == 0)? QSE_NULL: tmp;
QSE_NULL: argv[g_infile_pos];
in[i].u.file.cmgr = g_infile_cmgr; in[i].u.file.cmgr = g_infile_cmgr;
g_infile_pos++;
} }
in[i].type = QSE_SED_IOSTD_NULL; in[i].type = QSE_SED_IOSTD_NULL;
@ -889,6 +1005,10 @@ int sed_main (int argc, qse_char_t* argv[])
ret = 0; ret = 0;
oops: oops:
#if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
if (xarg_inited) purge_xarg (&xarg);
#endif
if (sed) qse_sed_close (sed); if (sed) qse_sed_close (sed);
if (fs) qse_fs_close (fs); if (fs) qse_fs_close (fs);
if (xma_mmgr.ctx) qse_xma_close (xma_mmgr.ctx); if (xma_mmgr.ctx) qse_xma_close (xma_mmgr.ctx);

View File

@ -24,7 +24,16 @@
#include <qse/types.h> #include <qse/types.h>
#include <qse/macros.h> #include <qse/macros.h>
typedef int (*qse_glob_cbfun_t) (
const qse_cstr_t* path,
void* cbctx
);
enum qse_glob_flags_t
{
QSE_GLOB_NOESCAPE = (1 << 0),
QSE_GLOB_PERIOD = (1 << 1)
};
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@ -32,13 +41,19 @@ extern "C" {
int qse_glob ( int qse_glob (
const qse_char_t* pattern, const qse_char_t* pattern,
qse_glob_cbfun_t cbfun,
void* cbctx,
int flags,
qse_mmgr_t* mmgr qse_mmgr_t* mmgr
); );
int qse_globwithcmgr ( int qse_globwithcmgr (
const qse_char_t* pattern, const qse_char_t* pattern,
qse_glob_cbfun_t cbfun,
void* cbctx,
int flags,
qse_mmgr_t* mmgr, qse_mmgr_t* mmgr,
qse_mmgr_t* cmgr qse_cmgr_t* cmgr
); );
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -24,7 +24,6 @@
#include <qse/cmn/str.h> #include <qse/cmn/str.h>
#include "mem.h" #include "mem.h"
/* /*
OVERWRITE AND FORCE handled by callback??? OVERWRITE AND FORCE handled by callback???
QSE_FS_MOVE_UPDATE QSE_FS_MOVE_UPDATE
@ -121,7 +120,7 @@ int qse_fs_move (
APIRET rc; APIRET rc;
rc = DosMove (fop.old_path, fop.new_path); rc = DosMove (fop.old_path, fop.new_path);
if (rc == ERROR_ALREADY_EXISTS) if (rc == ERROR_ALREADY_EXISTS || rc == ERROR_ACCESS_DENIED)
{ {
DosDelete (fop.new_path); DosDelete (fop.new_path);
rc = DosMove (fop.old_path, fop.new_path); rc = DosMove (fop.old_path, fop.new_path);

View File

@ -21,11 +21,22 @@
#include <qse/cmn/glob.h> #include <qse/cmn/glob.h>
#include <qse/cmn/str.h> #include <qse/cmn/str.h>
#include <qse/cmn/mbwc.h> #include <qse/cmn/mbwc.h>
#include <qse/cmn/path.h>
#include "mem.h" #include "mem.h"
#include <dirent.h> #if defined(_WIN32)
#include <sys/stat.h> # include <windows.h>
#include <unistd.h> #elif defined(__OS2__)
# define INCL_DOSFILEMGR
# define INCL_ERRORS
# include <os2.h>
#elif defined(__DOS__)
/* what? */
#else
# include <dirent.h>
# include <sys/stat.h>
# include <unistd.h>
#endif
#if defined(_WIN32) || defined(__OS2__) || defined(__DOS__) #if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
# define SEPC QSE_T('\\') # define SEPC QSE_T('\\')
@ -42,37 +53,53 @@
#define IS_NIL(c) ((c) == QSE_T('\0')) #define IS_NIL(c) ((c) == QSE_T('\0'))
#define IS_SEP_OR_NIL(c) (IS_SEP(c) || IS_NIL(c)) #define IS_SEP_OR_NIL(c) (IS_SEP(c) || IS_NIL(c))
#if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
/* i don't support escaping in these systems */
# define IS_ESC(c) (0)
#else
# define IS_ESC(c) ((c) == QSE_T('\\'))
#endif
/* this macro only checks for top-level wild-cards among these.
* *, ?, [], !, -
* see str-fnmat.c for more wild-card letters
*/
#define IS_WILD(c) ((c) == QSE_T('*') || (c) == QSE_T('?') || (c) == QSE_T('[')) #define IS_WILD(c) ((c) == QSE_T('*') || (c) == QSE_T('?') || (c) == QSE_T('['))
#define GLOB_MULTI QSE_T('*')
#define GLOB_SINGLE QSE_T('?')
#define GLOB_RANGE QSE_T("[]")
#define GLOB_NEGATE QSE_T("^!")
#define string_has_globs(ptr) \
(qse_strpbrk (ptr, QSE_T("*?[")) != QSE_NULL)
#define string_has_globs2(ptr,len) \
(qse_strxpbrk (ptr, len, QSE_T("*?[")) != QSE_NULL)
struct glob_t struct glob_t
{ {
qse_glob_cbfun_t cbfun;
void* cbctx;
qse_mmgr_t* mmgr; qse_mmgr_t* mmgr;
qse_cmgr_t* cmgr; qse_cmgr_t* cmgr;
qse_str_t path; qse_str_t path;
qse_str_t segtmp;
int expanded;
int fnmat_flags;
int depth; int depth;
}; };
typedef struct glob_t glob_t; typedef struct glob_t glob_t;
static int record_a_match (const qse_char_t* x)
{
wprintf (L"MATCH => [%.*S]\n", (int)qse_strlen(x), x);
return 0;
}
static int path_exists (glob_t* g, const qse_char_t* name) static int path_exists (glob_t* g, const qse_char_t* name)
{ {
#if defined(_WIN32)
return (GetFileAttributes(name) != INVALID_FILE_ATTRIBUTES)? 1: 0;
#elif defined(__OS2__)
return -1;
#elif defined(__DOS__)
return -1;
#else
struct stat st; struct stat st;
int x; int x;
@ -91,28 +118,8 @@ static int path_exists (glob_t* g, const qse_char_t* name)
#endif #endif
return (x == 0)? 1: 0; return (x == 0)? 1: 0;
}
static int path_is_directory (glob_t* g, const qse_char_t* name)
{
struct stat st;
int x;
#if defined(QSE_CHAR_IS_MCHAR)
x = lstat (name, &st);
#else
qse_mchar_t* ptr;
ptr = qse_wcstombsdup (name, g->mmgr);
if (ptr == QSE_NULL) return -1;
x = lstat (ptr, &st);
QSE_MMGR_FREE (g->mmgr, ptr);
#endif #endif
return (x == 0 && S_ISDIR(st.st_mode))? 1: 0;
} }
struct segment_t struct segment_t
@ -126,15 +133,19 @@ struct segment_t
const qse_char_t* ptr; const qse_char_t* ptr;
qse_size_t len; qse_size_t len;
qse_char_t sep; /* preceeding separator */ qse_char_t sep; /* preceeding separator */
unsigned int wild: 1; unsigned int wild: 1; /* indicate that it contains wildcards */
unsigned int next: 1; unsigned int esc: 1; /* indicate that it contains escaped letters */
unsigned int next: 1; /* indicate that it has the following segment */
}; };
typedef struct segment_t segment_t; typedef struct segment_t segment_t;
static int get_next_segment (segment_t* seg) static int get_next_segment (glob_t* g, segment_t* seg)
{ {
/* TODO: WIN32 X: drive letter segment... */
if (seg->type == NONE) if (seg->type == NONE)
{ {
/* seg->ptr must point to the beginning of the pattern /* seg->ptr must point to the beginning of the pattern
@ -148,15 +159,30 @@ static int get_next_segment (segment_t* seg)
seg->type = ROOT; seg->type = ROOT;
seg->len = 1; seg->len = 1;
seg->next = IS_NIL(seg->ptr[1])? 0: 1; seg->next = IS_NIL(seg->ptr[1])? 0: 1;
seg->sep = QSE_T('\0');
seg->wild = 0;
seg->esc = 0;
} }
else else
{ {
int escaped = 0;
seg->type = NORMAL; seg->type = NORMAL;
seg->sep = QSE_T('\0'); seg->sep = QSE_T('\0');
seg->wild = 0; seg->wild = 0;
seg->esc = 0;
do do
{ {
if (IS_WILD(seg->ptr[seg->len])) seg->wild = 1; if (escaped) escaped = 0;
else
{
if (IS_ESC(seg->ptr[seg->len]))
{
escaped = 1;
seg->esc = 1;
}
else if (IS_WILD(seg->ptr[seg->len])) seg->wild = 1;
}
seg->len++; seg->len++;
} }
while (!IS_SEP_OR_NIL(seg->ptr[seg->len])); while (!IS_SEP_OR_NIL(seg->ptr[seg->len]));
@ -165,14 +191,26 @@ static int get_next_segment (segment_t* seg)
} }
else if (seg->type == ROOT) else if (seg->type == ROOT)
{ {
int escaped = 0;
seg->type = NORMAL; seg->type = NORMAL;
seg->ptr = &seg->ptr[seg->len]; seg->ptr = &seg->ptr[seg->len];
seg->len = 0; seg->len = 0;
seg->sep = QSE_T('\0'); seg->sep = QSE_T('\0');
seg->wild = 0; seg->wild = 0;
seg->esc = 0;
while (!IS_SEP_OR_NIL(seg->ptr[seg->len])) while (!IS_SEP_OR_NIL(seg->ptr[seg->len]))
{ {
if (IS_WILD(seg->ptr[seg->len])) seg->wild = 1; if (escaped) escaped = 0;
else
{
if (IS_ESC(seg->ptr[seg->len]))
{
escaped = 1;
seg->esc = 1;
}
else if (IS_WILD(seg->ptr[seg->len])) seg->wild = 1;
}
seg->len++; seg->len++;
} }
seg->next = IS_NIL(seg->ptr[seg->len])? 0: 1; seg->next = IS_NIL(seg->ptr[seg->len])? 0: 1;
@ -184,17 +222,29 @@ static int get_next_segment (segment_t* seg)
seg->ptr = &seg->ptr[seg->len + 1]; seg->ptr = &seg->ptr[seg->len + 1];
seg->len = 0; seg->len = 0;
seg->wild = 0; seg->wild = 0;
seg->esc = 0;
if (IS_NIL(seg->ptr[-1])) if (IS_NIL(seg->ptr[-1]))
{ {
seg->type = NONE; seg->type = NONE;
seg->next = 0; seg->next = 0;
seg->sep = QSE_T('\0');
} }
else else
{ {
int escaped = 0;
seg->sep = seg->ptr[-1]; seg->sep = seg->ptr[-1];
while (!IS_SEP_OR_NIL(seg->ptr[seg->len])) while (!IS_SEP_OR_NIL(seg->ptr[seg->len]))
{ {
if (IS_WILD(seg->ptr[seg->len])) seg->wild = 1; if (escaped) escaped = 0;
else
{
if (IS_ESC(seg->ptr[seg->len]))
{
escaped = 1;
seg->esc = 1;
}
else if (IS_WILD(seg->ptr[seg->len])) seg->wild = 1;
}
seg->len++; seg->len++;
} }
seg->next = IS_NIL(seg->ptr[seg->len])? 0: 1; seg->next = IS_NIL(seg->ptr[seg->len])? 0: 1;
@ -204,17 +254,165 @@ static int get_next_segment (segment_t* seg)
return seg->type; return seg->type;
} }
DIR* xopendir (glob_t* g, const qse_char_t* path) #if defined(_WIN32)
struct DIR
{ {
if (path[0] == QSE_T('\0')) path = QSE_T("."); HANDLE h;
WIN32_FIND_DATA wfd;
};
typedef struct DIR DIR;
#elif defined(__OS2__)
struct DIR
{
HDIR h;
FILEFINDBUF3L ffb;
ULONG count;
};
typedef struct DIR DIR;
#elif defined(__DOS__)
struct DIR
{
int xxx;
};
typedef struct DIR DIR;
#endif
static DIR* xopendir (glob_t* g, const qse_cstr_t* path)
{
#if defined(_WIN32)
/* ------------------------------------------------------------------- */
DIR* dp;
dp = QSE_MMGR_ALLOC (g->mmgr, QSE_SIZEOF(*dp));
if (dp == QSE_NULL) return QSE_NULL;
if (path->len <= 0)
{
if (qse_str_cpy (&g->segtmp, QSE_T("*")) == (qse_size_t)-1)
{
QSE_MMGR_FREE (g->mmgr, dp);
return QSE_NULL;
}
}
else
{
if (qse_str_cpy (&g->segtmp, path->ptr) == (qse_size_t)-1 ||
(!IS_SEP(path->ptr[path->len-1]) &&
!qse_isdrivecurpath(path->ptr) &&
qse_str_ccat (&g->segtmp, QSE_T('\\')) == (qse_size_t)-1) ||
qse_str_ccat (&g->segtmp, QSE_T('*')) == (qse_size_t)-1)
{
QSE_MMGR_FREE (g->mmgr, dp);
return QSE_NULL;
}
}
dp->h = FindFirstFile (QSE_STR_PTR(&g->segtmp), &dp->wfd);
if (dp->h == INVALID_HANDLE_VALUE)
{
QSE_MMGR_FREE (g->mmgr, dp);
return QSE_NULL;
}
return dp;
/* ------------------------------------------------------------------- */
#elif defined(__OS2__)
/* ------------------------------------------------------------------- */
DIR* dp;
APIRET rc;
qse_mchar_t* mptr;
dp = QSE_MMGR_ALLOC (g->mmgr, QSE_SIZEOF(*dp));
if (dp == QSE_NULL) return QSE_NULL;
if (path->len <= 0)
{
if (qse_str_cpy (&g->segtmp, QSE_T("*.*")) == (qse_size_t)-1)
{
QSE_MMGR_FREE (g->mmgr, dp);
return QSE_NULL;
}
}
else
{
if (qse_str_cpy (&g->segtmp, path->ptr) == (qse_size_t)-1 ||
(!IS_SEP(path->ptr[path->len-1]) &&
!qse_isdrivecurpath(path->ptr) &&
qse_str_ccat (&g->segtmp, QSE_T('\\')) == (qse_size_t)-1) ||
qse_str_cat (&g->segtmp, QSE_T("*.*")) == (qse_size_t)-1)
{
QSE_MMGR_FREE (g->mmgr, dp);
return QSE_NULL;
}
}
dp->h = HDIR_CREATE;
dp->count = 1;
#if defined(QSE_CHAR_IS_MCHAR) #if defined(QSE_CHAR_IS_MCHAR)
return opendir (path) mptr = QSE_STR_PTR(&g->segtmp);
#else #else
mptr = qse_wcstombsdup (QSE_STR_PTR(&g->segtmp), g->mmgr);
if (mptr == QSE_NULL)
{
QSE_MMGR_FREE (g->mmgr, dp);
return QSE_NULL;
}
#endif
rc = DosFindFirst (
mptr,
&dp->h,
FILE_DIRECTORY | FILE_READONLY,
&dp->ffb,
QSE_SIZEOF(dp->ffb),
&dp->count,
FIL_STANDARDL);
#if defined(QSE_CHAR_IS_MCHAR)
/* nothing to do */
#else
QSE_MMGR_FREE (g->mmgr, mptr);
#endif
if (rc != NO_ERROR)
{
QSE_MMGR_FREE (g->mmgr, dp);
return QSE_NULL;
}
return dp;
/* ------------------------------------------------------------------- */
#elif defined(__DOS__)
/* ------------------------------------------------------------------- */
return QSE_NULL;
/* ------------------------------------------------------------------- */
#else
/* ------------------------------------------------------------------- */
#if defined(QSE_CHAR_IS_MCHAR)
return opendir ((path->len <= 0)? p = QSE_T("."): path->ptr);
#else
if (path->len <= 0)
{
return opendir (QSE_MT("."));
}
else
{
DIR* dp; DIR* dp;
qse_mchar_t* mptr; qse_mchar_t* mptr;
mptr = qse_wcstombsdup (path, g->mmgr); mptr = qse_wcstombsdup (path->ptr, g->mmgr);
if (mptr == QSE_NULL) return QSE_NULL; if (mptr == QSE_NULL) return QSE_NULL;
dp = opendir (mptr); dp = opendir (mptr);
@ -222,11 +420,62 @@ DIR* xopendir (glob_t* g, const qse_char_t* path)
QSE_MMGR_FREE (g->mmgr, mptr); QSE_MMGR_FREE (g->mmgr, mptr);
return dp; return dp;
}
#endif
/* ------------------------------------------------------------------- */
#endif #endif
} }
int xreaddir (glob_t* g, DIR* dp, qse_str_t* path) static int xreaddir (glob_t* g, DIR* dp, qse_str_t* path)
{ {
#if defined(_WIN32)
/* ------------------------------------------------------------------- */
if (qse_str_cat (path, dp->wfd.cFileName) == (qse_size_t)-1) return -1;
if (FindNextFile (dp->h, &dp->wfd) == FALSE)
return (GetLastError() == ERROR_NO_MORE_FILES)? 0: -1;
return 1;
/* ------------------------------------------------------------------- */
#elif defined(__OS2__)
/* ------------------------------------------------------------------- */
APIRET rc;
#if defined(QSE_CHAR_IS_MCHAR)
/* nothing */
#else
qse_size_t ml, wl, tmp;
#endif
if (dp->count <= 0) return 0;
#if defined(QSE_CHAR_IS_MCHAR)
if (qse_str_cat (path, dp->ffb.achName) == (qse_size_t)-1) return -1;
#else
tmp = QSE_STR_LEN(path);
if (qse_mbstowcswithcmgr (dp->ffb.achName, &ml, QSE_NULL, &wl, g->cmgr) <= -1 ||
qse_str_setlen (path, tmp + wl) == (qse_size_t)-1) return -1;
qse_mbstowcswithcmgr (dp->ffb.achName, &ml, QSE_STR_CPTR(&g->path,tmp), &wl, g->cmgr);
#endif
rc = DosFindNext (dp->h, &dp->ffb, QSE_SIZEOF(dp->ffb), &dp->count);
if (rc != NO_ERROR) return -1;
return 1;
/* ------------------------------------------------------------------- */
#elif defined(__DOS__)
/* ------------------------------------------------------------------- */
return -1;
/* ------------------------------------------------------------------- */
#else
/* ------------------------------------------------------------------- */
struct dirent* de; struct dirent* de;
#if defined(QSE_CHAR_IS_MCHAR) #if defined(QSE_CHAR_IS_MCHAR)
/* nothing */ /* nothing */
@ -238,8 +487,10 @@ read_more:
de = readdir (dp); de = readdir (dp);
if (de == NULL) return 0; if (de == NULL) return 0;
/*
if (qse_mbscmp (de->d_name, QSE_MT(".")) == 0 || if (qse_mbscmp (de->d_name, QSE_MT(".")) == 0 ||
qse_mbscmp (de->d_name, QSE_MT("..")) == 0) goto read_more; qse_mbscmp (de->d_name, QSE_MT("..")) == 0) goto read_more;
*/
#if defined(QSE_CHAR_IS_MCHAR) #if defined(QSE_CHAR_IS_MCHAR)
if (qse_str_cat (path, de->d_name) == (qse_size_t)-1) return -1; if (qse_str_cat (path, de->d_name) == (qse_size_t)-1) return -1;
@ -251,15 +502,32 @@ read_more:
#endif #endif
return 1; return 1;
/* ------------------------------------------------------------------- */
#endif
}
static void xclosedir (glob_t* g, DIR* dp)
{
#if defined(_WIN32)
FindClose (dp->h);
QSE_MMGR_FREE (g->mmgr, dp);
#elif defined(__OS2__)
DosFindClose (dp->h);
QSE_MMGR_FREE (g->mmgr, dp);
#elif defined(__DOS__)
QSE_MMGR_FREE (g->mmgr, dp);
#else
closedir (dp);
#endif
} }
static int search (glob_t* g, segment_t* seg) static int search (glob_t* g, segment_t* seg)
{ {
segment_t save = *seg; segment_t save = *seg;
g->depth++; g->depth++;
//wprintf (L"CALL DEPTH = %d\n", (int)g->depth);
while (get_next_segment(seg) != NONE) while (get_next_segment(g, seg) != NONE)
{ {
QSE_ASSERT (seg->type != NONE); QSE_ASSERT (seg->type != NONE);
@ -267,15 +535,18 @@ static int search (glob_t* g, segment_t* seg)
{ {
DIR* dp; DIR* dp;
//wprintf (L"OPENDING %.*S\n", (int)QSE_STR_LEN(&g->path), QSE_STR_PTR(&g->path)); dp = xopendir (g, QSE_STR_CSTR(&g->path));
dp = xopendir (g, QSE_STR_PTR(&g->path));
if (dp) if (dp)
{ {
qse_size_t tmp, tmp2; qse_size_t tmp, tmp2;
tmp = QSE_STR_LEN(&g->path); tmp = QSE_STR_LEN(&g->path);
if (seg->sep && qse_str_ccat (&g->path, seg->sep) == (qse_size_t)-1) return -1; if (seg->sep && qse_str_ccat (&g->path, seg->sep) == (qse_size_t)-1)
{
xclosedir (g, dp);
return -1;
}
tmp2 = QSE_STR_LEN(&g->path); tmp2 = QSE_STR_LEN(&g->path);
while (1) while (1)
@ -286,35 +557,81 @@ static int search (glob_t* g, segment_t* seg)
if (seg->next) if (seg->next)
{ {
if (qse_strnfnmat (QSE_STR_CPTR(&g->path,tmp2), seg->ptr, seg->len, 0) > 0 && if (qse_strnfnmat (QSE_STR_CPTR(&g->path,tmp2), seg->ptr, seg->len, g->fnmat_flags) > 0 &&
search (g, seg) <= -1) return -1; search (g, seg) <= -1)
{
xclosedir (g, dp);
return -1;
}
} }
else else
{ {
//wprintf (L"CHECKING %S [%.*S]\n", QSE_STR_CPTR(&g->path,tmp2), (int)seg->len, seg->ptr); if (qse_strnfnmat (QSE_STR_CPTR(&g->path,tmp2), seg->ptr, seg->len, g->fnmat_flags) > 0)
if (qse_strnfnmat (QSE_STR_CPTR(&g->path,tmp2), seg->ptr, seg->len, 0) > 0)
{ {
record_a_match (QSE_STR_PTR(&g->path)); if (g->cbfun (QSE_STR_CSTR(&g->path), g->cbctx) <= -1)
{
xclosedir (g, dp);
return -1;
}
g->expanded = 1;
} }
} }
} }
qse_str_setlen (&g->path, tmp); /* TODO: error check */ qse_str_setlen (&g->path, tmp);
closedir (dp); xclosedir (g, dp);
//wprintf (L"CLOSED %S\n", QSE_STR_PTR(&g->path));
} }
break; break;
} }
else else
{ {
if ((seg->sep && qse_str_ccat (&g->path, seg->sep) == (qse_size_t)-1) || if (seg->sep && qse_str_ccat (&g->path, seg->sep) == (qse_size_t)-1) return -1;
qse_str_ncat (&g->path, seg->ptr, seg->len) == (qse_size_t)-1) return -1;
if (seg->esc)
{
/* if the segment contains escape sequences,
* strip the escape letters off the segment */
qse_xstr_t tmp;
qse_size_t i;
int escaped = 0;
if (QSE_STR_CAPA(&g->segtmp) < seg->len &&
qse_str_setcapa (&g->segtmp, seg->len) == (qse_size_t)-1) return -1;
tmp.ptr = QSE_STR_PTR(&g->segtmp);
tmp.len = 0;
/* the following loop drops the last character
* if it is the escape character */
for (i = 0; i < seg->len; i++)
{
if (escaped)
{
escaped = 0;
tmp.ptr[tmp.len++] = seg->ptr[i];
}
else
{
if (IS_ESC(seg->ptr[i]))
escaped = 1;
else
tmp.ptr[tmp.len++] = seg->ptr[i];
}
}
if (qse_str_ncat (&g->path, tmp.ptr, tmp.len) == (qse_size_t)-1) return -1;
}
else
{
if (qse_str_ncat (&g->path, seg->ptr, seg->len) == (qse_size_t)-1) return -1;
}
//wprintf (L">> [%.*S]\n", (int)QSE_STR_LEN(&g->path), QSE_STR_PTR(&g->path));
if (!seg->next && path_exists(g, QSE_STR_PTR(&g->path))) if (!seg->next && path_exists(g, QSE_STR_PTR(&g->path)))
{ {
record_a_match (QSE_STR_PTR(&g->path)); if (g->cbfun (QSE_STR_CSTR(&g->path), g->cbctx) <= -1) return -1;
g->expanded = 1;
} }
} }
} }
@ -324,17 +641,31 @@ static int search (glob_t* g, segment_t* seg)
return 0; return 0;
} }
int qse_globwithcmgr (const qse_char_t* pattern, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr) int qse_globwithcmgr (const qse_char_t* pattern, qse_glob_cbfun_t cbfun, void* cbctx, int flags, qse_mmgr_t* mmgr, qse_cmgr_t* cmgr)
{ {
segment_t seg; segment_t seg;
glob_t g; glob_t g;
int x; int x;
QSE_MEMSET (&g, 0, QSE_SIZEOF(g)); QSE_MEMSET (&g, 0, QSE_SIZEOF(g));
g.cbfun = cbfun;
g.cbctx = cbctx;
g.mmgr = mmgr; g.mmgr = mmgr;
g.cmgr = cmgr; g.cmgr = cmgr;
#if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
g.fnmat_flags |= QSE_STRFNMAT_NOESCAPE | QSE_STRFNMAT_IGNORECASE;
#else
if (flags & QSE_GLOB_NOESCAPE) g.fnmat_flags |= QSE_STRFNMAT_NOESCAPE;
#endif
if (flags & QSE_GLOB_PERIOD) g.fnmat_flags |= QSE_STRFNMAT_PERIOD;
if (qse_str_init (&g.path, mmgr, 512) <= -1) return -1; if (qse_str_init (&g.path, mmgr, 512) <= -1) return -1;
if (qse_str_init (&g.segtmp, mmgr, 256) <= -1)
{
qse_str_fini (&g.path);
return -1;
}
QSE_MEMSET (&seg, 0, QSE_SIZEOF(seg)); QSE_MEMSET (&seg, 0, QSE_SIZEOF(seg));
seg.type = NONE; seg.type = NONE;
@ -343,12 +674,15 @@ int qse_globwithcmgr (const qse_char_t* pattern, qse_mmgr_t* mmgr, qse_cmgr_t* c
x = search (&g, &seg); x = search (&g, &seg);
qse_str_fini (&g.segtmp);
qse_str_fini (&g.path); qse_str_fini (&g.path);
return x;
if (x <= -1) return -1;
return g.expanded;
} }
int qse_glob (const qse_char_t* pattern, qse_mmgr_t* mmgr) int qse_glob (const qse_char_t* pattern, qse_glob_cbfun_t cbfun, void* cbctx, int flags, qse_mmgr_t* mmgr)
{ {
return qse_globwithcmgr (pattern, mmgr, qse_getdflcmgr()); return qse_globwithcmgr (pattern, cbfun, cbctx, flags, mmgr, qse_getdflcmgr());
} }

View File

@ -4,15 +4,36 @@
#include <qse/cmn/mbwc.h> #include <qse/cmn/mbwc.h>
#include <qse/cmn/str.h> #include <qse/cmn/str.h>
#include <qse/cmn/mem.h> #include <qse/cmn/mem.h>
#include <qse/cmn/path.h>
#include <locale.h> #include <locale.h>
#if defined(_WIN32) #if defined(_WIN32)
# include <windows.h> # include <windows.h>
#endif #endif
static int print (const qse_cstr_t* path, void* ctx)
{
qse_printf (QSE_T("%.*s\n"), (int)path->len, path->ptr);
return 0;
}
static int glob_main (int argc, qse_char_t* argv[]) static int glob_main (int argc, qse_char_t* argv[])
{ {
return qse_glob (argv[1], QSE_MMGR_GETDFL()); int i;
if (argc <= 1)
{
qse_fprintf (QSE_STDERR, QSE_T("Usage: %S file-pattern ...\n"), qse_basename(argv[0]));
return -1;
}
for (i = 1; i < argc; i++)
{
if (qse_glob (argv[i], print, QSE_NULL, QSE_GLOB_PERIOD, QSE_MMGR_GETDFL()) <= -1) return -1;
}
return 0;
} }
int qse_main (int argc, qse_achar_t* argv[]) int qse_main (int argc, qse_achar_t* argv[])

View File

@ -42,7 +42,7 @@ WVList
0 0
10 10
WPickList WPickList
81 83
11 11
MItem MItem
3 3
@ -383,8 +383,8 @@ WVList
0 0
87 87
MItem MItem
28 29
../../../../../lib/cmn/htb.c ../../../../../lib/cmn/glob.c
88 88
WString WString
4 4
@ -401,8 +401,8 @@ WVList
0 0
91 91
MItem MItem
29 28
../../../../../lib/cmn/hton.c ../../../../../lib/cmn/htb.c
92 92
WString WString
4 4
@ -420,7 +420,7 @@ WVList
95 95
MItem MItem
29 29
../../../../../lib/cmn/ipad.c ../../../../../lib/cmn/hton.c
96 96
WString WString
4 4
@ -437,8 +437,8 @@ WVList
0 0
99 99
MItem MItem
28 29
../../../../../lib/cmn/lda.c ../../../../../lib/cmn/ipad.c
100 100
WString WString
4 4
@ -455,8 +455,8 @@ WVList
0 0
103 103
MItem MItem
29 28
../../../../../lib/cmn/main.c ../../../../../lib/cmn/lda.c
104 104
WString WString
4 4
@ -473,8 +473,8 @@ WVList
0 0
107 107
MItem MItem
33 29
../../../../../lib/cmn/mbwc-str.c ../../../../../lib/cmn/main.c
108 108
WString WString
4 4
@ -491,8 +491,8 @@ WVList
0 0
111 111
MItem MItem
29 33
../../../../../lib/cmn/mbwc.c ../../../../../lib/cmn/mbwc-str.c
112 112
WString WString
4 4
@ -509,8 +509,8 @@ WVList
0 0
115 115
MItem MItem
28 29
../../../../../lib/cmn/mem.c ../../../../../lib/cmn/mbwc.c
116 116
WString WString
4 4
@ -527,8 +527,8 @@ WVList
0 0
119 119
MItem MItem
29 28
../../../../../lib/cmn/nwad.c ../../../../../lib/cmn/mem.c
120 120
WString WString
4 4
@ -546,7 +546,7 @@ WVList
123 123
MItem MItem
29 29
../../../../../lib/cmn/nwio.c ../../../../../lib/cmn/nwad.c
124 124
WString WString
4 4
@ -563,8 +563,8 @@ WVList
0 0
127 127
MItem MItem
28 29
../../../../../lib/cmn/oht.c ../../../../../lib/cmn/nwio.c
128 128
WString WString
4 4
@ -582,7 +582,7 @@ WVList
131 131
MItem MItem
28 28
../../../../../lib/cmn/opt.c ../../../../../lib/cmn/oht.c
132 132
WString WString
4 4
@ -599,8 +599,8 @@ WVList
0 0
135 135
MItem MItem
38 28
../../../../../lib/cmn/path-basename.c ../../../../../lib/cmn/opt.c
136 136
WString WString
4 4
@ -617,8 +617,8 @@ WVList
0 0
139 139
MItem MItem
35 38
../../../../../lib/cmn/path-canon.c ../../../../../lib/cmn/path-basename.c
140 140
WString WString
4 4
@ -635,8 +635,8 @@ WVList
0 0
143 143
MItem MItem
28 35
../../../../../lib/cmn/pio.c ../../../../../lib/cmn/path-canon.c
144 144
WString WString
4 4
@ -654,7 +654,7 @@ WVList
147 147
MItem MItem
28 28
../../../../../lib/cmn/pma.c ../../../../../lib/cmn/pio.c
148 148
WString WString
4 4
@ -672,7 +672,7 @@ WVList
151 151
MItem MItem
28 28
../../../../../lib/cmn/rbt.c ../../../../../lib/cmn/pma.c
152 152
WString WString
4 4
@ -690,7 +690,7 @@ WVList
155 155
MItem MItem
28 28
../../../../../lib/cmn/rex.c ../../../../../lib/cmn/rbt.c
156 156
WString WString
4 4
@ -708,7 +708,7 @@ WVList
159 159
MItem MItem
28 28
../../../../../lib/cmn/sio.c ../../../../../lib/cmn/rex.c
160 160
WString WString
4 4
@ -726,7 +726,7 @@ WVList
163 163
MItem MItem
28 28
../../../../../lib/cmn/sll.c ../../../../../lib/cmn/sio.c
164 164
WString WString
4 4
@ -743,8 +743,8 @@ WVList
0 0
167 167
MItem MItem
29 28
../../../../../lib/cmn/slmb.c ../../../../../lib/cmn/sll.c
168 168
WString WString
4 4
@ -761,8 +761,8 @@ WVList
0 0
171 171
MItem MItem
30 29
../../../../../lib/cmn/stdio.c ../../../../../lib/cmn/slmb.c
172 172
WString WString
4 4
@ -779,8 +779,8 @@ WVList
0 0
175 175
MItem MItem
32 30
../../../../../lib/cmn/str-beg.c ../../../../../lib/cmn/stdio.c
176 176
WString WString
4 4
@ -798,7 +798,7 @@ WVList
179 179
MItem MItem
32 32
../../../../../lib/cmn/str-cat.c ../../../../../lib/cmn/str-beg.c
180 180
WString WString
4 4
@ -816,7 +816,7 @@ WVList
183 183
MItem MItem
32 32
../../../../../lib/cmn/str-chr.c ../../../../../lib/cmn/str-cat.c
184 184
WString WString
4 4
@ -834,7 +834,7 @@ WVList
187 187
MItem MItem
32 32
../../../../../lib/cmn/str-cmp.c ../../../../../lib/cmn/str-chr.c
188 188
WString WString
4 4
@ -852,7 +852,7 @@ WVList
191 191
MItem MItem
32 32
../../../../../lib/cmn/str-cnv.c ../../../../../lib/cmn/str-cmp.c
192 192
WString WString
4 4
@ -870,7 +870,7 @@ WVList
195 195
MItem MItem
32 32
../../../../../lib/cmn/str-cpy.c ../../../../../lib/cmn/str-cnv.c
196 196
WString WString
4 4
@ -888,7 +888,7 @@ WVList
199 199
MItem MItem
32 32
../../../../../lib/cmn/str-del.c ../../../../../lib/cmn/str-cpy.c
200 200
WString WString
4 4
@ -906,7 +906,7 @@ WVList
203 203
MItem MItem
32 32
../../../../../lib/cmn/str-dup.c ../../../../../lib/cmn/str-del.c
204 204
WString WString
4 4
@ -923,8 +923,8 @@ WVList
0 0
207 207
MItem MItem
33 32
../../../../../lib/cmn/str-dynm.c ../../../../../lib/cmn/str-dup.c
208 208
WString WString
4 4
@ -942,7 +942,7 @@ WVList
211 211
MItem MItem
33 33
../../../../../lib/cmn/str-dynw.c ../../../../../lib/cmn/str-dynm.c
212 212
WString WString
4 4
@ -959,8 +959,8 @@ WVList
0 0
215 215
MItem MItem
32 33
../../../../../lib/cmn/str-end.c ../../../../../lib/cmn/str-dynw.c
216 216
WString WString
4 4
@ -977,8 +977,8 @@ WVList
0 0
219 219
MItem MItem
33 32
../../../../../lib/cmn/str-excl.c ../../../../../lib/cmn/str-end.c
220 220
WString WString
4 4
@ -996,7 +996,7 @@ WVList
223 223
MItem MItem
33 33
../../../../../lib/cmn/str-fcpy.c ../../../../../lib/cmn/str-excl.c
224 224
WString WString
4 4
@ -1014,7 +1014,7 @@ WVList
227 227
MItem MItem
33 33
../../../../../lib/cmn/str-incl.c ../../../../../lib/cmn/str-fcpy.c
228 228
WString WString
4 4
@ -1031,8 +1031,8 @@ WVList
0 0
231 231
MItem MItem
32 34
../../../../../lib/cmn/str-len.c ../../../../../lib/cmn/str-fnmat.c
232 232
WString WString
4 4
@ -1049,8 +1049,8 @@ WVList
0 0
235 235
MItem MItem
32 33
../../../../../lib/cmn/str-pac.c ../../../../../lib/cmn/str-incl.c
236 236
WString WString
4 4
@ -1067,8 +1067,8 @@ WVList
0 0
239 239
MItem MItem
33 32
../../../../../lib/cmn/str-pbrk.c ../../../../../lib/cmn/str-len.c
240 240
WString WString
4 4
@ -1086,7 +1086,7 @@ WVList
243 243
MItem MItem
32 32
../../../../../lib/cmn/str-put.c ../../../../../lib/cmn/str-pac.c
244 244
WString WString
4 4
@ -1103,8 +1103,8 @@ WVList
0 0
247 247
MItem MItem
32 33
../../../../../lib/cmn/str-rev.c ../../../../../lib/cmn/str-pbrk.c
248 248
WString WString
4 4
@ -1122,7 +1122,7 @@ WVList
251 251
MItem MItem
32 32
../../../../../lib/cmn/str-rot.c ../../../../../lib/cmn/str-put.c
252 252
WString WString
4 4
@ -1140,7 +1140,7 @@ WVList
255 255
MItem MItem
32 32
../../../../../lib/cmn/str-set.c ../../../../../lib/cmn/str-rev.c
256 256
WString WString
4 4
@ -1158,7 +1158,7 @@ WVList
259 259
MItem MItem
32 32
../../../../../lib/cmn/str-spl.c ../../../../../lib/cmn/str-rot.c
260 260
WString WString
4 4
@ -1176,7 +1176,7 @@ WVList
263 263
MItem MItem
32 32
../../../../../lib/cmn/str-spn.c ../../../../../lib/cmn/str-set.c
264 264
WString WString
4 4
@ -1194,7 +1194,7 @@ WVList
267 267
MItem MItem
32 32
../../../../../lib/cmn/str-str.c ../../../../../lib/cmn/str-spl.c
268 268
WString WString
4 4
@ -1211,8 +1211,8 @@ WVList
0 0
271 271
MItem MItem
34 32
../../../../../lib/cmn/str-subst.c ../../../../../lib/cmn/str-spn.c
272 272
WString WString
4 4
@ -1230,7 +1230,7 @@ WVList
275 275
MItem MItem
32 32
../../../../../lib/cmn/str-tok.c ../../../../../lib/cmn/str-str.c
276 276
WString WString
4 4
@ -1247,8 +1247,8 @@ WVList
0 0
279 279
MItem MItem
32 34
../../../../../lib/cmn/str-trm.c ../../../../../lib/cmn/str-subst.c
280 280
WString WString
4 4
@ -1265,8 +1265,8 @@ WVList
0 0
283 283
MItem MItem
33 32
../../../../../lib/cmn/str-word.c ../../../../../lib/cmn/str-tok.c
284 284
WString WString
4 4
@ -1283,8 +1283,8 @@ WVList
0 0
287 287
MItem MItem
29 32
../../../../../lib/cmn/time.c ../../../../../lib/cmn/str-trm.c
288 288
WString WString
4 4
@ -1301,8 +1301,8 @@ WVList
0 0
291 291
MItem MItem
28 33
../../../../../lib/cmn/tio.c ../../../../../lib/cmn/str-word.c
292 292
WString WString
4 4
@ -1319,8 +1319,8 @@ WVList
0 0
295 295
MItem MItem
32 29
../../../../../lib/cmn/tre-ast.c ../../../../../lib/cmn/time.c
296 296
WString WString
4 4
@ -1337,8 +1337,8 @@ WVList
0 0
299 299
MItem MItem
36 28
../../../../../lib/cmn/tre-compile.c ../../../../../lib/cmn/tio.c
300 300
WString WString
4 4
@ -1355,8 +1355,8 @@ WVList
0 0
303 303
MItem MItem
44 32
../../../../../lib/cmn/tre-match-backtrack.c ../../../../../lib/cmn/tre-ast.c
304 304
WString WString
4 4
@ -1373,8 +1373,8 @@ WVList
0 0
307 307
MItem MItem
43 36
../../../../../lib/cmn/tre-match-parallel.c ../../../../../lib/cmn/tre-compile.c
308 308
WString WString
4 4
@ -1391,8 +1391,8 @@ WVList
0 0
311 311
MItem MItem
34 44
../../../../../lib/cmn/tre-parse.c ../../../../../lib/cmn/tre-match-backtrack.c
312 312
WString WString
4 4
@ -1409,8 +1409,8 @@ WVList
0 0
315 315
MItem MItem
34 43
../../../../../lib/cmn/tre-stack.c ../../../../../lib/cmn/tre-match-parallel.c
316 316
WString WString
4 4
@ -1427,8 +1427,8 @@ WVList
0 0
319 319
MItem MItem
28 34
../../../../../lib/cmn/tre.c ../../../../../lib/cmn/tre-parse.c
320 320
WString WString
4 4
@ -1445,8 +1445,8 @@ WVList
0 0
323 323
MItem MItem
29 34
../../../../../lib/cmn/utf8.c ../../../../../lib/cmn/tre-stack.c
324 324
WString WString
4 4
@ -1464,7 +1464,7 @@ WVList
327 327
MItem MItem
28 28
../../../../../lib/cmn/xma.c ../../../../../lib/cmn/tre.c
328 328
WString WString
4 4
@ -1481,44 +1481,44 @@ WVList
0 0
331 331
MItem MItem
3 29
*.h ../../../../../lib/cmn/utf8.c
332 332
WString WString
3 4
NIL COBJ
333 333
WVList WVList
0 0
334 334
WVList WVList
0 0
-1 11
1 1
1 1
0 0
335 335
MItem MItem
28 28
../../../../../lib/cmn/mem.h ../../../../../lib/cmn/xma.c
336 336
WString WString
3 4
NIL COBJ
337 337
WVList WVList
0 0
338 338
WVList WVList
0 0
331 11
1 1
1 1
0 0
339 339
MItem MItem
32 3
../../../../../lib/cmn/syscall.h *.h
340 340
WString WString
3 3
@ -1529,7 +1529,43 @@ WVList
342 342
WVList WVList
0 0
331 -1
1
1
0
343
MItem
28
../../../../../lib/cmn/mem.h
344
WString
3
NIL
345
WVList
0
346
WVList
0
339
1
1
0
347
MItem
32
../../../../../lib/cmn/syscall.h
348
WString
3
NIL
349
WVList
0
350
WVList
0
339
1 1
1 1
0 0

View File

@ -42,7 +42,7 @@ WVList
0 0
10 10
WPickList WPickList
81 83
11 11
MItem MItem
3 3
@ -395,8 +395,8 @@ WVList
0 0
90 90
MItem MItem
28 29
../../../../../lib/cmn/htb.c ../../../../../lib/cmn/glob.c
91 91
WString WString
4 4
@ -413,8 +413,8 @@ WVList
0 0
94 94
MItem MItem
29 28
../../../../../lib/cmn/hton.c ../../../../../lib/cmn/htb.c
95 95
WString WString
4 4
@ -432,7 +432,7 @@ WVList
98 98
MItem MItem
29 29
../../../../../lib/cmn/ipad.c ../../../../../lib/cmn/hton.c
99 99
WString WString
4 4
@ -449,8 +449,8 @@ WVList
0 0
102 102
MItem MItem
28 29
../../../../../lib/cmn/lda.c ../../../../../lib/cmn/ipad.c
103 103
WString WString
4 4
@ -467,8 +467,8 @@ WVList
0 0
106 106
MItem MItem
29 28
../../../../../lib/cmn/main.c ../../../../../lib/cmn/lda.c
107 107
WString WString
4 4
@ -485,8 +485,8 @@ WVList
0 0
110 110
MItem MItem
33 29
../../../../../lib/cmn/mbwc-str.c ../../../../../lib/cmn/main.c
111 111
WString WString
4 4
@ -503,8 +503,8 @@ WVList
0 0
114 114
MItem MItem
29 33
../../../../../lib/cmn/mbwc.c ../../../../../lib/cmn/mbwc-str.c
115 115
WString WString
4 4
@ -521,8 +521,8 @@ WVList
0 0
118 118
MItem MItem
28 29
../../../../../lib/cmn/mem.c ../../../../../lib/cmn/mbwc.c
119 119
WString WString
4 4
@ -539,8 +539,8 @@ WVList
0 0
122 122
MItem MItem
29 28
../../../../../lib/cmn/nwad.c ../../../../../lib/cmn/mem.c
123 123
WString WString
4 4
@ -558,7 +558,7 @@ WVList
126 126
MItem MItem
29 29
../../../../../lib/cmn/nwio.c ../../../../../lib/cmn/nwad.c
127 127
WString WString
4 4
@ -575,8 +575,8 @@ WVList
0 0
130 130
MItem MItem
28 29
../../../../../lib/cmn/oht.c ../../../../../lib/cmn/nwio.c
131 131
WString WString
4 4
@ -594,7 +594,7 @@ WVList
134 134
MItem MItem
28 28
../../../../../lib/cmn/opt.c ../../../../../lib/cmn/oht.c
135 135
WString WString
4 4
@ -611,8 +611,8 @@ WVList
0 0
138 138
MItem MItem
38 28
../../../../../lib/cmn/path-basename.c ../../../../../lib/cmn/opt.c
139 139
WString WString
4 4
@ -629,8 +629,8 @@ WVList
0 0
142 142
MItem MItem
35 38
../../../../../lib/cmn/path-canon.c ../../../../../lib/cmn/path-basename.c
143 143
WString WString
4 4
@ -647,8 +647,8 @@ WVList
0 0
146 146
MItem MItem
28 35
../../../../../lib/cmn/pio.c ../../../../../lib/cmn/path-canon.c
147 147
WString WString
4 4
@ -666,7 +666,7 @@ WVList
150 150
MItem MItem
28 28
../../../../../lib/cmn/pma.c ../../../../../lib/cmn/pio.c
151 151
WString WString
4 4
@ -684,7 +684,7 @@ WVList
154 154
MItem MItem
28 28
../../../../../lib/cmn/rbt.c ../../../../../lib/cmn/pma.c
155 155
WString WString
4 4
@ -702,7 +702,7 @@ WVList
158 158
MItem MItem
28 28
../../../../../lib/cmn/rex.c ../../../../../lib/cmn/rbt.c
159 159
WString WString
4 4
@ -720,7 +720,7 @@ WVList
162 162
MItem MItem
28 28
../../../../../lib/cmn/sio.c ../../../../../lib/cmn/rex.c
163 163
WString WString
4 4
@ -738,7 +738,7 @@ WVList
166 166
MItem MItem
28 28
../../../../../lib/cmn/sll.c ../../../../../lib/cmn/sio.c
167 167
WString WString
4 4
@ -755,8 +755,8 @@ WVList
0 0
170 170
MItem MItem
29 28
../../../../../lib/cmn/slmb.c ../../../../../lib/cmn/sll.c
171 171
WString WString
4 4
@ -773,8 +773,8 @@ WVList
0 0
174 174
MItem MItem
30 29
../../../../../lib/cmn/stdio.c ../../../../../lib/cmn/slmb.c
175 175
WString WString
4 4
@ -791,8 +791,8 @@ WVList
0 0
178 178
MItem MItem
32 30
../../../../../lib/cmn/str-beg.c ../../../../../lib/cmn/stdio.c
179 179
WString WString
4 4
@ -810,7 +810,7 @@ WVList
182 182
MItem MItem
32 32
../../../../../lib/cmn/str-cat.c ../../../../../lib/cmn/str-beg.c
183 183
WString WString
4 4
@ -828,7 +828,7 @@ WVList
186 186
MItem MItem
32 32
../../../../../lib/cmn/str-chr.c ../../../../../lib/cmn/str-cat.c
187 187
WString WString
4 4
@ -846,7 +846,7 @@ WVList
190 190
MItem MItem
32 32
../../../../../lib/cmn/str-cmp.c ../../../../../lib/cmn/str-chr.c
191 191
WString WString
4 4
@ -864,7 +864,7 @@ WVList
194 194
MItem MItem
32 32
../../../../../lib/cmn/str-cnv.c ../../../../../lib/cmn/str-cmp.c
195 195
WString WString
4 4
@ -882,7 +882,7 @@ WVList
198 198
MItem MItem
32 32
../../../../../lib/cmn/str-cpy.c ../../../../../lib/cmn/str-cnv.c
199 199
WString WString
4 4
@ -900,7 +900,7 @@ WVList
202 202
MItem MItem
32 32
../../../../../lib/cmn/str-del.c ../../../../../lib/cmn/str-cpy.c
203 203
WString WString
4 4
@ -918,7 +918,7 @@ WVList
206 206
MItem MItem
32 32
../../../../../lib/cmn/str-dup.c ../../../../../lib/cmn/str-del.c
207 207
WString WString
4 4
@ -935,8 +935,8 @@ WVList
0 0
210 210
MItem MItem
33 32
../../../../../lib/cmn/str-dynm.c ../../../../../lib/cmn/str-dup.c
211 211
WString WString
4 4
@ -954,7 +954,7 @@ WVList
214 214
MItem MItem
33 33
../../../../../lib/cmn/str-dynw.c ../../../../../lib/cmn/str-dynm.c
215 215
WString WString
4 4
@ -971,8 +971,8 @@ WVList
0 0
218 218
MItem MItem
32 33
../../../../../lib/cmn/str-end.c ../../../../../lib/cmn/str-dynw.c
219 219
WString WString
4 4
@ -989,8 +989,8 @@ WVList
0 0
222 222
MItem MItem
33 32
../../../../../lib/cmn/str-excl.c ../../../../../lib/cmn/str-end.c
223 223
WString WString
4 4
@ -1008,7 +1008,7 @@ WVList
226 226
MItem MItem
33 33
../../../../../lib/cmn/str-fcpy.c ../../../../../lib/cmn/str-excl.c
227 227
WString WString
4 4
@ -1026,7 +1026,7 @@ WVList
230 230
MItem MItem
33 33
../../../../../lib/cmn/str-incl.c ../../../../../lib/cmn/str-fcpy.c
231 231
WString WString
4 4
@ -1043,8 +1043,8 @@ WVList
0 0
234 234
MItem MItem
32 34
../../../../../lib/cmn/str-len.c ../../../../../lib/cmn/str-fnmat.c
235 235
WString WString
4 4
@ -1061,8 +1061,8 @@ WVList
0 0
238 238
MItem MItem
32 33
../../../../../lib/cmn/str-pac.c ../../../../../lib/cmn/str-incl.c
239 239
WString WString
4 4
@ -1079,8 +1079,8 @@ WVList
0 0
242 242
MItem MItem
33 32
../../../../../lib/cmn/str-pbrk.c ../../../../../lib/cmn/str-len.c
243 243
WString WString
4 4
@ -1098,7 +1098,7 @@ WVList
246 246
MItem MItem
32 32
../../../../../lib/cmn/str-put.c ../../../../../lib/cmn/str-pac.c
247 247
WString WString
4 4
@ -1115,8 +1115,8 @@ WVList
0 0
250 250
MItem MItem
32 33
../../../../../lib/cmn/str-rev.c ../../../../../lib/cmn/str-pbrk.c
251 251
WString WString
4 4
@ -1134,7 +1134,7 @@ WVList
254 254
MItem MItem
32 32
../../../../../lib/cmn/str-rot.c ../../../../../lib/cmn/str-put.c
255 255
WString WString
4 4
@ -1152,7 +1152,7 @@ WVList
258 258
MItem MItem
32 32
../../../../../lib/cmn/str-set.c ../../../../../lib/cmn/str-rev.c
259 259
WString WString
4 4
@ -1170,7 +1170,7 @@ WVList
262 262
MItem MItem
32 32
../../../../../lib/cmn/str-spl.c ../../../../../lib/cmn/str-rot.c
263 263
WString WString
4 4
@ -1188,7 +1188,7 @@ WVList
266 266
MItem MItem
32 32
../../../../../lib/cmn/str-spn.c ../../../../../lib/cmn/str-set.c
267 267
WString WString
4 4
@ -1206,7 +1206,7 @@ WVList
270 270
MItem MItem
32 32
../../../../../lib/cmn/str-str.c ../../../../../lib/cmn/str-spl.c
271 271
WString WString
4 4
@ -1223,8 +1223,8 @@ WVList
0 0
274 274
MItem MItem
34 32
../../../../../lib/cmn/str-subst.c ../../../../../lib/cmn/str-spn.c
275 275
WString WString
4 4
@ -1242,7 +1242,7 @@ WVList
278 278
MItem MItem
32 32
../../../../../lib/cmn/str-tok.c ../../../../../lib/cmn/str-str.c
279 279
WString WString
4 4
@ -1259,8 +1259,8 @@ WVList
0 0
282 282
MItem MItem
32 34
../../../../../lib/cmn/str-trm.c ../../../../../lib/cmn/str-subst.c
283 283
WString WString
4 4
@ -1277,8 +1277,8 @@ WVList
0 0
286 286
MItem MItem
33 32
../../../../../lib/cmn/str-word.c ../../../../../lib/cmn/str-tok.c
287 287
WString WString
4 4
@ -1295,8 +1295,8 @@ WVList
0 0
290 290
MItem MItem
29 32
../../../../../lib/cmn/time.c ../../../../../lib/cmn/str-trm.c
291 291
WString WString
4 4
@ -1313,8 +1313,8 @@ WVList
0 0
294 294
MItem MItem
28 33
../../../../../lib/cmn/tio.c ../../../../../lib/cmn/str-word.c
295 295
WString WString
4 4
@ -1331,8 +1331,8 @@ WVList
0 0
298 298
MItem MItem
32 29
../../../../../lib/cmn/tre-ast.c ../../../../../lib/cmn/time.c
299 299
WString WString
4 4
@ -1349,8 +1349,8 @@ WVList
0 0
302 302
MItem MItem
36 28
../../../../../lib/cmn/tre-compile.c ../../../../../lib/cmn/tio.c
303 303
WString WString
4 4
@ -1367,8 +1367,8 @@ WVList
0 0
306 306
MItem MItem
44 32
../../../../../lib/cmn/tre-match-backtrack.c ../../../../../lib/cmn/tre-ast.c
307 307
WString WString
4 4
@ -1385,8 +1385,8 @@ WVList
0 0
310 310
MItem MItem
43 36
../../../../../lib/cmn/tre-match-parallel.c ../../../../../lib/cmn/tre-compile.c
311 311
WString WString
4 4
@ -1403,8 +1403,8 @@ WVList
0 0
314 314
MItem MItem
34 44
../../../../../lib/cmn/tre-parse.c ../../../../../lib/cmn/tre-match-backtrack.c
315 315
WString WString
4 4
@ -1421,8 +1421,8 @@ WVList
0 0
318 318
MItem MItem
34 43
../../../../../lib/cmn/tre-stack.c ../../../../../lib/cmn/tre-match-parallel.c
319 319
WString WString
4 4
@ -1439,8 +1439,8 @@ WVList
0 0
322 322
MItem MItem
28 34
../../../../../lib/cmn/tre.c ../../../../../lib/cmn/tre-parse.c
323 323
WString WString
4 4
@ -1457,8 +1457,8 @@ WVList
0 0
326 326
MItem MItem
29 34
../../../../../lib/cmn/utf8.c ../../../../../lib/cmn/tre-stack.c
327 327
WString WString
4 4
@ -1476,7 +1476,7 @@ WVList
330 330
MItem MItem
28 28
../../../../../lib/cmn/xma.c ../../../../../lib/cmn/tre.c
331 331
WString WString
4 4
@ -1493,44 +1493,44 @@ WVList
0 0
334 334
MItem MItem
3 29
*.h ../../../../../lib/cmn/utf8.c
335 335
WString WString
3 4
NIL COBJ
336 336
WVList WVList
0 0
337 337
WVList WVList
0 0
-1 11
1 1
1 1
0 0
338 338
MItem MItem
28 28
../../../../../lib/cmn/mem.h ../../../../../lib/cmn/xma.c
339 339
WString WString
3 4
NIL COBJ
340 340
WVList WVList
0 0
341 341
WVList WVList
0 0
334 11
1 1
1 1
0 0
342 342
MItem MItem
32 3
../../../../../lib/cmn/syscall.h *.h
343 343
WString WString
3 3
@ -1541,7 +1541,43 @@ WVList
345 345
WVList WVList
0 0
334 -1
1
1
0
346
MItem
28
../../../../../lib/cmn/mem.h
347
WString
3
NIL
348
WVList
0
349
WVList
0
342
1
1
0
350
MItem
32
../../../../../lib/cmn/syscall.h
351
WString
3
NIL
352
WVList
0
353
WVList
0
342
1 1
1 1
0 0

View File

@ -5,7 +5,7 @@ VpeMain
1 1
WRect WRect
440 440
173 160
9320 9320
9680 9680
2 2
@ -80,7 +80,7 @@ WRect
2520 2520
5700 5700
4240 4240
1 0
0 0
21 21
WFileName WFileName
@ -134,8 +134,8 @@ WRect
WFileName WFileName
28 28
debug/os2/lib/cmn/qsecmn.tgt debug/os2/lib/cmn/qsecmn.tgt
10 45
13 45
31 31
VComponent VComponent
32 32
@ -188,18 +188,18 @@ debug/os2/cmd/awk/qseawk.tgt
VComponent VComponent
41 41
WRect WRect
2700 2660
1893 66
5700 5700
4240 4240
1 0
0 0
42 42
WFileName WFileName
30 30
debug/dos32/lib/cmn/qsecmn.tgt debug/dos32/lib/cmn/qsecmn.tgt
18 18
23 25
43 43
VComponent VComponent
44 44
@ -272,12 +272,12 @@ WRect
0 0
5700 5700
4240 4240
1 0
0 0
57 57
WFileName WFileName
28 28
debug/os2/cmd/sed/qsesed.tgt debug/os2/cmd/sed/qsesed.tgt
0 0
0 1
28 55

View File

@ -42,7 +42,7 @@ WVList
0 0
10 10
WPickList WPickList
79 81
11 11
MItem MItem
3 3
@ -413,8 +413,8 @@ WVList
0 0
95 95
MItem MItem
28 29
../../../../../lib/cmn/htb.c ../../../../../lib/cmn/glob.c
96 96
WString WString
4 4
@ -431,8 +431,8 @@ WVList
0 0
99 99
MItem MItem
29 28
../../../../../lib/cmn/ipad.c ../../../../../lib/cmn/htb.c
100 100
WString WString
4 4
@ -449,8 +449,8 @@ WVList
0 0
103 103
MItem MItem
28 29
../../../../../lib/cmn/lda.c ../../../../../lib/cmn/ipad.c
104 104
WString WString
4 4
@ -467,8 +467,8 @@ WVList
0 0
107 107
MItem MItem
29 28
../../../../../lib/cmn/main.c ../../../../../lib/cmn/lda.c
108 108
WString WString
4 4
@ -485,8 +485,8 @@ WVList
0 0
111 111
MItem MItem
33 29
../../../../../lib/cmn/mbwc-str.c ../../../../../lib/cmn/main.c
112 112
WString WString
4 4
@ -503,8 +503,8 @@ WVList
0 0
115 115
MItem MItem
29 33
../../../../../lib/cmn/mbwc.c ../../../../../lib/cmn/mbwc-str.c
116 116
WString WString
4 4
@ -521,8 +521,8 @@ WVList
0 0
119 119
MItem MItem
28 29
../../../../../lib/cmn/mem.c ../../../../../lib/cmn/mbwc.c
120 120
WString WString
4 4
@ -539,8 +539,8 @@ WVList
0 0
123 123
MItem MItem
29 28
../../../../../lib/cmn/nwad.c ../../../../../lib/cmn/mem.c
124 124
WString WString
4 4
@ -558,7 +558,7 @@ WVList
127 127
MItem MItem
29 29
../../../../../lib/cmn/nwio.c ../../../../../lib/cmn/nwad.c
128 128
WString WString
4 4
@ -575,8 +575,8 @@ WVList
0 0
131 131
MItem MItem
28 29
../../../../../lib/cmn/oht.c ../../../../../lib/cmn/nwio.c
132 132
WString WString
4 4
@ -594,7 +594,7 @@ WVList
135 135
MItem MItem
28 28
../../../../../lib/cmn/opt.c ../../../../../lib/cmn/oht.c
136 136
WString WString
4 4
@ -611,8 +611,8 @@ WVList
0 0
139 139
MItem MItem
38 28
../../../../../lib/cmn/path-basename.c ../../../../../lib/cmn/opt.c
140 140
WString WString
4 4
@ -629,8 +629,8 @@ WVList
0 0
143 143
MItem MItem
35 38
../../../../../lib/cmn/path-canon.c ../../../../../lib/cmn/path-basename.c
144 144
WString WString
4 4
@ -647,8 +647,8 @@ WVList
0 0
147 147
MItem MItem
28 35
../../../../../lib/cmn/pio.c ../../../../../lib/cmn/path-canon.c
148 148
WString WString
4 4
@ -666,7 +666,7 @@ WVList
151 151
MItem MItem
28 28
../../../../../lib/cmn/pma.c ../../../../../lib/cmn/pio.c
152 152
WString WString
4 4
@ -684,7 +684,7 @@ WVList
155 155
MItem MItem
28 28
../../../../../lib/cmn/rbt.c ../../../../../lib/cmn/pma.c
156 156
WString WString
4 4
@ -702,7 +702,7 @@ WVList
159 159
MItem MItem
28 28
../../../../../lib/cmn/rex.c ../../../../../lib/cmn/rbt.c
160 160
WString WString
4 4
@ -720,7 +720,7 @@ WVList
163 163
MItem MItem
28 28
../../../../../lib/cmn/sio.c ../../../../../lib/cmn/rex.c
164 164
WString WString
4 4
@ -738,7 +738,7 @@ WVList
167 167
MItem MItem
28 28
../../../../../lib/cmn/sll.c ../../../../../lib/cmn/sio.c
168 168
WString WString
4 4
@ -755,8 +755,8 @@ WVList
0 0
171 171
MItem MItem
29 28
../../../../../lib/cmn/slmb.c ../../../../../lib/cmn/sll.c
172 172
WString WString
4 4
@ -773,8 +773,8 @@ WVList
0 0
175 175
MItem MItem
30 29
../../../../../lib/cmn/stdio.c ../../../../../lib/cmn/slmb.c
176 176
WString WString
4 4
@ -791,8 +791,8 @@ WVList
0 0
179 179
MItem MItem
32 30
../../../../../lib/cmn/str-beg.c ../../../../../lib/cmn/stdio.c
180 180
WString WString
4 4
@ -810,7 +810,7 @@ WVList
183 183
MItem MItem
32 32
../../../../../lib/cmn/str-cat.c ../../../../../lib/cmn/str-beg.c
184 184
WString WString
4 4
@ -828,7 +828,7 @@ WVList
187 187
MItem MItem
32 32
../../../../../lib/cmn/str-chr.c ../../../../../lib/cmn/str-cat.c
188 188
WString WString
4 4
@ -846,7 +846,7 @@ WVList
191 191
MItem MItem
32 32
../../../../../lib/cmn/str-cmp.c ../../../../../lib/cmn/str-chr.c
192 192
WString WString
4 4
@ -864,7 +864,7 @@ WVList
195 195
MItem MItem
32 32
../../../../../lib/cmn/str-cnv.c ../../../../../lib/cmn/str-cmp.c
196 196
WString WString
4 4
@ -882,7 +882,7 @@ WVList
199 199
MItem MItem
32 32
../../../../../lib/cmn/str-cpy.c ../../../../../lib/cmn/str-cnv.c
200 200
WString WString
4 4
@ -900,7 +900,7 @@ WVList
203 203
MItem MItem
32 32
../../../../../lib/cmn/str-del.c ../../../../../lib/cmn/str-cpy.c
204 204
WString WString
4 4
@ -918,7 +918,7 @@ WVList
207 207
MItem MItem
32 32
../../../../../lib/cmn/str-dup.c ../../../../../lib/cmn/str-del.c
208 208
WString WString
4 4
@ -935,8 +935,8 @@ WVList
0 0
211 211
MItem MItem
33 32
../../../../../lib/cmn/str-dynm.c ../../../../../lib/cmn/str-dup.c
212 212
WString WString
4 4
@ -954,7 +954,7 @@ WVList
215 215
MItem MItem
33 33
../../../../../lib/cmn/str-dynw.c ../../../../../lib/cmn/str-dynm.c
216 216
WString WString
4 4
@ -971,8 +971,8 @@ WVList
0 0
219 219
MItem MItem
32 33
../../../../../lib/cmn/str-end.c ../../../../../lib/cmn/str-dynw.c
220 220
WString WString
4 4
@ -989,8 +989,8 @@ WVList
0 0
223 223
MItem MItem
33 32
../../../../../lib/cmn/str-excl.c ../../../../../lib/cmn/str-end.c
224 224
WString WString
4 4
@ -1008,7 +1008,7 @@ WVList
227 227
MItem MItem
33 33
../../../../../lib/cmn/str-fcpy.c ../../../../../lib/cmn/str-excl.c
228 228
WString WString
4 4
@ -1026,7 +1026,7 @@ WVList
231 231
MItem MItem
33 33
../../../../../lib/cmn/str-incl.c ../../../../../lib/cmn/str-fcpy.c
232 232
WString WString
4 4
@ -1043,8 +1043,8 @@ WVList
0 0
235 235
MItem MItem
32 34
../../../../../lib/cmn/str-len.c ../../../../../lib/cmn/str-fnmat.c
236 236
WString WString
4 4
@ -1061,8 +1061,8 @@ WVList
0 0
239 239
MItem MItem
32 33
../../../../../lib/cmn/str-pac.c ../../../../../lib/cmn/str-incl.c
240 240
WString WString
4 4
@ -1079,8 +1079,8 @@ WVList
0 0
243 243
MItem MItem
33 32
../../../../../lib/cmn/str-pbrk.c ../../../../../lib/cmn/str-len.c
244 244
WString WString
4 4
@ -1098,7 +1098,7 @@ WVList
247 247
MItem MItem
32 32
../../../../../lib/cmn/str-put.c ../../../../../lib/cmn/str-pac.c
248 248
WString WString
4 4
@ -1115,8 +1115,8 @@ WVList
0 0
251 251
MItem MItem
32 33
../../../../../lib/cmn/str-rev.c ../../../../../lib/cmn/str-pbrk.c
252 252
WString WString
4 4
@ -1134,7 +1134,7 @@ WVList
255 255
MItem MItem
32 32
../../../../../lib/cmn/str-rot.c ../../../../../lib/cmn/str-put.c
256 256
WString WString
4 4
@ -1152,7 +1152,7 @@ WVList
259 259
MItem MItem
32 32
../../../../../lib/cmn/str-set.c ../../../../../lib/cmn/str-rev.c
260 260
WString WString
4 4
@ -1170,7 +1170,7 @@ WVList
263 263
MItem MItem
32 32
../../../../../lib/cmn/str-spl.c ../../../../../lib/cmn/str-rot.c
264 264
WString WString
4 4
@ -1188,7 +1188,7 @@ WVList
267 267
MItem MItem
32 32
../../../../../lib/cmn/str-spn.c ../../../../../lib/cmn/str-set.c
268 268
WString WString
4 4
@ -1206,7 +1206,7 @@ WVList
271 271
MItem MItem
32 32
../../../../../lib/cmn/str-str.c ../../../../../lib/cmn/str-spl.c
272 272
WString WString
4 4
@ -1223,8 +1223,8 @@ WVList
0 0
275 275
MItem MItem
34 32
../../../../../lib/cmn/str-subst.c ../../../../../lib/cmn/str-spn.c
276 276
WString WString
4 4
@ -1242,7 +1242,7 @@ WVList
279 279
MItem MItem
32 32
../../../../../lib/cmn/str-tok.c ../../../../../lib/cmn/str-str.c
280 280
WString WString
4 4
@ -1259,8 +1259,8 @@ WVList
0 0
283 283
MItem MItem
32 34
../../../../../lib/cmn/str-trm.c ../../../../../lib/cmn/str-subst.c
284 284
WString WString
4 4
@ -1277,8 +1277,8 @@ WVList
0 0
287 287
MItem MItem
33 32
../../../../../lib/cmn/str-word.c ../../../../../lib/cmn/str-tok.c
288 288
WString WString
4 4
@ -1295,8 +1295,8 @@ WVList
0 0
291 291
MItem MItem
29 32
../../../../../lib/cmn/time.c ../../../../../lib/cmn/str-trm.c
292 292
WString WString
4 4
@ -1313,8 +1313,8 @@ WVList
0 0
295 295
MItem MItem
28 33
../../../../../lib/cmn/tio.c ../../../../../lib/cmn/str-word.c
296 296
WString WString
4 4
@ -1331,8 +1331,8 @@ WVList
0 0
299 299
MItem MItem
32 29
../../../../../lib/cmn/tre-ast.c ../../../../../lib/cmn/time.c
300 300
WString WString
4 4
@ -1349,8 +1349,8 @@ WVList
0 0
303 303
MItem MItem
36 28
../../../../../lib/cmn/tre-compile.c ../../../../../lib/cmn/tio.c
304 304
WString WString
4 4
@ -1367,8 +1367,8 @@ WVList
0 0
307 307
MItem MItem
44 32
../../../../../lib/cmn/tre-match-backtrack.c ../../../../../lib/cmn/tre-ast.c
308 308
WString WString
4 4
@ -1385,8 +1385,8 @@ WVList
0 0
311 311
MItem MItem
43 36
../../../../../lib/cmn/tre-match-parallel.c ../../../../../lib/cmn/tre-compile.c
312 312
WString WString
4 4
@ -1403,8 +1403,8 @@ WVList
0 0
315 315
MItem MItem
34 44
../../../../../lib/cmn/tre-parse.c ../../../../../lib/cmn/tre-match-backtrack.c
316 316
WString WString
4 4
@ -1421,8 +1421,8 @@ WVList
0 0
319 319
MItem MItem
34 43
../../../../../lib/cmn/tre-stack.c ../../../../../lib/cmn/tre-match-parallel.c
320 320
WString WString
4 4
@ -1439,8 +1439,8 @@ WVList
0 0
323 323
MItem MItem
28 34
../../../../../lib/cmn/tre.c ../../../../../lib/cmn/tre-parse.c
324 324
WString WString
4 4
@ -1457,8 +1457,8 @@ WVList
0 0
327 327
MItem MItem
29 34
../../../../../lib/cmn/utf8.c ../../../../../lib/cmn/tre-stack.c
328 328
WString WString
4 4
@ -1476,7 +1476,7 @@ WVList
331 331
MItem MItem
28 28
../../../../../lib/cmn/xma.c ../../../../../lib/cmn/tre.c
332 332
WString WString
4 4
@ -1493,44 +1493,44 @@ WVList
0 0
335 335
MItem MItem
3 29
*.h ../../../../../lib/cmn/utf8.c
336 336
WString WString
3 4
NIL COBJ
337 337
WVList WVList
0 0
338 338
WVList WVList
0 0
-1 11
1 1
1 1
0 0
339 339
MItem MItem
28 28
../../../../../lib/cmn/mem.h ../../../../../lib/cmn/xma.c
340 340
WString WString
3 4
NIL COBJ
341 341
WVList WVList
0 0
342 342
WVList WVList
0 0
335 11
1 1
1 1
0 0
343 343
MItem MItem
32 3
../../../../../lib/cmn/syscall.h *.h
344 344
WString WString
3 3
@ -1541,7 +1541,43 @@ WVList
346 346
WVList WVList
0 0
335 -1
1
1
0
347
MItem
28
../../../../../lib/cmn/mem.h
348
WString
3
NIL
349
WVList
0
350
WVList
0
343
1
1
0
351
MItem
32
../../../../../lib/cmn/syscall.h
352
WString
3
NIL
353
WVList
0
354
WVList
0
343
1 1
1 1
0 0