changed awk to less sensitive about encoding when loading environment.
fixed a bug of setting encoding wrongly with --script-encoding in cmd/awk/awk.c
This commit is contained in:
parent
9588bf2910
commit
ca1d1ede66
@ -812,7 +812,7 @@ static int comparg (int argc, qse_char_t* argv[], struct arg_t* arg)
|
||||
for (i = 0; i < isfl ; i++)
|
||||
{
|
||||
if (isf[i].type == QSE_AWK_PARSESTD_FILE)
|
||||
isf[isfl].u.file.cmgr = arg->script_cmgr;
|
||||
isf[i].u.file.cmgr = arg->script_cmgr;
|
||||
}
|
||||
|
||||
isf[isfl].type = QSE_AWK_PARSESTD_NULL;
|
||||
@ -1225,7 +1225,6 @@ int qse_main (int argc, qse_achar_t* argv[])
|
||||
/* nothing special */
|
||||
#endif
|
||||
|
||||
qse_openstdsios ();
|
||||
|
||||
#if defined(_WIN32)
|
||||
codepage = GetConsoleOutputCP();
|
||||
@ -1256,7 +1255,9 @@ int qse_main (int argc, qse_achar_t* argv[])
|
||||
|
||||
open_mpi (&mpi, argc, argv);
|
||||
|
||||
qse_openstdsios ();
|
||||
ret = qse_runmain (argc, argv, awk_main);
|
||||
qse_closestdsios ();
|
||||
|
||||
close_mpi (&mpi);
|
||||
|
||||
@ -1264,7 +1265,6 @@ int qse_main (int argc, qse_achar_t* argv[])
|
||||
WSACleanup ();
|
||||
#endif
|
||||
|
||||
qse_closestdsios ();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1945,8 +1945,6 @@ int qse_main (int argc, qse_achar_t* argv[])
|
||||
/* nothing */
|
||||
#endif
|
||||
|
||||
qse_openstdsios ();
|
||||
|
||||
#if defined(_WIN32)
|
||||
|
||||
codepage = GetConsoleOutputCP();
|
||||
@ -1980,7 +1978,9 @@ int qse_main (int argc, qse_achar_t* argv[])
|
||||
SSL_library_init ();
|
||||
#endif
|
||||
|
||||
qse_openstdsios ();
|
||||
ret = qse_runmain (argc, argv, httpd_main);
|
||||
qse_closestdsios ();
|
||||
|
||||
#if defined(HAVE_SSL)
|
||||
/* ERR_remove_state() should be called for each thread if the application is thread */
|
||||
@ -1995,6 +1995,5 @@ int qse_main (int argc, qse_achar_t* argv[])
|
||||
WSACleanup ();
|
||||
#endif
|
||||
|
||||
qse_closestdsios ();
|
||||
return ret;
|
||||
}
|
||||
|
@ -1029,8 +1029,6 @@ int qse_main (int argc, qse_achar_t* argv[])
|
||||
/* nothing */
|
||||
#endif
|
||||
|
||||
qse_openstdsios ();
|
||||
|
||||
#if defined(_WIN32)
|
||||
codepage = GetConsoleOutputCP();
|
||||
if (codepage == CP_UTF8)
|
||||
@ -1051,9 +1049,10 @@ int qse_main (int argc, qse_achar_t* argv[])
|
||||
qse_setdflcmgrbyid (QSE_CMGR_SLMB);
|
||||
#endif
|
||||
|
||||
qse_openstdsios ();
|
||||
ret = qse_runmain (argc, argv, sed_main);
|
||||
|
||||
qse_closestdsios ();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1914,16 +1914,16 @@ static int __build_environ (
|
||||
|
||||
*eq = QSE_MT('\0');
|
||||
|
||||
kptr = qse_mbstowcsdup (envarr[count], &klen, rtx->awk->mmgr);
|
||||
vptr = qse_mbstowcsdup (eq + 1, QSE_NULL, rtx->awk->mmgr);
|
||||
/* mbstowcsdup() may fail for invalid encoding. as the environment
|
||||
* variaables are not under control, call mbstowcsalldup() instead
|
||||
* to go on despite encoding failure */
|
||||
kptr = qse_mbstowcsalldup (envarr[count], &klen, rtx->awk->mmgr);
|
||||
vptr = qse_mbstowcsalldup (eq + 1, QSE_NULL, rtx->awk->mmgr);
|
||||
if (kptr == QSE_NULL || vptr == QSE_NULL)
|
||||
{
|
||||
if (kptr) QSE_MMGR_FREE (rtx->awk->mmgr, kptr);
|
||||
qse_awk_rtx_refdownval (rtx, v_env);
|
||||
|
||||
/* mbstowcsdup() may fail for invalid encoding.
|
||||
* so setting the error code to ENOMEM may not
|
||||
* be really accurate */
|
||||
qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL);
|
||||
return -1;
|
||||
}
|
||||
@ -1942,9 +1942,6 @@ static int __build_environ (
|
||||
if (kptr) QSE_MMGR_FREE (rtx->awk->mmgr, kptr);
|
||||
qse_awk_rtx_refdownval (rtx, v_env);
|
||||
|
||||
/* mbstowcsdup() may fail for invalid encoding.
|
||||
* so setting the error code to ENOMEM may not
|
||||
* be really accurate */
|
||||
qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL);
|
||||
return -1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user