diff --git a/qse/cmd/scm/scm.c b/qse/cmd/scm/scm.c
index 2b0a3272..5eab1aaf 100644
--- a/qse/cmd/scm/scm.c
+++ b/qse/cmd/scm/scm.c
@@ -229,13 +229,23 @@ int scm_main (int argc, qse_char_t* argv[])
{
int i;
for (i = 0; i<2; i++)
+#if defined(_WIN32)
+pio1 (QSE_T("c:\\winnt\\system32\\netstat.exe -an"), QSE_PIO_READOUT|QSE_PIO_WRITEIN|/*QSE_PIO_SHELL|*/QSE_PIO_DROPERR, QSE_PIO_OUT);
+#elif defined(__OS2__)
pio1 (QSE_T("pstat.exe /c"), QSE_PIO_READOUT|QSE_PIO_WRITEIN|/*QSE_PIO_SHELL|*/QSE_PIO_DROPERR, QSE_PIO_OUT);
+#else
+pio1 (QSE_T("ls -laF"), QSE_PIO_READOUT|QSE_PIO_WRITEIN|/*QSE_PIO_SHELL|*/QSE_PIO_DROPERR, QSE_PIO_OUT);
+#endif
}
+
{
qse_printf (QSE_T("%d\n"), (int)qse_strspn (QSE_T("abcdefg"), QSE_T("cdab")));
qse_printf (QSE_T("%d\n"), (int)qse_strcspn (QSE_T("abcdefg"), QSE_T("fg")));
qse_printf (QSE_T("%s\n"), qse_strpbrk (QSE_T("abcdefg"), QSE_T("fb")));
+
+ qse_printf (QSE_T("%s\n"), qse_strrcasestr (QSE_T("fbFBFBFBxyz"), QSE_T("fb")));
+ qse_printf (QSE_T("%s\n"), qse_strcasestr (QSE_T("fbFBFBFBxyz"), QSE_T("fb")));
}
{
@@ -249,6 +259,17 @@ pio1 (QSE_T("pstat.exe /c"), QSE_PIO_READOUT|QSE_PIO_WRITEIN|/*QSE_PIO_SHELL|*/Q
qse_printf (QSE_T("%d %s\n"), (int)len, str);
}
+{
+ qse_printf (QSE_T("sizeof(int) = %d\n"), (int)sizeof(int));
+ qse_printf (QSE_T("sizeof(long) = %d\n"), (int)sizeof(long));
+ qse_printf (QSE_T("sizeof(long long) = %d\n"), (int)sizeof(long long));
+ qse_printf (QSE_T("sizeof(float) = %d\n"), (int)sizeof(float));
+ qse_printf (QSE_T("sizeof(double) = %d\n"), (int)sizeof(double));
+ qse_printf (QSE_T("sizeof(long double) = %d\n"), (int)sizeof(long double));
+ qse_printf (QSE_T("sizeof(void*) = %d\n"), (int)sizeof(void*));
+ qse_printf (QSE_T("sizeof(wchar_t) = %d\n"), (int)sizeof(wchar_t));
+}
+
{
qse_scm_ent_t* x1, * x2;
diff --git a/qse/include/qse/cmn/str.h b/qse/include/qse/cmn/str.h
index 7a10f549..6ebce4cf 100644
--- a/qse/include/qse/cmn/str.h
+++ b/qse/include/qse/cmn/str.h
@@ -1,5 +1,5 @@
/*
- * $Id: str.h 420 2011-03-29 11:20:29Z hyunghwan.chung $
+ * $Id: str.h 421 2011-03-29 15:37:19Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@@ -776,10 +776,10 @@ qse_wchar_t* qse_wcsxdup2 (
* The qse_mbsstr() function searchs a string @a str for the first occurrence
* of a substring @a sub.
* @return pointer to the first occurrence in @a str if @a sub is found,
- * QSE_NULL if not.
+ * #QSE_NULL if not.
*/
qse_mchar_t* qse_mbsstr (
- const qse_mchar_t* str,
+ const qse_mchar_t* str,
const qse_mchar_t* sub
);
@@ -787,74 +787,187 @@ qse_mchar_t* qse_mbsstr (
* The qse_wcsstr() function searchs a string @a str for the first occurrence
* of a substring @a sub.
* @return pointer to the first occurrence in @a str if @a sub is found,
- * QSE_NULL if not.
+ * #QSE_NULL if not.
*/
qse_wchar_t* qse_wcsstr (
- const qse_wchar_t* str,
+ const qse_wchar_t* str,
const qse_wchar_t* sub
);
-#ifdef QSE_CHAR_IS_MCHAR
-# define qse_strstr(str,sub) qse_mbsstr(str,sub)
-#else
-# define qse_strstr(str,sub) qse_wcsstr(str,sub)
-#endif
-
-qse_char_t* qse_strxstr (
- const qse_char_t* str,
- qse_size_t size,
- const qse_char_t* sub
+qse_mchar_t* qse_mbsxstr (
+ const qse_mchar_t* str,
+ qse_size_t size,
+ const qse_mchar_t* sub
);
-qse_char_t* qse_strxnstr (
- const qse_char_t* str,
- qse_size_t strsz,
- const qse_char_t* sub,
- qse_size_t subsz
+qse_wchar_t* qse_wcsxstr (
+ const qse_wchar_t* str,
+ qse_size_t size,
+ const qse_wchar_t* sub
);
-qse_char_t* qse_strcasestr (
- const qse_char_t* str,
- const qse_char_t* sub
+qse_mchar_t* qse_mbsxnstr (
+ const qse_mchar_t* str,
+ qse_size_t strsz,
+ const qse_mchar_t* sub,
+ qse_size_t subsz
);
-qse_char_t* qse_strxcasestr (
- const qse_char_t* str,
- qse_size_t size,
- const qse_char_t* sub
+qse_wchar_t* qse_wcsxnstr (
+ const qse_wchar_t* str,
+ qse_size_t strsz,
+ const qse_wchar_t* sub,
+ qse_size_t subsz
);
-qse_char_t* qse_strxncasestr (
- const qse_char_t* str,
- qse_size_t strsz,
- const qse_char_t* sub,
- qse_size_t subsz
+qse_mchar_t* qse_mbscasestr (
+ const qse_mchar_t* str,
+ const qse_mchar_t* sub
+);
+
+qse_wchar_t* qse_wcscasestr (
+ const qse_wchar_t* str,
+ const qse_wchar_t* sub
+);
+
+qse_mchar_t* qse_mbsxcasestr (
+ const qse_mchar_t* str,
+ qse_size_t size,
+ const qse_mchar_t* sub
+);
+
+qse_wchar_t* qse_wcsxcasestr (
+ const qse_wchar_t* str,
+ qse_size_t size,
+ const qse_wchar_t* sub
+);
+
+qse_mchar_t* qse_mbsxncasestr (
+ const qse_mchar_t* str,
+ qse_size_t strsz,
+ const qse_mchar_t* sub,
+ qse_size_t subsz
+);
+
+qse_wchar_t* qse_wcsxncasestr (
+ const qse_wchar_t* str,
+ qse_size_t strsz,
+ const qse_wchar_t* sub,
+ qse_size_t subsz
);
/**
- * The qse_strrstr() function searchs a string @a str for the last occurrence
+ * The qse_mbsrstr() function searchs a string @a str for the last occurrence
* of a substring @a sub.
* @return pointer to the last occurrence in @a str if @a sub is found,
- * QSE_NULL if not.
+ * #QSE_NULL if not.
*/
-qse_char_t* qse_strrstr (
- const qse_char_t* str,
- const qse_char_t* sub
+qse_mchar_t* qse_mbsrstr (
+ const qse_mchar_t* str,
+ const qse_mchar_t* sub
);
-qse_char_t* qse_strxrstr (
- const qse_char_t* str,
- qse_size_t size,
- const qse_char_t* sub
+/**
+ * The qse_wcsrstr() function searchs a string @a str for the last occurrence
+ * of a substring @a sub.
+ * @return pointer to the last occurrence in @a str if @a sub is found,
+ * #QSE_NULL if not.
+ */
+qse_wchar_t* qse_wcsrstr (
+ const qse_wchar_t* str,
+ const qse_wchar_t* sub
);
-qse_char_t* qse_strxnrstr (
- const qse_char_t* str,
- qse_size_t strsz,
- const qse_char_t* sub,
- qse_size_t subsz
+qse_mchar_t* qse_mbsxrstr (
+ const qse_mchar_t* str,
+ qse_size_t size,
+ const qse_mchar_t* sub
);
+qse_wchar_t* qse_wcsxrstr (
+ const qse_wchar_t* str,
+ qse_size_t size,
+ const qse_wchar_t* sub
+);
+
+qse_mchar_t* qse_mbsxnrstr (
+ const qse_mchar_t* str,
+ qse_size_t strsz,
+ const qse_mchar_t* sub,
+ qse_size_t subsz
+);
+
+qse_wchar_t* qse_wcsxnrstr (
+ const qse_wchar_t* str,
+ qse_size_t strsz,
+ const qse_wchar_t* sub,
+ qse_size_t subsz
+);
+
+qse_mchar_t* qse_mbsrcasestr (
+ const qse_mchar_t* str,
+ const qse_mchar_t* sub
+);
+
+qse_wchar_t* qse_wcsrcasestr (
+ const qse_wchar_t* str,
+ const qse_wchar_t* sub
+);
+
+qse_mchar_t* qse_mbsxrcasestr (
+ const qse_mchar_t* str,
+ qse_size_t size,
+ const qse_mchar_t* sub
+);
+
+qse_wchar_t* qse_wcsxrcasestr (
+ const qse_wchar_t* str,
+ qse_size_t size,
+ const qse_wchar_t* sub
+);
+
+qse_mchar_t* qse_mbsxnrcasestr (
+ const qse_mchar_t* str,
+ qse_size_t strsz,
+ const qse_mchar_t* sub,
+ qse_size_t subsz
+);
+
+qse_wchar_t* qse_wcsxnrcasestr (
+ const qse_wchar_t* str,
+ qse_size_t strsz,
+ const qse_wchar_t* sub,
+ qse_size_t subsz
+);
+
+#ifdef QSE_CHAR_IS_MCHAR
+# define qse_strstr(str,sub) qse_mbsstr(str,sub)
+# define qse_strxstr(str,size,sub) qse_mbsxstr(str,size,sub)
+# define qse_strxnstr(str,strsz,sub,subsz) qse_mbsxnstr(str,strsz,sub,subsz)
+# define qse_strcasestr(str,sub) qse_mbscasestr(str,sub)
+# define qse_strxcasestr(str,size,sub) qse_mbsxcasestr(str,size,sub)
+# define qse_strxncasestr(str,strsz,sub,subsz) qse_mbsxncasestr(str,strsz,sub,subsz)
+# define qse_strrstr(str,sub) qse_mbsrstr(str,sub)
+# define qse_strxrstr(str,size,sub) qse_mbsxrstr(str,size,sub)
+# define qse_strxnrstr(str,strsz,sub,subsz) qse_mbsxnrstr(str,strsz,sub,subsz)
+# define qse_strrcasestr(str,sub) qse_mbsrcasestr(str,sub)
+# define qse_strxrcasestr(str,size,sub) qse_mbsxrcasestr(str,size,sub)
+# define qse_strxnrcasestr(str,strsz,sub,subsz) qse_mbsxnrcasestr(str,strsz,sub,subsz)
+#else
+# define qse_strstr(str,sub) qse_wcsstr(str,sub)
+# define qse_strxstr(str,size,sub) qse_wcsxstr(str,size,sub)
+# define qse_strxnstr(str,strsz,sub,subsz) qse_wcsxnstr(str,strsz,sub,subsz)
+# define qse_strcasestr(str,sub) qse_wcscasestr(str,sub)
+# define qse_strxcasestr(str,size,sub) qse_wcsxcasestr(str,size,sub)
+# define qse_strxncasestr(str,strsz,sub,subsz) qse_wcsxncasestr(str,strsz,sub,subsz)
+# define qse_strrstr(str,sub) qse_wcsrstr(str,sub)
+# define qse_strxrstr(str,size,sub) qse_wcsxrstr(str,size,sub)
+# define qse_strxnrstr(str,strsz,sub,subsz) qse_wcsxnrstr(str,strsz,sub,subsz)
+# define qse_strrcasestr(str,sub) qse_wcsrcasestr(str,sub)
+# define qse_strxrcasestr(str,size,sub) qse_wcsxrcasestr(str,size,sub)
+# define qse_strxnrcasestr(str,strsz,sub,subsz) qse_wcsxnrcasestr(str,strsz,sub,subsz)
+#endif
+
/**
* The qse_strxword() function finds a whole word in a string.
*/
diff --git a/qse/include/qse/conf_msw.h b/qse/include/qse/conf_msw.h
index 8384f784..b933ef46 100644
--- a/qse/include/qse/conf_msw.h
+++ b/qse/include/qse/conf_msw.h
@@ -1,5 +1,5 @@
/*
- * $Id: conf_msw.h 397 2011-03-15 03:40:39Z hyunghwan.chung $
+ * $Id: conf_msw.h 421 2011-03-29 15:37:19Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@@ -33,44 +33,102 @@ _M_IX86 x86 platform
_M_X64 x64 platform
*/
+/* windows for most of non-x86 platforms dropped.
+ * make it selective to support old non-x86 windows platforms. */
#define QSE_ENDIAN_LITTLE
-#define QSE_SIZEOF_CHAR 1
-#define QSE_SIZEOF_SHORT 2
-#define QSE_SIZEOF_INT 4
+/*
+ * You must define which character type to use as a default character here.
+ *
+ * #define QSE_CHAR_IS_WCHAR
+ * #define QSE_CHAR_IS_MCHAR
+ */
-/*#ifdef _WIN64
- #define QSE_SIZEOF_LONG 8
-#else*/
- #define QSE_SIZEOF_LONG 4
-/*#endif*/
-
-#if defined(__POCC__) || defined(__DMC__) || defined(__GNUC__)
- /* pelles c with no microsoft extension */
- #define QSE_SIZEOF_LONG_LONG 8
-
- #define QSE_SIZEOF___INT8 0
- #define QSE_SIZEOF___INT16 0
- #define QSE_SIZEOF___INT32 0
- #define QSE_SIZEOF___INT64 0
- #define QSE_SIZEOF___INT128 0
+#if defined(__WATCOMC__)
+# define QSE_SIZEOF_CHAR 1
+# define QSE_SIZEOF_SHORT 2
+# define QSE_SIZEOF_INT 4
+# define QSE_SIZEOF_LONG 4
+# define QSE_SIZEOF_LONG_LONG 8
+#
+# if defined(_WIN64)
+# define QSE_SIZEOF_VOID_P 8
+# else
+# define QSE_SIZEOF_VOID_P 4
+# endif
+# define QSE_SIZEOF_FLOAT 4
+# define QSE_SIZEOF_DOUBLE 8
+# define QSE_SIZEOF_LONG_DOUBLE 8
+# define QSE_SIZEOF_WCHAR_T 2
+#
+# define QSE_SIZEOF___INT8 1
+# define QSE_SIZEOF___INT16 2
+# define QSE_SIZEOF___INT32 4
+# define QSE_SIZEOF___INT64 8
+# define QSE_SIZEOF___INT128 0
+#
+# define QSE_SIZEOF_OFF64_T 0
+# define QSE_SIZEOF_OFF_T 8
+#
+# define QSE_CHAR_IS_WCHAR
+#elif defined(__GNUC__) || defined(__DMC__) || defined(__POCC__)
+# define QSE_SIZEOF_CHAR 1
+# define QSE_SIZEOF_SHORT 2
+# define QSE_SIZEOF_INT 4
+# define QSE_SIZEOF_LONG 4
+# define QSE_SIZEOF_LONG_LONG 8
+#
+# if defined(_WIN64)
+# define QSE_SIZEOF_VOID_P 8
+# else
+# define QSE_SIZEOF_VOID_P 4
+# endif
+# define QSE_SIZEOF_FLOAT 4
+# define QSE_SIZEOF_DOUBLE 8
+# define QSE_SIZEOF_LONG_DOUBLE 16
+# define QSE_SIZEOF_WCHAR_T 2
+#
+# define QSE_SIZEOF___INT8 0
+# define QSE_SIZEOF___INT16 0
+# define QSE_SIZEOF___INT32 0
+# define QSE_SIZEOF___INT64 0
+# define QSE_SIZEOF___INT128 0
+#
+# define QSE_SIZEOF_OFF64_T 0
+# define QSE_SIZEOF_OFF_T 8
+#
+# define QSE_CHAR_IS_WCHAR
+#elif defined(_MSC_VER)
+# define QSE_SIZEOF_CHAR 1
+# define QSE_SIZEOF_SHORT 2
+# define QSE_SIZEOF_INT 4
+# define QSE_SIZEOF_LONG 4
+# if (_MSC_VER>=1310)
+# define QSE_SIZEOF_LONG_LONG 8
+# else
+# define QSE_SIZEOF_LONG_LONG 0
+# endif
+#
+# if defined(_WIN64)
+# define QSE_SIZEOF_VOID_P 8
+# else
+# define QSE_SIZEOF_VOID_P 4
+# endif
+# define QSE_SIZEOF_FLOAT 4
+# define QSE_SIZEOF_DOUBLE 8
+# define QSE_SIZEOF_LONG_DOUBLE 8
+# define QSE_SIZEOF_WCHAR_T 2
+#
+# define QSE_SIZEOF___INT8 1
+# define QSE_SIZEOF___INT16 2
+# define QSE_SIZEOF___INT32 4
+# define QSE_SIZEOF___INT64 8
+# define QSE_SIZEOF___INT128 0
+#
+# define QSE_SIZEOF_OFF64_T 0
+# define QSE_SIZEOF_OFF_T 8
+#
+# define QSE_CHAR_IS_WCHAR
#else
- #define QSE_SIZEOF_LONG_LONG 0
-
- #define QSE_SIZEOF___INT8 1
- #define QSE_SIZEOF___INT16 2
- #define QSE_SIZEOF___INT32 4
- #define QSE_SIZEOF___INT64 8
- #define QSE_SIZEOF___INT128 0
+# error Define the size of various data types.
#endif
-
-#ifdef _WIN64
- #define QSE_SIZEOF_VOID_P 8
-#else
- #define QSE_SIZEOF_VOID_P 4
-#endif
-
-#define QSE_SIZEOF_FLOAT 4
-#define QSE_SIZEOF_DOUBLE 8
-#define QSE_SIZEOF_LONG_DOUBLE 16
-#define QSE_SIZEOF_WCHAR_T 2
diff --git a/qse/lib/cmn/Makefile.am b/qse/lib/cmn/Makefile.am
index 1a503955..97259cde 100644
--- a/qse/lib/cmn/Makefile.am
+++ b/qse/lib/cmn/Makefile.am
@@ -10,8 +10,8 @@ libqsecmn_la_SOURCES = \
syscall.h mem.h \
mem.c xma.c fma.c chr.c chr_cnv.c rex.c \
str_bas.c str_cat.c str_chr.c str_cnv.c str_cmp.c str_cpy.c str_dup.c \
- str_dyn.c str_fcpy.c str_pbrk.c str_put.c str_spn.c str_subst.c \
- str_utl.c \
+ str_dyn.c str_fcpy.c str_pbrk.c str_put.c str_spn.c str_str.c \
+ str_subst.c str_utl.c \
lda.c oht.c htb.c rbt.c sll.c gdl.c dll.c opt.c \
tio.c tio_get.c tio_put.c \
fio.c pio.c sio.c \
diff --git a/qse/lib/cmn/Makefile.in b/qse/lib/cmn/Makefile.in
index fce98740..bce35aa8 100644
--- a/qse/lib/cmn/Makefile.in
+++ b/qse/lib/cmn/Makefile.in
@@ -75,8 +75,8 @@ libqsecmn_la_DEPENDENCIES =
am_libqsecmn_la_OBJECTS = mem.lo xma.lo fma.lo chr.lo chr_cnv.lo \
rex.lo str_bas.lo str_cat.lo str_chr.lo str_cnv.lo str_cmp.lo \
str_cpy.lo str_dup.lo str_dyn.lo str_fcpy.lo str_pbrk.lo str_put.lo \
- str_spn.lo str_subst.lo str_utl.lo lda.lo oht.lo htb.lo rbt.lo sll.lo \
- gdl.lo dll.lo opt.lo tio.lo tio_get.lo tio_put.lo fio.lo \
+ str_spn.lo str_str.lo str_subst.lo str_utl.lo lda.lo oht.lo htb.lo \
+ rbt.lo sll.lo gdl.lo dll.lo opt.lo tio.lo tio_get.lo tio_put.lo fio.lo \
pio.lo sio.lo alg_search.lo alg_sort.lo time.lo misc.lo \
assert.lo main.lo stdio.lo
libqsecmn_la_OBJECTS = $(am_libqsecmn_la_OBJECTS)
@@ -267,8 +267,8 @@ libqsecmn_la_SOURCES = \
syscall.h mem.h \
mem.c xma.c fma.c chr.c chr_cnv.c rex.c \
str_bas.c str_cat.c str_chr.c str_cnv.c str_cmp.c str_cpy.c str_dup.c \
- str_dyn.c str_fcpy.c str_pbrk.c str_put.c str_spn.c str_subst.c \
- str_utl.c \
+ str_dyn.c str_fcpy.c str_pbrk.c str_put.c str_spn.c str_str.c \
+ str_subst.c str_utl.c \
lda.c oht.c htb.c rbt.c sll.c gdl.c dll.c opt.c \
tio.c tio_get.c tio_put.c \
fio.c pio.c sio.c \
@@ -398,6 +398,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_pbrk.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_put.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_spn.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_str.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_subst.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_utl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Plo@am__quote@
diff --git a/qse/lib/cmn/str_bas.c b/qse/lib/cmn/str_bas.c
index 69177338..fa049dfc 100644
--- a/qse/lib/cmn/str_bas.c
+++ b/qse/lib/cmn/str_bas.c
@@ -1,5 +1,5 @@
/*
- * $Id: str_bas.c 420 2011-03-29 11:20:29Z hyunghwan.chung $
+ * $Id: str_bas.c 421 2011-03-29 15:37:19Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@@ -43,209 +43,6 @@ qse_size_t qse_strbytes (const qse_char_t* str)
return (p - str) * QSE_SIZEOF(qse_char_t);
}
-qse_mchar_t* qse_mbsstr (const qse_mchar_t* str, const qse_mchar_t* sub)
-{
- const qse_mchar_t* x, * y;
-
- y = sub;
- if (*y == QSE_MT('\0')) return (qse_mchar_t*)str;
-
- while (*str != QSE_MT('\0'))
- {
- if (*str != *y)
- {
- str++;
- continue;
- }
-
- x = str;
- do
- {
- if (*y == QSE_MT('\0')) return (qse_mchar_t*)str;
- if (*x++ != *y++) break;
- }
- while (1);
-
- y = sub;
- str++;
- }
-
- return QSE_NULL;
-}
-
-qse_wchar_t* qse_wcsstr (const qse_wchar_t* str, const qse_wchar_t* sub)
-{
- const qse_wchar_t* x, * y;
-
- y = sub;
- if (*y == QSE_WT('\0')) return (qse_wchar_t*)str;
-
- while (*str != QSE_WT('\0'))
- {
- if (*str != *y)
- {
- str++;
- continue;
- }
-
- x = str;
- do
- {
- if (*y == QSE_WT('\0')) return (qse_wchar_t*)str;
- if (*x++ != *y++) break;
- }
- while (1);
-
- y = sub;
- str++;
- }
-
- return QSE_NULL;
-}
-
-qse_char_t* qse_strxstr (
- const qse_char_t* str, qse_size_t size, const qse_char_t* sub)
-{
- return qse_strxnstr (str, size, sub, qse_strlen(sub));
-}
-
-qse_char_t* qse_strxnstr (
- const qse_char_t* str, qse_size_t strsz,
- const qse_char_t* sub, qse_size_t subsz)
-{
- const qse_char_t* end, * subp;
-
- if (subsz == 0) return (qse_char_t*)str;
- if (strsz < subsz) return QSE_NULL;
-
- end = str + strsz - subsz;
- subp = sub + subsz;
-
- while (str <= end)
- {
- const qse_char_t* x = str;
- const qse_char_t* y = sub;
-
- while (1)
- {
- if (y >= subp) return (qse_char_t*)str;
- if (*x != *y) break;
- x++; y++;
- }
-
- str++;
- }
-
- return QSE_NULL;
-}
-
-qse_char_t* qse_strcasestr (const qse_char_t* str, const qse_char_t* sub)
-{
- const qse_char_t* x, * y;
-
- y = sub;
- if (*y == QSE_T('\0')) return (qse_char_t*)str;
-
- while (*str != QSE_T('\0'))
- {
- if (QSE_TOUPPER(*str) != QSE_TOUPPER(*y))
- {
- str++;
- continue;
- }
-
- x = str;
- while (1)
- {
- if (*y == QSE_T('\0')) return (qse_char_t*)str;
- if (QSE_TOUPPER(*x) != QSE_TOUPPER(*y)) break;
- x++; y++;
- }
-
- y = sub;
- str++;
- }
-
- return QSE_NULL;
-}
-
-qse_char_t* qse_strxcasestr (
- const qse_char_t* str, qse_size_t size, const qse_char_t* sub)
-{
- return qse_strxncasestr (str, size, sub, qse_strlen(sub));
-}
-
-qse_char_t* qse_strxncasestr (
- const qse_char_t* str, qse_size_t strsz,
- const qse_char_t* sub, qse_size_t subsz)
-{
- const qse_char_t* end, * subp;
-
- if (subsz == 0) return (qse_char_t*)str;
- if (strsz < subsz) return QSE_NULL;
-
- end = str + strsz - subsz;
- subp = sub + subsz;
-
- while (str <= end)
- {
- const qse_char_t* x = str;
- const qse_char_t* y = sub;
-
- while (1)
- {
- if (y >= subp) return (qse_char_t*)str;
- if (QSE_TOUPPER(*x) != QSE_TOUPPER(*y)) break;
- x++; y++;
- }
-
- str++;
- }
-
- return QSE_NULL;
-}
-
-qse_char_t* qse_strrstr (const qse_char_t* str, const qse_char_t* sub)
-{
- return qse_strxnrstr (str, qse_strlen(str), sub, qse_strlen(sub));
-}
-
-qse_char_t* qse_strxrstr (
- const qse_char_t* str, qse_size_t size, const qse_char_t* sub)
-{
- return qse_strxnrstr (str, size, sub, qse_strlen(sub));
-}
-
-qse_char_t* qse_strxnrstr (
- const qse_char_t* str, qse_size_t strsz,
- const qse_char_t* sub, qse_size_t subsz)
-{
- const qse_char_t* p = str + strsz;
- const qse_char_t* subp = sub + subsz;
-
- if (subsz == 0) return (qse_char_t*)p;
- if (strsz < subsz) return QSE_NULL;
-
- p = p - subsz;
-
- while (p >= str)
- {
- const qse_char_t* x = p;
- const qse_char_t* y = sub;
-
- while (1)
- {
- if (y >= subp) return (qse_char_t*)p;
- if (*x != *y) break;
- x++; y++;
- }
-
- p--;
- }
-
- return QSE_NULL;
-}
-
const qse_char_t* qse_strxword (
const qse_char_t* str, qse_size_t len, const qse_char_t* word)
{
diff --git a/qse/lib/cmn/str_str.c b/qse/lib/cmn/str_str.c
new file mode 100644
index 00000000..4e0ae120
--- /dev/null
+++ b/qse/lib/cmn/str_str.c
@@ -0,0 +1,450 @@
+/*
+ * $Id$
+ *
+ Copyright 2006-2009 Chung, Hyung-Hwan.
+ This file is part of QSE.
+
+ QSE is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version.
+
+ QSE is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with QSE. If not, see .
+ */
+
+#include
+#include
+
+qse_mchar_t* qse_mbsstr (const qse_mchar_t* str, const qse_mchar_t* sub)
+{
+ const qse_mchar_t* x, * y;
+
+ y = sub;
+ if (*y == QSE_MT('\0')) return (qse_mchar_t*)str;
+
+ while (*str != QSE_MT('\0'))
+ {
+ if (*str != *y)
+ {
+ str++;
+ continue;
+ }
+
+ x = str;
+ do
+ {
+ if (*y == QSE_MT('\0')) return (qse_mchar_t*)str;
+ if (*x++ != *y++) break;
+ }
+ while (1);
+
+ y = sub;
+ str++;
+ }
+
+ return QSE_NULL;
+}
+
+qse_mchar_t* qse_mbsxstr (
+ const qse_mchar_t* str, qse_size_t size, const qse_mchar_t* sub)
+{
+ return qse_mbsxnstr (str, size, sub, qse_mbslen(sub));
+}
+
+qse_mchar_t* qse_mbsxnstr (
+ const qse_mchar_t* str, qse_size_t strsz,
+ const qse_mchar_t* sub, qse_size_t subsz)
+{
+ const qse_mchar_t* end, * subp;
+
+ if (subsz == 0) return (qse_mchar_t*)str;
+ if (strsz < subsz) return QSE_NULL;
+
+ end = str + strsz - subsz;
+ subp = sub + subsz;
+
+ while (str <= end)
+ {
+ const qse_mchar_t* x = str;
+ const qse_mchar_t* y = sub;
+
+ while (1)
+ {
+ if (y >= subp) return (qse_mchar_t*)str;
+ if (*x != *y) break;
+ x++; y++;
+ }
+
+ str++;
+ }
+
+ return QSE_NULL;
+}
+
+qse_mchar_t* qse_mbscasestr (const qse_mchar_t* str, const qse_mchar_t* sub)
+{
+ const qse_mchar_t* x, * y;
+
+ y = sub;
+ if (*y == QSE_MT('\0')) return (qse_mchar_t*)str;
+
+ while (*str != QSE_MT('\0'))
+ {
+ if (QSE_TOMUPPER(*str) != QSE_TOMUPPER(*y))
+ {
+ str++;
+ continue;
+ }
+
+ x = str;
+ while (1)
+ {
+ if (*y == QSE_MT('\0')) return (qse_mchar_t*)str;
+ if (QSE_TOMUPPER(*x) != QSE_TOMUPPER(*y)) break;
+ x++; y++;
+ }
+
+ y = sub;
+ str++;
+ }
+
+ return QSE_NULL;
+}
+
+qse_mchar_t* qse_mbsxcasestr (
+ const qse_mchar_t* str, qse_size_t size, const qse_mchar_t* sub)
+{
+ return qse_mbsxncasestr (str, size, sub, qse_mbslen(sub));
+}
+
+qse_mchar_t* qse_mbsxncasestr (
+ const qse_mchar_t* str, qse_size_t strsz,
+ const qse_mchar_t* sub, qse_size_t subsz)
+{
+ const qse_mchar_t* end, * subp;
+
+ if (subsz == 0) return (qse_mchar_t*)str;
+ if (strsz < subsz) return QSE_NULL;
+
+ end = str + strsz - subsz;
+ subp = sub + subsz;
+
+ while (str <= end)
+ {
+ const qse_mchar_t* x = str;
+ const qse_mchar_t* y = sub;
+
+ while (1)
+ {
+ if (y >= subp) return (qse_mchar_t*)str;
+ if (QSE_TOMUPPER(*x) != QSE_TOMUPPER(*y)) break;
+ x++; y++;
+ }
+
+ str++;
+ }
+
+ return QSE_NULL;
+}
+
+qse_mchar_t* qse_mbsrstr (const qse_mchar_t* str, const qse_mchar_t* sub)
+{
+ return qse_mbsxnrstr (str, qse_mbslen(str), sub, qse_mbslen(sub));
+}
+
+qse_mchar_t* qse_mbsxrstr (
+ const qse_mchar_t* str, qse_size_t size, const qse_mchar_t* sub)
+{
+ return qse_mbsxnrstr (str, size, sub, qse_mbslen(sub));
+}
+
+qse_mchar_t* qse_mbsxnrstr (
+ const qse_mchar_t* str, qse_size_t strsz,
+ const qse_mchar_t* sub, qse_size_t subsz)
+{
+ const qse_mchar_t* p = str + strsz;
+ const qse_mchar_t* subp = sub + subsz;
+
+ if (subsz == 0) return (qse_mchar_t*)p;
+ if (strsz < subsz) return QSE_NULL;
+
+ p = p - subsz;
+
+ while (p >= str)
+ {
+ const qse_mchar_t* x = p;
+ const qse_mchar_t* y = sub;
+
+ while (1)
+ {
+ if (y >= subp) return (qse_mchar_t*)p;
+ if (*x != *y) break;
+ x++; y++;
+ }
+
+ p--;
+ }
+
+ return QSE_NULL;
+}
+
+qse_mchar_t* qse_mbsrcasestr (const qse_mchar_t* str, const qse_mchar_t* sub)
+{
+ return qse_mbsxnrcasestr (str, qse_mbslen(str), sub, qse_mbslen(sub));
+}
+
+qse_mchar_t* qse_mbsxrcasestr (
+ const qse_mchar_t* str, qse_size_t size, const qse_mchar_t* sub)
+{
+ return qse_mbsxnrcasestr (str, size, sub, qse_mbslen(sub));
+}
+
+qse_mchar_t* qse_mbsxnrcasestr (
+ const qse_mchar_t* str, qse_size_t strsz,
+ const qse_mchar_t* sub, qse_size_t subsz)
+{
+ const qse_mchar_t* p = str + strsz;
+ const qse_mchar_t* subp = sub + subsz;
+
+ if (subsz == 0) return (qse_mchar_t*)p;
+ if (strsz < subsz) return QSE_NULL;
+
+ p = p - subsz;
+
+ while (p >= str)
+ {
+ const qse_mchar_t* x = p;
+ const qse_mchar_t* y = sub;
+
+ while (1)
+ {
+ if (y >= subp) return (qse_mchar_t*)p;
+ if (QSE_TOMUPPER(*x) != QSE_TOMUPPER(*y)) break;
+ x++; y++;
+ }
+
+ p--;
+ }
+
+ return QSE_NULL;
+}
+
+qse_wchar_t* qse_wcsstr (const qse_wchar_t* str, const qse_wchar_t* sub)
+{
+ const qse_wchar_t* x, * y;
+
+ y = sub;
+ if (*y == QSE_WT('\0')) return (qse_wchar_t*)str;
+
+ while (*str != QSE_WT('\0'))
+ {
+ if (*str != *y)
+ {
+ str++;
+ continue;
+ }
+
+ x = str;
+ do
+ {
+ if (*y == QSE_WT('\0')) return (qse_wchar_t*)str;
+ if (*x++ != *y++) break;
+ }
+ while (1);
+
+ y = sub;
+ str++;
+ }
+
+ return QSE_NULL;
+}
+
+qse_wchar_t* qse_wcsxstr (
+ const qse_wchar_t* str, qse_size_t size, const qse_wchar_t* sub)
+{
+ return qse_wcsxnstr (str, size, sub, qse_wcslen(sub));
+}
+
+qse_wchar_t* qse_wcsxnstr (
+ const qse_wchar_t* str, qse_size_t strsz,
+ const qse_wchar_t* sub, qse_size_t subsz)
+{
+ const qse_wchar_t* end, * subp;
+
+ if (subsz == 0) return (qse_wchar_t*)str;
+ if (strsz < subsz) return QSE_NULL;
+
+ end = str + strsz - subsz;
+ subp = sub + subsz;
+
+ while (str <= end)
+ {
+ const qse_wchar_t* x = str;
+ const qse_wchar_t* y = sub;
+
+ while (1)
+ {
+ if (y >= subp) return (qse_wchar_t*)str;
+ if (*x != *y) break;
+ x++; y++;
+ }
+
+ str++;
+ }
+
+ return QSE_NULL;
+}
+
+qse_wchar_t* qse_wcscasestr (const qse_wchar_t* str, const qse_wchar_t* sub)
+{
+ const qse_wchar_t* x, * y;
+
+ y = sub;
+ if (*y == QSE_WT('\0')) return (qse_wchar_t*)str;
+
+ while (*str != QSE_WT('\0'))
+ {
+ if (QSE_TOWUPPER(*str) != QSE_TOWUPPER(*y))
+ {
+ str++;
+ continue;
+ }
+
+ x = str;
+ while (1)
+ {
+ if (*y == QSE_WT('\0')) return (qse_wchar_t*)str;
+ if (QSE_TOWUPPER(*x) != QSE_TOWUPPER(*y)) break;
+ x++; y++;
+ }
+
+ y = sub;
+ str++;
+ }
+
+ return QSE_NULL;
+}
+
+qse_wchar_t* qse_wcsxcasestr (
+ const qse_wchar_t* str, qse_size_t size, const qse_wchar_t* sub)
+{
+ return qse_wcsxncasestr (str, size, sub, qse_wcslen(sub));
+}
+
+qse_wchar_t* qse_wcsxncasestr (
+ const qse_wchar_t* str, qse_size_t strsz,
+ const qse_wchar_t* sub, qse_size_t subsz)
+{
+ const qse_wchar_t* end, * subp;
+
+ if (subsz == 0) return (qse_wchar_t*)str;
+ if (strsz < subsz) return QSE_NULL;
+
+ end = str + strsz - subsz;
+ subp = sub + subsz;
+
+ while (str <= end)
+ {
+ const qse_wchar_t* x = str;
+ const qse_wchar_t* y = sub;
+
+ while (1)
+ {
+ if (y >= subp) return (qse_wchar_t*)str;
+ if (QSE_TOWUPPER(*x) != QSE_TOWUPPER(*y)) break;
+ x++; y++;
+ }
+
+ str++;
+ }
+
+ return QSE_NULL;
+}
+
+qse_wchar_t* qse_wcsrstr (const qse_wchar_t* str, const qse_wchar_t* sub)
+{
+ return qse_wcsxnrstr (str, qse_wcslen(str), sub, qse_wcslen(sub));
+}
+
+qse_wchar_t* qse_wcsxrstr (
+ const qse_wchar_t* str, qse_size_t size, const qse_wchar_t* sub)
+{
+ return qse_wcsxnrstr (str, size, sub, qse_wcslen(sub));
+}
+
+qse_wchar_t* qse_wcsxnrstr (
+ const qse_wchar_t* str, qse_size_t strsz,
+ const qse_wchar_t* sub, qse_size_t subsz)
+{
+ const qse_wchar_t* p = str + strsz;
+ const qse_wchar_t* subp = sub + subsz;
+
+ if (subsz == 0) return (qse_wchar_t*)p;
+ if (strsz < subsz) return QSE_NULL;
+
+ p = p - subsz;
+
+ while (p >= str)
+ {
+ const qse_wchar_t* x = p;
+ const qse_wchar_t* y = sub;
+
+ while (1)
+ {
+ if (y >= subp) return (qse_wchar_t*)p;
+ if (*x != *y) break;
+ x++; y++;
+ }
+
+ p--;
+ }
+
+ return QSE_NULL;
+}
+
+qse_wchar_t* qse_wcsrcasestr (const qse_wchar_t* str, const qse_wchar_t* sub)
+{
+ return qse_wcsxnrcasestr (str, qse_wcslen(str), sub, qse_wcslen(sub));
+}
+
+qse_wchar_t* qse_wcsxrcasestr (
+ const qse_wchar_t* str, qse_size_t size, const qse_wchar_t* sub)
+{
+ return qse_wcsxnrcasestr (str, size, sub, qse_wcslen(sub));
+}
+
+qse_wchar_t* qse_wcsxnrcasestr (
+ const qse_wchar_t* str, qse_size_t strsz,
+ const qse_wchar_t* sub, qse_size_t subsz)
+{
+ const qse_wchar_t* p = str + strsz;
+ const qse_wchar_t* subp = sub + subsz;
+
+ if (subsz == 0) return (qse_wchar_t*)p;
+ if (strsz < subsz) return QSE_NULL;
+
+ p = p - subsz;
+
+ while (p >= str)
+ {
+ const qse_wchar_t* x = p;
+ const qse_wchar_t* y = sub;
+
+ while (1)
+ {
+ if (y >= subp) return (qse_wchar_t*)p;
+ if (QSE_TOWUPPER(*x) != QSE_TOWUPPER(*y)) break;
+ x++; y++;
+ }
+
+ p--;
+ }
+
+ return QSE_NULL;
+}
diff --git a/qse/lib/scm/eval.c b/qse/lib/scm/eval.c
index 2570451c..12fc843d 100644
--- a/qse/lib/scm/eval.c
+++ b/qse/lib/scm/eval.c
@@ -154,7 +154,6 @@ static int eval_entity (qse_scm_t* scm)
car = PAIR_CAR(scm->e.cod);
if (SYNT(car))
{
-qse_printf (QSE_T("xxxxx\n"));
/* the first item in the list is a syntax symbol */
cdr = PAIR_CDR(scm->e.cod);
if (IS_SMALLINT(scm,cdr) || TYPE(cdr) != QSE_SCM_ENT_PAIR)
diff --git a/qse/watcom/debug/os2/lib/cmn/qsecmn.tgt b/qse/watcom/debug/os2/lib/cmn/qsecmn.tgt
index b6fbe7e9..2abd2110 100755
--- a/qse/watcom/debug/os2/lib/cmn/qsecmn.tgt
+++ b/qse/watcom/debug/os2/lib/cmn/qsecmn.tgt
@@ -42,7 +42,7 @@ WVList
0
10
WPickList
-45
+46
11
MItem
3
@@ -691,8 +691,8 @@ WVList
0
155
MItem
-34
-..\..\..\..\..\lib\cmn\str_subst.c
+32
+..\..\..\..\..\lib\cmn\str_str.c
156
WString
4
@@ -709,8 +709,8 @@ WVList
0
159
MItem
-32
-..\..\..\..\..\lib\cmn\str_utl.c
+34
+..\..\..\..\..\lib\cmn\str_subst.c
160
WString
4
@@ -727,8 +727,8 @@ WVList
0
163
MItem
-29
-..\..\..\..\..\lib\cmn\time.c
+32
+..\..\..\..\..\lib\cmn\str_utl.c
164
WString
4
@@ -745,8 +745,8 @@ WVList
0
167
MItem
-28
-..\..\..\..\..\lib\cmn\tio.c
+29
+..\..\..\..\..\lib\cmn\time.c
168
WString
4
@@ -763,8 +763,8 @@ WVList
0
171
MItem
-32
-..\..\..\..\..\lib\cmn\tio_get.c
+28
+..\..\..\..\..\lib\cmn\tio.c
172
WString
4
@@ -782,7 +782,7 @@ WVList
175
MItem
32
-..\..\..\..\..\lib\cmn\tio_put.c
+..\..\..\..\..\lib\cmn\tio_get.c
176
WString
4
@@ -799,8 +799,8 @@ WVList
0
179
MItem
-28
-..\..\..\..\..\lib\cmn\xma.c
+32
+..\..\..\..\..\lib\cmn\tio_put.c
180
WString
4
@@ -817,26 +817,26 @@ WVList
0
183
MItem
-3
-*.h
+28
+..\..\..\..\..\lib\cmn\xma.c
184
WString
-3
-NIL
+4
+COBJ
185
WVList
0
186
WVList
0
--1
+11
1
1
0
187
MItem
-28
-..\..\..\..\..\lib\cmn\mem.h
+3
+*.h
188
WString
3
@@ -847,14 +847,14 @@ WVList
190
WVList
0
-183
+-1
1
1
0
191
MItem
-32
-..\..\..\..\..\lib\cmn\syscall.h
+28
+..\..\..\..\..\lib\cmn\mem.h
192
WString
3
@@ -865,7 +865,25 @@ WVList
194
WVList
0
-183
+187
+1
+1
+0
+195
+MItem
+32
+..\..\..\..\..\lib\cmn\syscall.h
+196
+WString
+3
+NIL
+197
+WVList
+0
+198
+WVList
+0
+187
1
1
0
diff --git a/qse/watcom/debug/win32/cmd/scm/qsescm.tgt b/qse/watcom/debug/win32/cmd/scm/qsescm.tgt
new file mode 100755
index 00000000..34404bf9
--- /dev/null
+++ b/qse/watcom/debug/win32/cmd/scm/qsescm.tgt
@@ -0,0 +1,129 @@
+40
+targetIdent
+0
+MProject
+1
+MComponent
+0
+2
+WString
+4
+NEXE
+3
+WString
+5
+nc2eo
+1
+0
+1
+4
+MCommand
+0
+5
+MCommand
+0
+6
+MItem
+10
+qsescm.exe
+7
+WString
+4
+NEXE
+8
+WVList
+2
+9
+MVState
+10
+WString
+7
+WINLINK
+11
+WString
+28
+?????Library directories(;):
+1
+12
+WString
+27
+../../lib/cmn ../../lib/scm
+0
+13
+MVState
+14
+WString
+7
+WINLINK
+15
+WString
+18
+?????Libraries(,):
+1
+16
+WString
+19
+qsecmn qsescm psapi
+0
+17
+WVList
+0
+-1
+1
+1
+0
+18
+WPickList
+2
+19
+MItem
+3
+*.c
+20
+WString
+4
+COBJ
+21
+WVList
+1
+22
+MVState
+23
+WString
+3
+WCC
+24
+WString
+25
+n????Include directories:
+1
+25
+WString
+53
+"$(%watcom)/h;$(%watcom)/h/nt;..\..\..\..\..\include"
+0
+26
+WVList
+0
+-1
+1
+1
+0
+27
+MItem
+28
+..\..\..\..\..\cmd\scm\scm.c
+28
+WString
+4
+COBJ
+29
+WVList
+0
+30
+WVList
+0
+19
+1
+1
+0
diff --git a/qse/watcom/debug/win32/lib/cmn/qsecmn.tgt b/qse/watcom/debug/win32/lib/cmn/qsecmn.tgt
new file mode 100755
index 00000000..e4be1214
--- /dev/null
+++ b/qse/watcom/debug/win32/lib/cmn/qsecmn.tgt
@@ -0,0 +1,889 @@
+40
+targetIdent
+0
+MProject
+1
+MComponent
+0
+2
+WString
+3
+LIB
+3
+WString
+5
+n_2so
+1
+0
+1
+4
+MCommand
+0
+5
+MCommand
+0
+6
+MItem
+10
+qsecmn.lib
+7
+WString
+3
+LIB
+8
+WVList
+0
+9
+WVList
+0
+-1
+1
+1
+0
+10
+WPickList
+46
+11
+MItem
+3
+*.c
+12
+WString
+4
+COBJ
+13
+WVList
+1
+14
+MVState
+15
+WString
+3
+WCC
+16
+WString
+25
+n????Include directories:
+1
+17
+WString
+53
+"$(%watcom)/h;$(%watcom)/h/nt;..\..\..\..\..\include"
+0
+18
+WVList
+0
+-1
+1
+1
+0
+19
+MItem
+35
+..\..\..\..\..\lib\cmn\alg_search.c
+20
+WString
+4
+COBJ
+21
+WVList
+0
+22
+WVList
+0
+11
+1
+1
+0
+23
+MItem
+33
+..\..\..\..\..\lib\cmn\alg_sort.c
+24
+WString
+4
+COBJ
+25
+WVList
+0
+26
+WVList
+0
+11
+1
+1
+0
+27
+MItem
+31
+..\..\..\..\..\lib\cmn\assert.c
+28
+WString
+4
+COBJ
+29
+WVList
+0
+30
+WVList
+0
+11
+1
+1
+0
+31
+MItem
+28
+..\..\..\..\..\lib\cmn\chr.c
+32
+WString
+4
+COBJ
+33
+WVList
+0
+34
+WVList
+0
+11
+1
+1
+0
+35
+MItem
+32
+..\..\..\..\..\lib\cmn\chr_cnv.c
+36
+WString
+4
+COBJ
+37
+WVList
+0
+38
+WVList
+0
+11
+1
+1
+0
+39
+MItem
+28
+..\..\..\..\..\lib\cmn\dll.c
+40
+WString
+4
+COBJ
+41
+WVList
+0
+42
+WVList
+0
+11
+1
+1
+0
+43
+MItem
+28
+..\..\..\..\..\lib\cmn\fio.c
+44
+WString
+4
+COBJ
+45
+WVList
+0
+46
+WVList
+0
+11
+1
+1
+0
+47
+MItem
+28
+..\..\..\..\..\lib\cmn\fma.c
+48
+WString
+4
+COBJ
+49
+WVList
+0
+50
+WVList
+0
+11
+1
+1
+0
+51
+MItem
+28
+..\..\..\..\..\lib\cmn\gdl.c
+52
+WString
+4
+COBJ
+53
+WVList
+0
+54
+WVList
+0
+11
+1
+1
+0
+55
+MItem
+28
+..\..\..\..\..\lib\cmn\htb.c
+56
+WString
+4
+COBJ
+57
+WVList
+0
+58
+WVList
+0
+11
+1
+1
+0
+59
+MItem
+28
+..\..\..\..\..\lib\cmn\lda.c
+60
+WString
+4
+COBJ
+61
+WVList
+0
+62
+WVList
+0
+11
+1
+1
+0
+63
+MItem
+29
+..\..\..\..\..\lib\cmn\main.c
+64
+WString
+4
+COBJ
+65
+WVList
+0
+66
+WVList
+0
+11
+1
+1
+0
+67
+MItem
+28
+..\..\..\..\..\lib\cmn\mem.c
+68
+WString
+4
+COBJ
+69
+WVList
+0
+70
+WVList
+0
+11
+1
+1
+0
+71
+MItem
+29
+..\..\..\..\..\lib\cmn\misc.c
+72
+WString
+4
+COBJ
+73
+WVList
+0
+74
+WVList
+0
+11
+1
+1
+0
+75
+MItem
+28
+..\..\..\..\..\lib\cmn\oht.c
+76
+WString
+4
+COBJ
+77
+WVList
+0
+78
+WVList
+0
+11
+1
+1
+0
+79
+MItem
+28
+..\..\..\..\..\lib\cmn\opt.c
+80
+WString
+4
+COBJ
+81
+WVList
+0
+82
+WVList
+0
+11
+1
+1
+0
+83
+MItem
+28
+..\..\..\..\..\lib\cmn\pio.c
+84
+WString
+4
+COBJ
+85
+WVList
+0
+86
+WVList
+0
+11
+1
+1
+0
+87
+MItem
+28
+..\..\..\..\..\lib\cmn\rbt.c
+88
+WString
+4
+COBJ
+89
+WVList
+0
+90
+WVList
+0
+11
+1
+1
+0
+91
+MItem
+28
+..\..\..\..\..\lib\cmn\rex.c
+92
+WString
+4
+COBJ
+93
+WVList
+0
+94
+WVList
+0
+11
+1
+1
+0
+95
+MItem
+28
+..\..\..\..\..\lib\cmn\sio.c
+96
+WString
+4
+COBJ
+97
+WVList
+0
+98
+WVList
+0
+11
+1
+1
+0
+99
+MItem
+28
+..\..\..\..\..\lib\cmn\sll.c
+100
+WString
+4
+COBJ
+101
+WVList
+0
+102
+WVList
+0
+11
+1
+1
+0
+103
+MItem
+30
+..\..\..\..\..\lib\cmn\stdio.c
+104
+WString
+4
+COBJ
+105
+WVList
+0
+106
+WVList
+0
+11
+1
+1
+0
+107
+MItem
+32
+..\..\..\..\..\lib\cmn\str_bas.c
+108
+WString
+4
+COBJ
+109
+WVList
+0
+110
+WVList
+0
+11
+1
+1
+0
+111
+MItem
+32
+..\..\..\..\..\lib\cmn\str_cat.c
+112
+WString
+4
+COBJ
+113
+WVList
+0
+114
+WVList
+0
+11
+1
+1
+0
+115
+MItem
+32
+..\..\..\..\..\lib\cmn\str_chr.c
+116
+WString
+4
+COBJ
+117
+WVList
+0
+118
+WVList
+0
+11
+1
+1
+0
+119
+MItem
+32
+..\..\..\..\..\lib\cmn\str_cmp.c
+120
+WString
+4
+COBJ
+121
+WVList
+0
+122
+WVList
+0
+11
+1
+1
+0
+123
+MItem
+32
+..\..\..\..\..\lib\cmn\str_cnv.c
+124
+WString
+4
+COBJ
+125
+WVList
+0
+126
+WVList
+0
+11
+1
+1
+0
+127
+MItem
+32
+..\..\..\..\..\lib\cmn\str_cpy.c
+128
+WString
+4
+COBJ
+129
+WVList
+0
+130
+WVList
+0
+11
+1
+1
+0
+131
+MItem
+32
+..\..\..\..\..\lib\cmn\str_dup.c
+132
+WString
+4
+COBJ
+133
+WVList
+0
+134
+WVList
+0
+11
+1
+1
+0
+135
+MItem
+32
+..\..\..\..\..\lib\cmn\str_dyn.c
+136
+WString
+4
+COBJ
+137
+WVList
+0
+138
+WVList
+0
+11
+1
+1
+0
+139
+MItem
+33
+..\..\..\..\..\lib\cmn\str_fcpy.c
+140
+WString
+4
+COBJ
+141
+WVList
+0
+142
+WVList
+0
+11
+1
+1
+0
+143
+MItem
+33
+..\..\..\..\..\lib\cmn\str_pbrk.c
+144
+WString
+4
+COBJ
+145
+WVList
+0
+146
+WVList
+0
+11
+1
+1
+0
+147
+MItem
+32
+..\..\..\..\..\lib\cmn\str_put.c
+148
+WString
+4
+COBJ
+149
+WVList
+0
+150
+WVList
+0
+11
+1
+1
+0
+151
+MItem
+32
+..\..\..\..\..\lib\cmn\str_spn.c
+152
+WString
+4
+COBJ
+153
+WVList
+0
+154
+WVList
+0
+11
+1
+1
+0
+155
+MItem
+32
+..\..\..\..\..\lib\cmn\str_str.c
+156
+WString
+4
+COBJ
+157
+WVList
+0
+158
+WVList
+0
+11
+1
+1
+0
+159
+MItem
+34
+..\..\..\..\..\lib\cmn\str_subst.c
+160
+WString
+4
+COBJ
+161
+WVList
+0
+162
+WVList
+0
+11
+1
+1
+0
+163
+MItem
+32
+..\..\..\..\..\lib\cmn\str_utl.c
+164
+WString
+4
+COBJ
+165
+WVList
+0
+166
+WVList
+0
+11
+1
+1
+0
+167
+MItem
+29
+..\..\..\..\..\lib\cmn\time.c
+168
+WString
+4
+COBJ
+169
+WVList
+0
+170
+WVList
+0
+11
+1
+1
+0
+171
+MItem
+28
+..\..\..\..\..\lib\cmn\tio.c
+172
+WString
+4
+COBJ
+173
+WVList
+0
+174
+WVList
+0
+11
+1
+1
+0
+175
+MItem
+32
+..\..\..\..\..\lib\cmn\tio_get.c
+176
+WString
+4
+COBJ
+177
+WVList
+0
+178
+WVList
+0
+11
+1
+1
+0
+179
+MItem
+32
+..\..\..\..\..\lib\cmn\tio_put.c
+180
+WString
+4
+COBJ
+181
+WVList
+0
+182
+WVList
+0
+11
+1
+1
+0
+183
+MItem
+28
+..\..\..\..\..\lib\cmn\xma.c
+184
+WString
+4
+COBJ
+185
+WVList
+0
+186
+WVList
+0
+11
+1
+1
+0
+187
+MItem
+3
+*.h
+188
+WString
+3
+NIL
+189
+WVList
+0
+190
+WVList
+0
+-1
+1
+1
+0
+191
+MItem
+28
+..\..\..\..\..\lib\cmn\mem.h
+192
+WString
+3
+NIL
+193
+WVList
+0
+194
+WVList
+0
+187
+1
+1
+0
+195
+MItem
+32
+..\..\..\..\..\lib\cmn\syscall.h
+196
+WString
+3
+NIL
+197
+WVList
+0
+198
+WVList
+0
+187
+1
+1
+0
diff --git a/qse/watcom/debug/win32/lib/scm/qsescm.tgt b/qse/watcom/debug/win32/lib/scm/qsescm.tgt
new file mode 100755
index 00000000..2b0e1912
--- /dev/null
+++ b/qse/watcom/debug/win32/lib/scm/qsescm.tgt
@@ -0,0 +1,223 @@
+40
+targetIdent
+0
+MProject
+1
+MComponent
+0
+2
+WString
+3
+LIB
+3
+WString
+5
+n_2so
+1
+0
+1
+4
+MCommand
+0
+5
+MCommand
+0
+6
+MItem
+10
+qsescm.lib
+7
+WString
+3
+LIB
+8
+WVList
+0
+9
+WVList
+0
+-1
+1
+1
+0
+10
+WPickList
+9
+11
+MItem
+3
+*.c
+12
+WString
+4
+COBJ
+13
+WVList
+1
+14
+MVState
+15
+WString
+3
+WCC
+16
+WString
+25
+n????Include directories:
+1
+17
+WString
+53
+"$(%watcom)/h;$(%watcom)/h/nt;..\..\..\..\..\include"
+0
+18
+WVList
+0
+-1
+1
+1
+0
+19
+MItem
+28
+..\..\..\..\..\lib\scm\err.c
+20
+WString
+4
+COBJ
+21
+WVList
+0
+22
+WVList
+0
+11
+1
+1
+0
+23
+MItem
+29
+..\..\..\..\..\lib\scm\eval.c
+24
+WString
+4
+COBJ
+25
+WVList
+0
+26
+WVList
+0
+11
+1
+1
+0
+27
+MItem
+28
+..\..\..\..\..\lib\scm\mem.c
+28
+WString
+4
+COBJ
+29
+WVList
+0
+30
+WVList
+0
+11
+1
+1
+0
+31
+MItem
+30
+..\..\..\..\..\lib\scm\print.c
+32
+WString
+4
+COBJ
+33
+WVList
+0
+34
+WVList
+0
+11
+1
+1
+0
+35
+MItem
+29
+..\..\..\..\..\lib\scm\read.c
+36
+WString
+4
+COBJ
+37
+WVList
+0
+38
+WVList
+0
+11
+1
+1
+0
+39
+MItem
+28
+..\..\..\..\..\lib\scm\scm.c
+40
+WString
+4
+COBJ
+41
+WVList
+0
+42
+WVList
+0
+11
+1
+1
+0
+43
+MItem
+3
+*.h
+44
+WString
+3
+NIL
+45
+WVList
+0
+46
+WVList
+0
+-1
+1
+1
+0
+47
+MItem
+28
+..\..\..\..\..\lib\scm\scm.h
+48
+WString
+3
+NIL
+49
+WVList
+0
+50
+WVList
+0
+43
+1
+1
+0
diff --git a/qse/watcom/qse.wpj b/qse/watcom/qse.wpj
index e914f8fc..c69bf37d 100755
--- a/qse/watcom/qse.wpj
+++ b/qse/watcom/qse.wpj
@@ -4,8 +4,8 @@ projectIdent
VpeMain
1
WRect
-680
-400
+0
+80
9320
9120
2
@@ -16,7 +16,7 @@ MCommand
4
MCommand
0
-8
+11
5
WFileName
30
@@ -50,30 +50,26 @@ WFileName
28
debug/os2/cmd/scm/qsescm.tgt
13
-WVList
-8
-14
-VComponent
-15
-WRect
-290
-1880
-5700
-4240
-0
-0
-16
WFileName
30
-release/os2/lib/cmn/qsecmn.tgt
-22
-29
+debug/win32/lib/cmn/qsecmn.tgt
+14
+WFileName
+30
+debug/win32/lib/scm/qsescm.tgt
+15
+WFileName
+30
+debug/win32/cmd/scm/qsescm.tgt
+16
+WVList
+11
17
VComponent
18
WRect
-90
-680
+290
+1880
5700
4240
1
@@ -81,15 +77,15 @@ WRect
19
WFileName
30
-release/os2/lib/sed/qsesed.tgt
-0
-0
+release/os2/lib/cmn/qsecmn.tgt
+22
+24
20
VComponent
21
WRect
-2100
-840
+90
+680
5700
4240
1
@@ -97,15 +93,15 @@ WRect
22
WFileName
30
-release/os2/cmd/sed/qsesed.tgt
+release/os2/lib/sed/qsesed.tgt
+0
0
-1
23
VComponent
24
WRect
-590
-520
+2100
+840
5700
4240
1
@@ -113,31 +109,31 @@ WRect
25
WFileName
30
-release/os2/lib/scm/qsescm.tgt
+release/os2/cmd/sed/qsesed.tgt
0
-2
+1
26
VComponent
27
WRect
-1340
-400
+590
+520
5700
4240
-0
+1
0
28
WFileName
-28
-debug/os2/lib/cmn/qsecmn.tgt
-24
-29
+30
+release/os2/lib/scm/qsescm.tgt
+0
+2
29
VComponent
30
WRect
-1050
-1800
+110
+-160
5700
4240
1
@@ -145,39 +141,103 @@ WRect
31
WFileName
28
-debug/os2/lib/sed/qsesed.tgt
+debug/os2/lib/cmn/qsecmn.tgt
0
5
32
VComponent
33
WRect
-3280
-1320
+1050
+1800
5700
4240
-0
+1
0
34
WFileName
28
-debug/os2/lib/scm/qsescm.tgt
+debug/os2/lib/sed/qsesed.tgt
0
5
35
VComponent
36
WRect
-80
-80
+2360
+720
5700
4240
-0
+1
0
37
WFileName
28
+debug/os2/lib/scm/qsescm.tgt
+0
+6
+38
+VComponent
+39
+WRect
+3660
+-240
+5700
+4240
+1
+0
+40
+WFileName
+28
debug/os2/cmd/scm/qsescm.tgt
0
1
-14
+41
+VComponent
+42
+WRect
+1200
+26
+5700
+4253
+0
+0
+43
+WFileName
+30
+debug/win32/lib/cmn/qsecmn.tgt
+0
+6
+44
+VComponent
+45
+WRect
+240
+893
+5700
+4253
+0
+0
+46
+WFileName
+30
+debug/win32/lib/scm/qsescm.tgt
+0
+0
+47
+VComponent
+48
+WRect
+3060
+640
+5700
+4253
+0
+0
+49
+WFileName
+30
+debug/win32/cmd/scm/qsescm.tgt
+0
+1
+44
diff --git a/qse/watcom/release/os2/lib/cmn/qsecmn.tgt b/qse/watcom/release/os2/lib/cmn/qsecmn.tgt
index f4e9e7bc..6b7fc5fd 100755
--- a/qse/watcom/release/os2/lib/cmn/qsecmn.tgt
+++ b/qse/watcom/release/os2/lib/cmn/qsecmn.tgt
@@ -42,7 +42,7 @@ WVList
0
10
WPickList
-45
+46
11
MItem
3
@@ -755,8 +755,8 @@ WVList
0
171
MItem
-34
-..\..\..\..\..\lib\cmn\str_subst.c
+32
+..\..\..\..\..\lib\cmn\str_str.c
172
WString
4
@@ -773,48 +773,48 @@ WVList
0
175
MItem
-32
-..\..\..\..\..\lib\cmn\str_utl.c
+34
+..\..\..\..\..\lib\cmn\str_subst.c
176
WString
4
COBJ
177
WVList
-1
-178
-MVState
-179
-WString
-3
-WCC
-180
-WString
-25
-o?2??Include directories:
-1
-181
-WString
-54
-"$(%watcom)/h;$(%watcom)/h/os2;..\..\..\..\..\include"
0
-182
+178
WVList
0
11
1
1
0
-183
+179
MItem
-29
-..\..\..\..\..\lib\cmn\time.c
-184
+32
+..\..\..\..\..\lib\cmn\str_utl.c
+180
WString
4
COBJ
-185
+181
WVList
+1
+182
+MVState
+183
+WString
+3
+WCC
+184
+WString
+25
+o?2??Include directories:
+1
+185
+WString
+54
+"$(%watcom)/h;$(%watcom)/h/os2;..\..\..\..\..\include"
0
186
WVList
@@ -825,8 +825,8 @@ WVList
0
187
MItem
-28
-..\..\..\..\..\lib\cmn\tio.c
+29
+..\..\..\..\..\lib\cmn\time.c
188
WString
4
@@ -843,8 +843,8 @@ WVList
0
191
MItem
-32
-..\..\..\..\..\lib\cmn\tio_get.c
+28
+..\..\..\..\..\lib\cmn\tio.c
192
WString
4
@@ -862,7 +862,7 @@ WVList
195
MItem
32
-..\..\..\..\..\lib\cmn\tio_put.c
+..\..\..\..\..\lib\cmn\tio_get.c
196
WString
4
@@ -879,8 +879,8 @@ WVList
0
199
MItem
-28
-..\..\..\..\..\lib\cmn\xma.c
+32
+..\..\..\..\..\lib\cmn\tio_put.c
200
WString
4
@@ -897,26 +897,26 @@ WVList
0
203
MItem
-3
-*.h
+28
+..\..\..\..\..\lib\cmn\xma.c
204
WString
-3
-NIL
+4
+COBJ
205
WVList
0
206
WVList
0
--1
+11
1
1
0
207
MItem
-28
-..\..\..\..\..\lib\cmn\mem.h
+3
+*.h
208
WString
3
@@ -927,14 +927,14 @@ WVList
210
WVList
0
-203
+-1
1
1
0
211
MItem
-32
-..\..\..\..\..\lib\cmn\syscall.h
+28
+..\..\..\..\..\lib\cmn\mem.h
212
WString
3
@@ -945,7 +945,25 @@ WVList
214
WVList
0
-203
+207
+1
+1
+0
+215
+MItem
+32
+..\..\..\..\..\lib\cmn\syscall.h
+216
+WString
+3
+NIL
+217
+WVList
+0
+218
+WVList
+0
+207
1
1
0