changed the file handler to use qse_sio_t in StdAwk

This commit is contained in:
2009-01-18 00:44:31 +00:00
parent 6aac3f59cf
commit 81cf4a462b
27 changed files with 813 additions and 122 deletions

View File

@ -85,6 +85,7 @@ F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
HAVE_CXX = @HAVE_CXX@
HAVE_OBJC = @HAVE_OBJC@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@ -103,6 +104,9 @@ MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJC = @OBJC@
OBJCDEPMODE = @OBJCDEPMODE@
OBJCFLAGS = @OBJCFLAGS@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
@ -126,6 +130,7 @@ abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJC = @ac_ct_OBJC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@

View File

@ -14,6 +14,7 @@
#include <windows.h>
#else
#include <unistd.h>
#include <signal.h>
#endif
#if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG)
@ -689,6 +690,49 @@ static void print_usage (const qse_char_t* argv0)
}
}
TestAwk* app_awk = QSE_NULL;
#ifdef _WIN32
static BOOL WINAPI stop_run (DWORD ctrl_type)
{
if (ctrl_type == CTRL_C_EVENT ||
ctrl_type == CTRL_CLOSE_EVENT)
{
if (app_awk) app_awk->stop ();
return TRUE;
}
return FALSE;
}
#else
static void stop_run (int sig)
{
signal (SIGINT, SIG_IGN);
if (app_awk) app_awk->stop ();
signal (SIGINT, stop_run);
}
#endif
static void set_intr_run (TestAwk* awk)
{
app_awk = awk;
#ifdef _WIN32
SetConsoleCtrlHandler (stop_run, TRUE);
#else
signal (SIGINT, stop_run);
#endif
}
static void unset_intr_run ()
{
app_awk = QSE_NULL;
#ifdef _WIN32
SetConsoleCtrlHandler (stop_run, FALSE);
#else
signal (SIGINT, SIG_DFL);
#endif
}
static int awk_main (int argc, qse_char_t* argv[])
{
TestAwk awk;
@ -864,7 +908,6 @@ static int awk_main (int argc, qse_char_t* argv[])
return -1;
}
if (awk.parse (srcin, srcout) == -1)
{
qse_fprintf (stderr, QSE_T("cannot parse: LINE[%d] %s\n"),
@ -875,6 +918,8 @@ static int awk_main (int argc, qse_char_t* argv[])
awk.enableRunCallback ();
set_intr_run (&awk);
if (awk.run (mainfn, args, nargs) == -1)
{
qse_fprintf (stderr, QSE_T("cannot run: LINE[%d] %s\n"),
@ -882,8 +927,10 @@ static int awk_main (int argc, qse_char_t* argv[])
awk.close ();
return -1;
}
unset_intr_run ();
awk.close ();
return 0;
}

View File

@ -118,6 +118,7 @@ F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
HAVE_CXX = @HAVE_CXX@
HAVE_OBJC = @HAVE_OBJC@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@ -136,6 +137,9 @@ MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJC = @OBJC@
OBJCDEPMODE = @OBJCDEPMODE@
OBJCFLAGS = @OBJCFLAGS@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
@ -159,6 +163,7 @@ abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJC = @ac_ct_OBJC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@

View File

@ -100,6 +100,7 @@ F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
HAVE_CXX = @HAVE_CXX@
HAVE_OBJC = @HAVE_OBJC@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@ -118,6 +119,9 @@ MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJC = @OBJC@
OBJCDEPMODE = @OBJCDEPMODE@
OBJCFLAGS = @OBJCFLAGS@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
@ -141,6 +145,7 @@ abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJC = @ac_ct_OBJC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@

View File

@ -99,6 +99,7 @@ F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
HAVE_CXX = @HAVE_CXX@
HAVE_OBJC = @HAVE_OBJC@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@ -117,6 +118,9 @@ MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJC = @OBJC@
OBJCDEPMODE = @OBJCDEPMODE@
OBJCFLAGS = @OBJCFLAGS@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
@ -140,6 +144,7 @@ abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJC = @ac_ct_OBJC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@