summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2015-05-08 15:19:56 -0600
committerKarl Williamson <khw@cpan.org>2015-09-08 10:05:56 -0600
commitbbc981342c254b86d5bc82e5175169b68f0e59ce (patch)
treec9ab53c77f73c5b04d08123a908d3ba03ed59934
parent5d1187d1639ce42a8a9283c8282136fa16d41e50 (diff)
downloadperl-bbc981342c254b86d5bc82e5175169b68f0e59ce.tar.gz
Add more -DL debugging info
This adds more stuff that gets dumped when debugging locale handling. And it adds even more when the v modifier appears.
-rw-r--r--ext/POSIX/POSIX.xs21
-rw-r--r--locale.c26
-rw-r--r--perl.h5
3 files changed, 48 insertions, 4 deletions
diff --git a/ext/POSIX/POSIX.xs b/ext/POSIX/POSIX.xs
index 7d76af3bde..02c5c47436 100644
--- a/ext/POSIX/POSIX.xs
+++ b/ext/POSIX/POSIX.xs
@@ -2269,6 +2269,9 @@ setlocale(category, locale = 0)
#else
retval = setlocale(category, locale);
#endif
+ DEBUG_L(PerlIO_printf(Perl_debug_log,
+ "%s:%d: %s\n", __FILE__, __LINE__,
+ _setlocale_debug_string(category, locale, retval)));
if (! retval) {
/* Should never happen that a query would return an error, but be
* sure and reset to C locale */
@@ -2298,8 +2301,12 @@ setlocale(category, locale = 0)
{
char *newctype;
#ifdef LC_ALL
- if (category == LC_ALL)
+ if (category == LC_ALL) {
newctype = setlocale(LC_CTYPE, NULL);
+ DEBUG_Lv(PerlIO_printf(Perl_debug_log,
+ "%s:%d: %s\n", __FILE__, __LINE__,
+ _setlocale_debug_string(LC_CTYPE, NULL, newctype)));
+ }
else
#endif
newctype = RETVAL;
@@ -2315,8 +2322,12 @@ setlocale(category, locale = 0)
{
char *newcoll;
#ifdef LC_ALL
- if (category == LC_ALL)
+ if (category == LC_ALL) {
newcoll = setlocale(LC_COLLATE, NULL);
+ DEBUG_Lv(PerlIO_printf(Perl_debug_log,
+ "%s:%d: %s\n", __FILE__, __LINE__,
+ _setlocale_debug_string(LC_COLLATE, NULL, newcoll)));
+ }
else
#endif
newcoll = RETVAL;
@@ -2332,8 +2343,12 @@ setlocale(category, locale = 0)
{
char *newnum;
#ifdef LC_ALL
- if (category == LC_ALL)
+ if (category == LC_ALL) {
newnum = setlocale(LC_NUMERIC, NULL);
+ DEBUG_Lv(PerlIO_printf(Perl_debug_log,
+ "%s:%d: %s\n", __FILE__, __LINE__,
+ _setlocale_debug_string(LC_NUMERIC, NULL, newnum)));
+ }
else
#endif
newnum = RETVAL;
diff --git a/locale.c b/locale.c
index 0483cf02bd..d1ea74cf63 100644
--- a/locale.c
+++ b/locale.c
@@ -569,6 +569,8 @@ Perl_my_setlocale(pTHX_ int category, const char* locale)
}
result = setlocale(category, locale);
+ DEBUG_L(PerlIO_printf(Perl_debug_log, "%s:%d: %s\n", __FILE__, __LINE__,
+ _setlocale_debug_string(category, locale, result)));
if (! override_LC_ALL) {
return result;
@@ -583,41 +585,63 @@ Perl_my_setlocale(pTHX_ int category, const char* locale)
result = PerlEnv_getenv("LC_TIME");
if (result && strNE(result, "")) {
setlocale(LC_TIME, result);
+ DEBUG_Lv(PerlIO_printf(Perl_debug_log, "%s:%d: %s\n",
+ __FILE__, __LINE__,
+ _setlocale_debug_string(LC_TIME, result, "not captured")));
}
# endif
# ifdef USE_LOCALE_CTYPE
result = PerlEnv_getenv("LC_CTYPE");
if (result && strNE(result, "")) {
setlocale(LC_CTYPE, result);
+ DEBUG_Lv(PerlIO_printf(Perl_debug_log, "%s:%d: %s\n",
+ __FILE__, __LINE__,
+ _setlocale_debug_string(LC_CTYPE, result, "not captured")));
}
# endif
# ifdef USE_LOCALE_COLLATE
result = PerlEnv_getenv("LC_COLLATE");
if (result && strNE(result, "")) {
setlocale(LC_COLLATE, result);
+ DEBUG_Lv(PerlIO_printf(Perl_debug_log, "%s:%d: %s\n",
+ __FILE__, __LINE__,
+ _setlocale_debug_string(LC_COLLATE, result, "not captured")));
}
# endif
# ifdef USE_LOCALE_MONETARY
result = PerlEnv_getenv("LC_MONETARY");
if (result && strNE(result, "")) {
setlocale(LC_MONETARY, result);
+ DEBUG_Lv(PerlIO_printf(Perl_debug_log, "%s:%d: %s\n",
+ __FILE__, __LINE__,
+ _setlocale_debug_string(LC_MONETARY, result, "not captured")));
}
# endif
# ifdef USE_LOCALE_NUMERIC
result = PerlEnv_getenv("LC_NUMERIC");
if (result && strNE(result, "")) {
setlocale(LC_NUMERIC, result);
+ DEBUG_Lv(PerlIO_printf(Perl_debug_log, "%s:%d: %s\n",
+ __FILE__, __LINE__,
+ _setlocale_debug_string(LC_NUMERIC, result, "not captured")));
}
# endif
# ifdef USE_LOCALE_MESSAGES
result = PerlEnv_getenv("LC_MESSAGES");
if (result && strNE(result, "")) {
setlocale(LC_MESSAGES, result);
+ DEBUG_Lv(PerlIO_printf(Perl_debug_log, "%s:%d: %s\n",
+ __FILE__, __LINE__,
+ _setlocale_debug_string(LC_MESSAGES, result, "not captured")));
}
# endif
- return setlocale(LC_ALL, NULL);
+ result = setlocale(LC_ALL, NULL);
+ DEBUG_L(PerlIO_printf(Perl_debug_log, "%s:%d: %s\n",
+ __FILE__, __LINE__,
+ _setlocale_debug_string(LC_ALL, NULL, result)));
+ return result;
}
#endif
diff --git a/perl.h b/perl.h
index b040291f1e..cb877a36ac 100644
--- a/perl.h
+++ b/perl.h
@@ -4055,6 +4055,7 @@ Gid_t getegid (void);
# define DEBUG_Xv_TEST_ (DEBUG_X_TEST_ && DEBUG_v_TEST_)
# define DEBUG_Uv_TEST_ (DEBUG_U_TEST_ && DEBUG_v_TEST_)
# define DEBUG_Pv_TEST_ (DEBUG_P_TEST_ && DEBUG_v_TEST_)
+# define DEBUG_Lv_TEST_ (DEBUG_L_TEST_ && DEBUG_v_TEST_)
#ifdef DEBUGGING
@@ -4088,6 +4089,7 @@ Gid_t getegid (void);
# define DEBUG_Xv_TEST DEBUG_Xv_TEST_
# define DEBUG_Uv_TEST DEBUG_Uv_TEST_
# define DEBUG_Pv_TEST DEBUG_Pv_TEST_
+# define DEBUG_Lv_TEST DEBUG_Lv_TEST_
# define PERL_DEB(a) a
# define PERL_DEB2(a,b) a
@@ -4127,6 +4129,7 @@ Gid_t getegid (void);
# define DEBUG_Xv(a) DEBUG__(DEBUG_Xv_TEST, a)
# define DEBUG_Uv(a) DEBUG__(DEBUG_Uv_TEST, a)
# define DEBUG_Pv(a) DEBUG__(DEBUG_Pv_TEST, a)
+# define DEBUG_Lv(a) DEBUG__(DEBUG_Lv_TEST, a)
# define DEBUG_S(a) DEBUG__(DEBUG_S_TEST, a)
# define DEBUG_T(a) DEBUG__(DEBUG_T_TEST, a)
@@ -4171,6 +4174,7 @@ Gid_t getegid (void);
# define DEBUG_Xv_TEST (0)
# define DEBUG_Uv_TEST (0)
# define DEBUG_Pv_TEST (0)
+# define DEBUG_Lv_TEST (0)
# define PERL_DEB(a)
# define PERL_DEB2(a,b) b
@@ -4204,6 +4208,7 @@ Gid_t getegid (void);
# define DEBUG_Xv(a)
# define DEBUG_Uv(a)
# define DEBUG_Pv(a)
+# define DEBUG_Lv(a)
#endif /* DEBUGGING */