moved initialization of the sub programs to the main program
This commit is contained in:
parent
715085c778
commit
cbbc06179a
63
bin/hawk.c
63
bin/hawk.c
@ -1013,7 +1013,7 @@ static void print_hawk_rtx_error (hawk_rtx_t* rtx)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HAWK_INLINE int execute_hawk (int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0)
|
int main_hawk(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0)
|
||||||
{
|
{
|
||||||
hawk_t* hawk = HAWK_NULL;
|
hawk_t* hawk = HAWK_NULL;
|
||||||
hawk_rtx_t* rtx = HAWK_NULL;
|
hawk_rtx_t* rtx = HAWK_NULL;
|
||||||
@ -1206,7 +1206,7 @@ oops:
|
|||||||
|
|
||||||
if (arg.memlimit > 0)
|
if (arg.memlimit > 0)
|
||||||
{
|
{
|
||||||
if (arg.debug) hawk_xma_dump (xma_mmgr.ctx, main_xma_dumper_without_hawk, HAWK_NULL);
|
if (arg.debug) hawk_xma_dump (xma_mmgr.ctx, hawk_main_print_xma, HAWK_NULL);
|
||||||
hawk_fini_xma_mmgr (&xma_mmgr);
|
hawk_fini_xma_mmgr (&xma_mmgr);
|
||||||
}
|
}
|
||||||
freearg (&arg);
|
freearg (&arg);
|
||||||
@ -1214,62 +1214,3 @@ oops:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
int main_hawk(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
char locale[100];
|
|
||||||
UINT codepage;
|
|
||||||
WSADATA wsadata;
|
|
||||||
int sock_inited = 0;
|
|
||||||
#elif defined(__DOS__)
|
|
||||||
extern BOOL _watt_do_exit;
|
|
||||||
int sock_inited = 0;
|
|
||||||
#else
|
|
||||||
/* nothing special */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
codepage = GetConsoleOutputCP();
|
|
||||||
if (codepage == CP_UTF8)
|
|
||||||
{
|
|
||||||
/*SetConsoleOUtputCP (CP_UTF8);*/
|
|
||||||
/*hawk_setdflcmgrbyid (HAWK_CMGR_UTF8);*/
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* .codepage */
|
|
||||||
hawk_fmt_uintmax_to_bcstr (locale, HAWK_COUNTOF(locale), codepage, 10, -1, '\0', ".");
|
|
||||||
setlocale (LC_ALL, locale);
|
|
||||||
/* hawk_setdflcmgrbyid (HAWK_CMGR_SLMB); */
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
setlocale (LC_ALL, "");
|
|
||||||
/* hawk_setdflcmgrbyid (HAWK_CMGR_SLMB); */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0)
|
|
||||||
print_warning ("Failed to start up winsock\n");
|
|
||||||
else sock_inited = 1;
|
|
||||||
#elif defined(__DOS__)
|
|
||||||
/* TODO: add an option to skip watt-32 */
|
|
||||||
_watt_do_exit = 0; /* prevent sock_init from exiting upon failure */
|
|
||||||
if (sock_init() != 0) print_warning ("Failed to initialize watt-32\n");
|
|
||||||
else sock_inited = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ret = execute_hawk(argc, argv, real_argv0);
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
if (sock_inited) WSACleanup ();
|
|
||||||
#elif defined(__DOS__)
|
|
||||||
if (sock_inited) sock_exit ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
98
bin/main.c
98
bin/main.c
@ -28,14 +28,51 @@
|
|||||||
#include <hawk.h>
|
#include <hawk.h>
|
||||||
#include <hawk-xma.h>
|
#include <hawk-xma.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
void main_xma_dumper_without_hawk (void* ctx, const hawk_bch_t* fmt, ...)
|
#if defined(_WIN32)
|
||||||
|
# include <windows.h>
|
||||||
|
#elif defined(__OS2__)
|
||||||
|
# define INCL_ERRORS
|
||||||
|
# include <os2.h>
|
||||||
|
# include <signal.h>
|
||||||
|
#elif defined(__DOS__)
|
||||||
|
# include <dos.h>
|
||||||
|
# include <signal.h>
|
||||||
|
#else
|
||||||
|
# include <unistd.h>
|
||||||
|
# include <errno.h>
|
||||||
|
# include <signal.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* -------------------------------------------------------- */
|
||||||
|
|
||||||
|
void hawk_main_print_xma (void* ctx, const hawk_bch_t* fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
vfprintf (stderr, fmt, ap);
|
vfprintf (stderr, fmt, ap);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
/* -------------------------------------------------------- */
|
||||||
|
|
||||||
|
void hawk_main_print_error (const hawk_bch_t* fmt, ...)
|
||||||
|
{
|
||||||
|
va_list va;
|
||||||
|
fprintf (stderr, "ERROR: ");
|
||||||
|
va_start (va, fmt);
|
||||||
|
vfprintf (stderr, fmt, va);
|
||||||
|
va_end (va);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hawk_main_print_warning (const hawk_bch_t* fmt, ...)
|
||||||
|
{
|
||||||
|
va_list va;
|
||||||
|
fprintf (stderr, "WARNING: ");
|
||||||
|
va_start (va, fmt);
|
||||||
|
vfprintf (stderr, fmt, va);
|
||||||
|
va_end (va);
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------------------- */
|
/* -------------------------------------------------------- */
|
||||||
|
|
||||||
@ -77,6 +114,51 @@ static struct {
|
|||||||
|
|
||||||
int main(int argc, hawk_bch_t* argv[])
|
int main(int argc, hawk_bch_t* argv[])
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
char locale[100];
|
||||||
|
UINT codepage;
|
||||||
|
WSADATA wsadata;
|
||||||
|
int sock_inited = 0;
|
||||||
|
#elif defined(__DOS__)
|
||||||
|
extern BOOL _watt_do_exit;
|
||||||
|
int sock_inited = 0;
|
||||||
|
#else
|
||||||
|
/* nothing special */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
codepage = GetConsoleOutputCP();
|
||||||
|
if (codepage == CP_UTF8)
|
||||||
|
{
|
||||||
|
/*SetConsoleOUtputCP(CP_UTF8);*/
|
||||||
|
/*hawk_setdflcmgrbyid(HAWK_CMGR_UTF8);*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* .codepage */
|
||||||
|
hawk_fmt_uintmax_to_bcstr(locale, HAWK_COUNTOF(locale), codepage, 10, -1, '\0', ".");
|
||||||
|
setlocale(LC_ALL, locale);
|
||||||
|
/* hawk_setdflcmgrbyid(HAWK_CMGR_SLMB); */
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
setlocale(LC_ALL, "");
|
||||||
|
/* hawk_setdflcmgrbyid(HAWK_CMGR_SLMB); */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0)
|
||||||
|
print_warning("Failed to start up winsock\n");
|
||||||
|
else sock_inited = 1;
|
||||||
|
#elif defined(__DOS__)
|
||||||
|
/* TODO: add an option to skip watt-32 */
|
||||||
|
_watt_do_exit = 0; /* prevent sock_init from exiting upon failure */
|
||||||
|
if (sock_init() != 0) print_warning("Failed to initialize watt-32\n");
|
||||||
|
else sock_inited = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (argc >= 2)
|
if (argc >= 2)
|
||||||
{
|
{
|
||||||
hawk_oow_t i;
|
hawk_oow_t i;
|
||||||
@ -86,12 +168,22 @@ int main(int argc, hawk_bch_t* argv[])
|
|||||||
/* [NOTE]
|
/* [NOTE]
|
||||||
* if hawk is invoked via 'hawk --awk' or 'hawk --hawk',
|
* if hawk is invoked via 'hawk --awk' or 'hawk --hawk',
|
||||||
* the value ARGV[0] inside a hawk script is "--awk" or "--hawk" */
|
* the value ARGV[0] inside a hawk script is "--awk" or "--hawk" */
|
||||||
return entry_funcs[i].main(argc -1, &argv[1], argv[0]);
|
ret = entry_funcs[i].main(argc -1, &argv[1], argv[0]);
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return main_hawk(argc, argv, HAWK_NULL);
|
ret = main_hawk(argc, argv, HAWK_NULL);
|
||||||
|
|
||||||
|
done:
|
||||||
|
#if defined(_WIN32)
|
||||||
|
if (sock_inited) WSACleanup();
|
||||||
|
#elif defined(__DOS__)
|
||||||
|
if (sock_inited) sock_exit();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
@ -33,11 +33,13 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int main_cut(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0);
|
||||||
int main_hawk(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0);
|
int main_hawk(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0);
|
||||||
int main_sed(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0);
|
int main_sed(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0);
|
||||||
|
|
||||||
void main_xma_dumper_without_hawk (void* ctx, const hawk_bch_t* fmt, ...);
|
void hawk_main_print_xma (void* ctx, const hawk_bch_t* fmt, ...);
|
||||||
|
void hawk_main_print_error (const hawk_bch_t* fmt, ...);
|
||||||
|
void hawk_main_print_warning (const hawk_bch_t* fmt, ...);
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
}
|
}
|
||||||
|
61
bin/sed.c
61
bin/sed.c
@ -698,7 +698,7 @@ static int expand_wildcards (int argc, hawk_bch_t* argv[], int glob, xarg_t* xar
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HAWK_INLINE int execute_sed (int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0)
|
int main_sed(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0)
|
||||||
{
|
{
|
||||||
hawk_sed_t* sed = HAWK_NULL;
|
hawk_sed_t* sed = HAWK_NULL;
|
||||||
hawk_oow_t script_count;
|
hawk_oow_t script_count;
|
||||||
@ -997,7 +997,7 @@ oops:
|
|||||||
if (sed) hawk_sed_close(sed);
|
if (sed) hawk_sed_close(sed);
|
||||||
if (arg.memlimit > 0)
|
if (arg.memlimit > 0)
|
||||||
{
|
{
|
||||||
if (arg.debug) hawk_xma_dump (xma_mmgr.ctx, main_xma_dumper_without_hawk, HAWK_NULL);
|
if (arg.debug) hawk_xma_dump(xma_mmgr.ctx, hawk_main_print_xma, HAWK_NULL);
|
||||||
hawk_fini_xma_mmgr(&xma_mmgr);
|
hawk_fini_xma_mmgr(&xma_mmgr);
|
||||||
}
|
}
|
||||||
free_scripts();
|
free_scripts();
|
||||||
@ -1005,60 +1005,3 @@ oops:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main_sed(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
char locale[100];
|
|
||||||
UINT codepage;
|
|
||||||
WSADATA wsadata;
|
|
||||||
int sock_inited = 0;
|
|
||||||
#elif defined(__DOS__)
|
|
||||||
extern BOOL _watt_do_exit;
|
|
||||||
int sock_inited = 0;
|
|
||||||
#else
|
|
||||||
/* nothing special */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
codepage = GetConsoleOutputCP();
|
|
||||||
if (codepage == CP_UTF8)
|
|
||||||
{
|
|
||||||
/*SetConsoleOUtputCP (CP_UTF8);*/
|
|
||||||
/*hawk_setdflcmgrbyid (HAWK_CMGR_UTF8);*/
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* .codepage */
|
|
||||||
hawk_fmt_uintmax_to_bcstr (locale, HAWK_COUNTOF(locale), codepage, 10, -1, '\0', ".");
|
|
||||||
setlocale (LC_ALL, locale);
|
|
||||||
/* hawk_setdflcmgrbyid (HAWK_CMGR_SLMB); */
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
setlocale (LC_ALL, "");
|
|
||||||
/* hawk_setdflcmgrbyid (HAWK_CMGR_SLMB); */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0)
|
|
||||||
print_warning ("Failed to start up winsock\n");
|
|
||||||
else sock_inited = 1;
|
|
||||||
#elif defined(__DOS__)
|
|
||||||
/* TODO: add an option to skip watt-32 */
|
|
||||||
_watt_do_exit = 0; /* prevent sock_init from exiting upon failure */
|
|
||||||
if (sock_init() != 0) print_warning ("Failed to initialize watt-32\n");
|
|
||||||
else sock_inited = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ret = execute_sed(argc, argv, real_argv0);
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
if (sock_inited) WSACleanup ();
|
|
||||||
#elif defined(__DOS__)
|
|
||||||
if (sock_inited) sock_exit ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user