updated the main function
This commit is contained in:
parent
a5f7e9d43c
commit
d8b3e8ef9e
@ -18,7 +18,7 @@ bin_PROGRAMS = hawk
|
|||||||
##################################################
|
##################################################
|
||||||
# hawk
|
# hawk
|
||||||
##################################################
|
##################################################
|
||||||
hawk_SOURCES = hawk.c sed.c main.h
|
hawk_SOURCES = hawk.c sed.c main.c main.h
|
||||||
hawk_CPPFLAGS = $(CPPFLAGS_COMMON)
|
hawk_CPPFLAGS = $(CPPFLAGS_COMMON)
|
||||||
hawk_CFLAGS = $(CFLAGS_COMMON)
|
hawk_CFLAGS = $(CFLAGS_COMMON)
|
||||||
hawk_LDFLAGS = $(LDFLAGS_COMMON)
|
hawk_LDFLAGS = $(LDFLAGS_COMMON)
|
||||||
|
@ -111,7 +111,8 @@ CONFIG_CLEAN_FILES =
|
|||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
am_hawk_OBJECTS = hawk-hawk.$(OBJEXT) hawk-sed.$(OBJEXT)
|
am_hawk_OBJECTS = hawk-hawk.$(OBJEXT) hawk-sed.$(OBJEXT) \
|
||||||
|
hawk-main.$(OBJEXT)
|
||||||
hawk_OBJECTS = $(am_hawk_OBJECTS)
|
hawk_OBJECTS = $(am_hawk_OBJECTS)
|
||||||
am__DEPENDENCIES_1 =
|
am__DEPENDENCIES_1 =
|
||||||
hawk_DEPENDENCIES = $(LIBADD_COMMON) $(am__DEPENDENCIES_1)
|
hawk_DEPENDENCIES = $(LIBADD_COMMON) $(am__DEPENDENCIES_1)
|
||||||
@ -137,7 +138,8 @@ am__v_at_1 =
|
|||||||
DEFAULT_INCLUDES =
|
DEFAULT_INCLUDES =
|
||||||
depcomp = $(SHELL) $(top_srcdir)/ac/depcomp
|
depcomp = $(SHELL) $(top_srcdir)/ac/depcomp
|
||||||
am__maybe_remake_depfiles = depfiles
|
am__maybe_remake_depfiles = depfiles
|
||||||
am__depfiles_remade = ./$(DEPDIR)/hawk-hawk.Po ./$(DEPDIR)/hawk-sed.Po
|
am__depfiles_remade = ./$(DEPDIR)/hawk-hawk.Po \
|
||||||
|
./$(DEPDIR)/hawk-main.Po ./$(DEPDIR)/hawk-sed.Po
|
||||||
am__mv = mv -f
|
am__mv = mv -f
|
||||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
@ -354,7 +356,7 @@ LIBADD_COMMON = ../lib/libhawk.la
|
|||||||
##################################################
|
##################################################
|
||||||
# hawk
|
# hawk
|
||||||
##################################################
|
##################################################
|
||||||
hawk_SOURCES = hawk.c sed.c main.h
|
hawk_SOURCES = hawk.c sed.c main.c main.h
|
||||||
hawk_CPPFLAGS = $(CPPFLAGS_COMMON)
|
hawk_CPPFLAGS = $(CPPFLAGS_COMMON)
|
||||||
hawk_CFLAGS = $(CFLAGS_COMMON)
|
hawk_CFLAGS = $(CFLAGS_COMMON)
|
||||||
hawk_LDFLAGS = $(LDFLAGS_COMMON)
|
hawk_LDFLAGS = $(LDFLAGS_COMMON)
|
||||||
@ -448,6 +450,7 @@ distclean-compile:
|
|||||||
-rm -f *.tab.c
|
-rm -f *.tab.c
|
||||||
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hawk-hawk.Po@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hawk-hawk.Po@am__quote@ # am--include-marker
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hawk-main.Po@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hawk-sed.Po@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hawk-sed.Po@am__quote@ # am--include-marker
|
||||||
|
|
||||||
$(am__depfiles_remade):
|
$(am__depfiles_remade):
|
||||||
@ -508,6 +511,20 @@ hawk-sed.obj: sed.c
|
|||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hawk_CPPFLAGS) $(CPPFLAGS) $(hawk_CFLAGS) $(CFLAGS) -c -o hawk-sed.obj `if test -f 'sed.c'; then $(CYGPATH_W) 'sed.c'; else $(CYGPATH_W) '$(srcdir)/sed.c'; fi`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hawk_CPPFLAGS) $(CPPFLAGS) $(hawk_CFLAGS) $(CFLAGS) -c -o hawk-sed.obj `if test -f 'sed.c'; then $(CYGPATH_W) 'sed.c'; else $(CYGPATH_W) '$(srcdir)/sed.c'; fi`
|
||||||
|
|
||||||
|
hawk-main.o: main.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hawk_CPPFLAGS) $(CPPFLAGS) $(hawk_CFLAGS) $(CFLAGS) -MT hawk-main.o -MD -MP -MF $(DEPDIR)/hawk-main.Tpo -c -o hawk-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hawk-main.Tpo $(DEPDIR)/hawk-main.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='hawk-main.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hawk_CPPFLAGS) $(CPPFLAGS) $(hawk_CFLAGS) $(CFLAGS) -c -o hawk-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
|
||||||
|
|
||||||
|
hawk-main.obj: main.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hawk_CPPFLAGS) $(CPPFLAGS) $(hawk_CFLAGS) $(CFLAGS) -MT hawk-main.obj -MD -MP -MF $(DEPDIR)/hawk-main.Tpo -c -o hawk-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hawk-main.Tpo $(DEPDIR)/hawk-main.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='hawk-main.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hawk_CPPFLAGS) $(CPPFLAGS) $(hawk_CFLAGS) $(CFLAGS) -c -o hawk-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
|
||||||
|
|
||||||
mostlyclean-libtool:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
|
|
||||||
@ -641,6 +658,7 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
|
|||||||
|
|
||||||
distclean: distclean-am
|
distclean: distclean-am
|
||||||
-rm -f ./$(DEPDIR)/hawk-hawk.Po
|
-rm -f ./$(DEPDIR)/hawk-hawk.Po
|
||||||
|
-rm -f ./$(DEPDIR)/hawk-main.Po
|
||||||
-rm -f ./$(DEPDIR)/hawk-sed.Po
|
-rm -f ./$(DEPDIR)/hawk-sed.Po
|
||||||
-rm -f Makefile
|
-rm -f Makefile
|
||||||
distclean-am: clean-am distclean-compile distclean-generic \
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
@ -688,6 +706,7 @@ installcheck-am:
|
|||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
maintainer-clean: maintainer-clean-am
|
||||||
-rm -f ./$(DEPDIR)/hawk-hawk.Po
|
-rm -f ./$(DEPDIR)/hawk-hawk.Po
|
||||||
|
-rm -f ./$(DEPDIR)/hawk-main.Po
|
||||||
-rm -f ./$(DEPDIR)/hawk-sed.Po
|
-rm -f ./$(DEPDIR)/hawk-sed.Po
|
||||||
-rm -f Makefile
|
-rm -f Makefile
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
68
bin/hawk.c
68
bin/hawk.c
@ -529,13 +529,15 @@ struct opttab_t
|
|||||||
{ HAWK_NULL, 0, HAWK_NULL }
|
{ HAWK_NULL, 0, HAWK_NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void print_usage (FILE* out, const hawk_bch_t* argv0)
|
static void print_usage (FILE* out, const hawk_bch_t* argv0, const hawk_bch_t* real_argv0)
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
const hawk_bch_t* b = hawk_get_base_name_bcstr(argv0);
|
const hawk_bch_t* b1 = hawk_get_base_name_bcstr(real_argv0? real_argv0: argv0);
|
||||||
|
const hawk_bch_t* b2 = (real_argv0? " ": "");
|
||||||
|
const hawk_bch_t* b3 = (real_argv0? argv0: "");
|
||||||
|
|
||||||
fprintf (out, "USAGE: %s [options] -f sourcefile [ -- ] [datafile]*\n", b);
|
fprintf (out, "USAGE: %s%s%s [options] -f sourcefile [ -- ] [datafile]*\n", b1, b2, b3);
|
||||||
fprintf (out, " %s [options] [ -- ] sourcestring [datafile]*\n", b);
|
fprintf (out, " %s%s%s [options] [ -- ] sourcestring [datafile]*\n", b1, b2, b3);
|
||||||
fprintf (out, "Where options are:\n");
|
fprintf (out, "Where options are:\n");
|
||||||
fprintf (out, " -h/--help print this message\n");
|
fprintf (out, " -h/--help print this message\n");
|
||||||
fprintf (out, " --version print version\n");
|
fprintf (out, " --version print version\n");
|
||||||
@ -650,7 +652,7 @@ static int expand_wildcard (int argc, hawk_bch_t* argv[], int do_glob, xarg_t* x
|
|||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
static int process_argv (int argc, hawk_bch_t* argv[], struct arg_t* arg)
|
static int process_argv (int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0, struct arg_t* arg)
|
||||||
{
|
{
|
||||||
static hawk_bcli_lng_t lng[] =
|
static hawk_bcli_lng_t lng[] =
|
||||||
{
|
{
|
||||||
@ -865,7 +867,7 @@ static int process_argv (int argc, hawk_bch_t* argv[], struct arg_t* arg)
|
|||||||
|
|
||||||
if (hawk_comp_bcstr(opt.lngopt, "version", 0) == 0)
|
if (hawk_comp_bcstr(opt.lngopt, "version", 0) == 0)
|
||||||
{
|
{
|
||||||
print_version (argv[0]);
|
print_version (real_argv0? real_argv0: argv[0]);
|
||||||
oops_ret = 2;
|
oops_ret = 2;
|
||||||
goto oops;
|
goto oops;
|
||||||
}
|
}
|
||||||
@ -1123,7 +1125,7 @@ static hawk_mmgr_t debug_mmgr =
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static HAWK_INLINE int execute_hawk (int argc, hawk_bch_t* argv[])
|
static HAWK_INLINE int execute_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;
|
||||||
@ -1146,10 +1148,10 @@ static HAWK_INLINE int execute_hawk (int argc, hawk_bch_t* argv[])
|
|||||||
hawk_parsestd_t psout;
|
hawk_parsestd_t psout;
|
||||||
hawk_mmgr_t* mmgr = hawk_get_sys_mmgr();
|
hawk_mmgr_t* mmgr = hawk_get_sys_mmgr();
|
||||||
|
|
||||||
i = process_argv(argc, argv, &arg);
|
i = process_argv(argc, argv, real_argv0, &arg);
|
||||||
if (i <= 0)
|
if (i <= 0)
|
||||||
{
|
{
|
||||||
print_usage (((i == 0)? stdout: stderr), argv[0]);
|
print_usage (((i == 0)? stdout: stderr), argv[0], real_argv0);
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
if (i == 2) return 0;
|
if (i == 2) return 0;
|
||||||
@ -1348,7 +1350,7 @@ oops:
|
|||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
static int main_hawk(int argc, hawk_bch_t* argv[])
|
int main_hawk(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -1395,7 +1397,7 @@ static int main_hawk(int argc, hawk_bch_t* argv[])
|
|||||||
else sock_inited = 1;
|
else sock_inited = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ret = execute_hawk(argc, argv);
|
ret = execute_hawk(argc, argv, real_argv0);
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
if (sock_inited) WSACleanup ();
|
if (sock_inited) WSACleanup ();
|
||||||
@ -1405,47 +1407,3 @@ static int main_hawk(int argc, hawk_bch_t* argv[])
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, hawk_bch_t* argv[])
|
|
||||||
{
|
|
||||||
const hawk_bch_t* base;
|
|
||||||
|
|
||||||
base = hawk_get_base_name_bcstr(argv[0]);
|
|
||||||
if (hawk_comp_bcstr(base, "sed", 0) == 0 || hawk_comp_bcstr(base, "hawk-sed", 0) == 0)
|
|
||||||
{
|
|
||||||
/* sed ... */
|
|
||||||
/* hawk-sed ... */
|
|
||||||
return main_sed(argc, argv);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argc >= 2 && hawk_comp_bcstr(argv[1], "sed", 0) == 0)
|
|
||||||
{
|
|
||||||
/* hawk sed ... */
|
|
||||||
return main_sed(argc - 1, &argv[1]);
|
|
||||||
}
|
|
||||||
else if (argc >= 2 && hawk_comp_bcstr(argv[1], "awk", 0) == 0)
|
|
||||||
{
|
|
||||||
/* hawk awk ... */
|
|
||||||
return main_hawk(argc - 1, &argv[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return main_hawk(argc, argv);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#if defined(FAKE_SOCKET)
|
|
||||||
socket () {}
|
|
||||||
listen () {}
|
|
||||||
accept () {}
|
|
||||||
recvfrom () {}
|
|
||||||
connect () {}
|
|
||||||
getsockopt () {}
|
|
||||||
recv () {}
|
|
||||||
setsockopt () {}
|
|
||||||
send () {}
|
|
||||||
bind () {}
|
|
||||||
shutdown () {}
|
|
||||||
|
|
||||||
void* memmove (void* x, void* y, size_t z) {}
|
|
||||||
#endif
|
|
||||||
|
62
bin/main.c
Normal file
62
bin/main.c
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
Copyright (c) 2006-2020 Chung, Hyung-Hwan. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
int main(int argc, hawk_bch_t* argv[])
|
||||||
|
{
|
||||||
|
if (argc >= 2 && hawk_comp_bcstr(argv[1], "--sed", 0) == 0)
|
||||||
|
{
|
||||||
|
/* hawk --sed ... */
|
||||||
|
return main_sed(argc - 1, &argv[1], argv[0]);
|
||||||
|
}
|
||||||
|
else if (argc >= 2 && hawk_comp_bcstr(argv[1], "--awk", 0) == 0)
|
||||||
|
{
|
||||||
|
/* hawk --awk ... */
|
||||||
|
/* in this mode, the value ARGV[0] inside a hawk script is "--awk" */
|
||||||
|
return main_hawk(argc - 1, &argv[1], argv[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return main_hawk(argc, argv, HAWK_NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#if defined(FAKE_SOCKET)
|
||||||
|
socket () {}
|
||||||
|
listen () {}
|
||||||
|
accept () {}
|
||||||
|
recvfrom () {}
|
||||||
|
connect () {}
|
||||||
|
getsockopt () {}
|
||||||
|
recv () {}
|
||||||
|
setsockopt () {}
|
||||||
|
send () {}
|
||||||
|
bind () {}
|
||||||
|
shutdown () {}
|
||||||
|
|
||||||
|
void* memmove (void* x, void* y, size_t z) {}
|
||||||
|
#endif
|
28
bin/main.h
28
bin/main.h
@ -1,3 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
Copyright (c) 2006-2020 Chung, Hyung-Hwan. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef _MAIN_H_
|
#ifndef _MAIN_H_
|
||||||
#define _MAIN_H_
|
#define _MAIN_H_
|
||||||
@ -8,7 +33,8 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int main_sed(int argc, hawk_bch_t* argv[]);
|
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);
|
||||||
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
|
38
bin/sed.c
38
bin/sed.c
@ -174,7 +174,7 @@ static hawk_mmgr_t debug_mmgr =
|
|||||||
|
|
||||||
static void print_version (const hawk_bch_t* argv0)
|
static void print_version (const hawk_bch_t* argv0)
|
||||||
{
|
{
|
||||||
fprintf (stdout, "%s (HAWK SED) %s\n", hawk_get_base_name_bcstr(argv0), HAWK_PACKAGE_VERSION);
|
fprintf (stdout, "%s %s\n", hawk_get_base_name_bcstr(argv0), HAWK_PACKAGE_VERSION);
|
||||||
fprintf (stdout, "Copyright 2006-2022 Chung, Hyung-Hwan\n");
|
fprintf (stdout, "Copyright 2006-2022 Chung, Hyung-Hwan\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,13 +196,15 @@ static void print_warning (const hawk_bch_t* fmt, ...)
|
|||||||
va_end (va);
|
va_end (va);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_usage (FILE* out, int argc, hawk_bch_t* argv[])
|
static void print_usage (FILE* out, const hawk_bch_t* argv0, const hawk_bch_t* real_argv0)
|
||||||
{
|
{
|
||||||
const hawk_bch_t* b = hawk_get_base_name_bcstr(argv[0]);
|
const hawk_bch_t* b1 = hawk_get_base_name_bcstr(real_argv0? real_argv0: argv0);
|
||||||
|
const hawk_bch_t* b2 = (real_argv0? " ": "");
|
||||||
|
const hawk_bch_t* b3 = (real_argv0? argv0: "");
|
||||||
|
|
||||||
fprintf (out, "USAGE: %s [options] script [file]\n", b);
|
fprintf (out, "USAGE: %s%s%s [options] script [file]\n", b1, b2, b3);
|
||||||
fprintf (out, " %s [options] -f script-file [file]\n", b);
|
fprintf (out, " %s%s%s [options] -f script-file [file]\n", b1, b2, b3);
|
||||||
fprintf (out, " %s [options] -e script [file]\n", b);
|
fprintf (out, " %s%s%s [options] -e script [file]\n", b1, b2, b3);
|
||||||
|
|
||||||
fprintf (out, "options as follows:\n");
|
fprintf (out, "options as follows:\n");
|
||||||
fprintf (out, " -h/--help show this message\n");
|
fprintf (out, " -h/--help show this message\n");
|
||||||
@ -284,7 +286,7 @@ static void free_scripts (void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int handle_args (int argc, hawk_bch_t* argv[], struct arg_t* arg)
|
static int handle_args (int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0, struct arg_t* arg)
|
||||||
{
|
{
|
||||||
static hawk_bcli_lng_t lng[] =
|
static hawk_bcli_lng_t lng[] =
|
||||||
{
|
{
|
||||||
@ -314,21 +316,21 @@ static int handle_args (int argc, hawk_bch_t* argv[], struct arg_t* arg)
|
|||||||
switch (c)
|
switch (c)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
print_usage (stderr, argc, argv);
|
print_usage (stderr, argv[0], real_argv0);
|
||||||
goto oops;
|
goto oops;
|
||||||
|
|
||||||
case '?':
|
case '?':
|
||||||
print_error ("bad option - %c\n", opt.opt);
|
print_error ("bad option - %c\n", opt.opt);
|
||||||
print_usage (stderr, argc, argv);
|
print_usage (stderr, argv[0], real_argv0);
|
||||||
goto oops;
|
goto oops;
|
||||||
|
|
||||||
case ':':
|
case ':':
|
||||||
print_error ("bad parameter for %c\n", opt.opt);
|
print_error ("bad parameter for %c\n", opt.opt);
|
||||||
print_usage (stderr, argc, argv);
|
print_usage (stderr, argv[0], real_argv0);
|
||||||
goto oops;
|
goto oops;
|
||||||
|
|
||||||
case 'h':
|
case 'h':
|
||||||
print_usage (stdout, argc, argv);
|
print_usage (stdout, argv[0], real_argv0);
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
case 'n':
|
case 'n':
|
||||||
@ -384,7 +386,7 @@ static int handle_args (int argc, hawk_bch_t* argv[], struct arg_t* arg)
|
|||||||
arg->trace = 1;
|
arg->trace = 1;
|
||||||
break;
|
break;
|
||||||
#else
|
#else
|
||||||
print_usage (stderr, argc, argv);
|
print_usage (stderr, argv[0], real_argv0);
|
||||||
goto oops;
|
goto oops;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -406,7 +408,7 @@ static int handle_args (int argc, hawk_bch_t* argv[], struct arg_t* arg)
|
|||||||
{
|
{
|
||||||
if (hawk_comp_bcstr(opt.lngopt, "version", 0) == 0)
|
if (hawk_comp_bcstr(opt.lngopt, "version", 0) == 0)
|
||||||
{
|
{
|
||||||
print_version (argv[0]);
|
print_version (real_argv0? real_argv0: argv[0]);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
else if (hawk_comp_bcstr(opt.lngopt, "script-encoding", 0) == 0)
|
else if (hawk_comp_bcstr(opt.lngopt, "script-encoding", 0) == 0)
|
||||||
@ -450,7 +452,7 @@ static int handle_args (int argc, hawk_bch_t* argv[], struct arg_t* arg)
|
|||||||
|
|
||||||
if (g_script.size <= 0)
|
if (g_script.size <= 0)
|
||||||
{
|
{
|
||||||
print_usage (stderr, argc, argv);
|
print_usage (stderr, argv[0], real_argv0);
|
||||||
goto oops;
|
goto oops;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -791,7 +793,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_hawk_sed (int argc, hawk_bch_t* argv[])
|
static HAWK_INLINE int execute_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;
|
||||||
@ -803,7 +805,7 @@ static HAWK_INLINE int execute_hawk_sed (int argc, hawk_bch_t* argv[])
|
|||||||
hawk_cmgr_t* cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8);
|
hawk_cmgr_t* cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8);
|
||||||
|
|
||||||
memset (&arg, 0, HAWK_SIZEOF(arg));
|
memset (&arg, 0, HAWK_SIZEOF(arg));
|
||||||
ret = handle_args(argc, argv, &arg);
|
ret = handle_args(argc, argv, real_argv0, &arg);
|
||||||
if (ret <= -1) return -1;
|
if (ret <= -1) return -1;
|
||||||
if (ret == 0) return 0;
|
if (ret == 0) return 0;
|
||||||
|
|
||||||
@ -1114,7 +1116,7 @@ oops:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main_sed(int argc, hawk_bch_t* argv[])
|
int main_sed(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -1161,7 +1163,7 @@ int main_sed(int argc, hawk_bch_t* argv[])
|
|||||||
else sock_inited = 1;
|
else sock_inited = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ret = execute_hawk_sed(argc, argv);
|
ret = execute_sed(argc, argv, real_argv0);
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
if (sock_inited) WSACleanup ();
|
if (sock_inited) WSACleanup ();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user