* "cannot parse date" for a seemingly valid .Dd parameter @ 2014-08-27 14:58 LÉVAI Dániel 2014-08-27 15:07 ` Kristaps Dzonsons 0 siblings, 1 reply; 13+ messages in thread From: LÉVAI Dániel @ 2014-08-27 14:58 UTC (permalink / raw) To: discuss Hi! $ mdocml -V mandoc 1.13.1 For a .Dd line eg. like this: .Dd August 27, 2014 mandoc tells me this: WARNING: cannot parse date, using it verbatim: August 27, 2014 This is on Linux, btw. I don't remember 1.12.x having any issues with this kind of date, but I may be wrong. Funny thing is, that on OpenBSD 5.5 with mandoc 1.13.0, this date format is accepted. Daniel -- LÉVAI Dániel PGP key ID = 0x83B63A8F Key fingerprint = DBEC C66B A47A DFA2 792D 650C C69B BE4C 83B6 3A8F -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-27 14:58 "cannot parse date" for a seemingly valid .Dd parameter LÉVAI Dániel @ 2014-08-27 15:07 ` Kristaps Dzonsons 2014-08-27 15:15 ` LÉVAI Dániel 0 siblings, 1 reply; 13+ messages in thread From: Kristaps Dzonsons @ 2014-08-27 15:07 UTC (permalink / raw) To: discuss Daniel, Is your locale set? This format works fine in HEAD, both on OpenBSD and Linux (Debian testing). Best, Kristaps -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-27 15:07 ` Kristaps Dzonsons @ 2014-08-27 15:15 ` LÉVAI Dániel 2014-08-28 0:43 ` Ingo Schwarze 0 siblings, 1 reply; 13+ messages in thread From: LÉVAI Dániel @ 2014-08-27 15:15 UTC (permalink / raw) To: discuss On sze, aug 27, 2014 at 17:07:43 +0200, Kristaps Dzonsons wrote: > Daniel, > > Is your locale set? This format works fine in HEAD, both on OpenBSD and > Linux (Debian testing). Yes, that was my first suspicion: $ locale LANG=en_US.UTF-8 LC_CTYPE=hu_HU.UTF-8 LC_NUMERIC=hu_HU.UTF-8 LC_TIME=hu_HU.UTF-8 LC_COLLATE=hu_HU.UTF-8 LC_MONETARY=hu_HU.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=hu_HU.UTF-8 LC_NAME=hu_HU.UTF-8 LC_ADDRESS=hu_HU.UTF-8 LC_TELEPHONE=hu_HU.UTF-8 LC_MEASUREMENT=hu_HU.UTF-8 LC_IDENTIFICATION=hu_HU.UTF-8 LC_ALL= Where can I get hold of the portable version's source repo? Daniel -- LÉVAI Dániel PGP key ID = 0x83B63A8F Key fingerprint = DBEC C66B A47A DFA2 792D 650C C69B BE4C 83B6 3A8F -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-27 15:15 ` LÉVAI Dániel @ 2014-08-28 0:43 ` Ingo Schwarze 2014-08-28 8:39 ` LÉVAI Dániel 0 siblings, 1 reply; 13+ messages in thread From: Ingo Schwarze @ 2014-08-28 0:43 UTC (permalink / raw) To: LÉVAI Dániel; +Cc: discuss Hi Daniel, LÉVAI Dániel wrote on Wed, Aug 27, 2014 at 05:15:13PM +0200: > On sze, aug 27, 2014 at 17:07:43 +0200, Kristaps Dzonsons wrote: >> Is your locale set? This format works fine in HEAD, >> both on OpenBSD and Linux (Debian testing). > Yes, that was my first suspicion: > $ locale > LANG=en_US.UTF-8 > LC_CTYPE=hu_HU.UTF-8 > LC_NUMERIC=hu_HU.UTF-8 > LC_TIME=hu_HU.UTF-8 > LC_COLLATE=hu_HU.UTF-8 > LC_MONETARY=hu_HU.UTF-8 > LC_MESSAGES=en_US.UTF-8 > LC_PAPER=hu_HU.UTF-8 > LC_NAME=hu_HU.UTF-8 > LC_ADDRESS=hu_HU.UTF-8 > LC_TELEPHONE=hu_HU.UTF-8 > LC_MEASUREMENT=hu_HU.UTF-8 > LC_IDENTIFICATION=hu_HU.UTF-8 > LC_ALL= After some code reading and some experimentation, i'm still quite unsure where the problem might lie, i fail to reproduce but need additional information. Please apply the debugging patch appended below (not intended for commit) to anoncvs HEAD, and run: $ ./configure $ make Then please show me the output of the following sequence of commands: $ locale $ ./mandoc -Wall test.1 > /dev/null $ ./mandoc -Wall -Tlocale test.1 > /dev/null with a suitable file test.1 exhibiting the problem. Please also show me the config.h generated from ./configure. > Where can I get hold of the portable version's source repo? $ cvs -d anoncvs@mdocml.bsd.lv:/cvs mdocml Thanks, Ingo diff --git a/main.c b/main.c index e0380e9..9102143 100644 --- a/main.c +++ b/main.c @@ -24,6 +24,7 @@ #include <ctype.h> #include <errno.h> #include <fcntl.h> +#include <locale.h> #include <stdio.h> #include <stdint.h> #include <stdlib.h> @@ -119,6 +120,9 @@ main(int argc, char *argv[]) int options; int c; + fprintf(stderr, "main: LC_TIME = %s\n", + setlocale(LC_TIME, NULL)); + progname = strrchr(argv[0], '/'); if (progname == NULL) progname = argv[0]; diff --git a/mandoc.c b/mandoc.c index be3e264..090f948 100644 --- a/mandoc.c +++ b/mandoc.c @@ -23,6 +23,7 @@ #include <ctype.h> #include <errno.h> #include <limits.h> +#include <locale.h> #include <stdlib.h> #include <stdio.h> #include <string.h> @@ -455,8 +456,11 @@ a2time(time_t *t, const char *fmt, const char *p) memset(&tm, 0, sizeof(struct tm)); + fprintf(stderr, "a2time: LC_TIME = %s\n", + setlocale(LC_TIME, NULL)); pp = NULL; #if HAVE_STRPTIME + fprintf(stderr, "a2time: calling strptime()\n"); pp = strptime(p, fmt, &tm); #endif if (NULL != pp && '\0' == *pp) { diff --git a/term_ascii.c b/term_ascii.c index ab62902..e1cf67c 100644 --- a/term_ascii.c +++ b/term_ascii.c @@ -81,9 +81,13 @@ ascii_init(enum termenc enc, char *outopts) #if HAVE_WCHAR if (TERMENC_ASCII != enc) { + fprintf(stderr, "ascii_init: LC_TIME = %s\n", + setlocale(LC_TIME, NULL)); v = TERMENC_LOCALE == enc ? setlocale(LC_ALL, "") : setlocale(LC_CTYPE, "en_US.UTF-8"); + fprintf(stderr, "ascii_init: LC_TIME = %s\n", + setlocale(LC_TIME, NULL)); if (NULL != v && MB_CUR_MAX > 1) { p->enc = enc; p->advance = locale_advance; -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-28 0:43 ` Ingo Schwarze @ 2014-08-28 8:39 ` LÉVAI Dániel 2014-08-28 16:11 ` Ingo Schwarze 0 siblings, 1 reply; 13+ messages in thread From: LÉVAI Dániel @ 2014-08-28 8:39 UTC (permalink / raw) To: discuss On cs, aug 28, 2014 at 02:43:42 +0200, Ingo Schwarze wrote: > Hi Daniel, > > LÉVAI Dániel wrote on Wed, Aug 27, 2014 at 05:15:13PM +0200: > > > On sze, aug 27, 2014 at 17:07:43 +0200, Kristaps Dzonsons wrote: > > >> Is your locale set? This format works fine in HEAD, > >> both on OpenBSD and Linux (Debian testing). > > > Yes, that was my first suspicion: > > $ locale > > LANG=en_US.UTF-8 > > LC_CTYPE=hu_HU.UTF-8 > > LC_NUMERIC=hu_HU.UTF-8 > > LC_TIME=hu_HU.UTF-8 > > LC_COLLATE=hu_HU.UTF-8 > > LC_MONETARY=hu_HU.UTF-8 > > LC_MESSAGES=en_US.UTF-8 > > LC_PAPER=hu_HU.UTF-8 > > LC_NAME=hu_HU.UTF-8 > > LC_ADDRESS=hu_HU.UTF-8 > > LC_TELEPHONE=hu_HU.UTF-8 > > LC_MEASUREMENT=hu_HU.UTF-8 > > LC_IDENTIFICATION=hu_HU.UTF-8 > > LC_ALL= > > After some code reading and some experimentation, i'm still quite > unsure where the problem might lie, i fail to reproduce but need > additional information. Please apply the debugging patch appended > below (not intended for commit) to anoncvs HEAD, and run: > > $ ./configure > $ make With the cvs checkout, mandoc(1) accepts the given date for me too. config.h: ===============8<=============== #ifndef MANDOC_CONFIG_H #define MANDOC_CONFIG_H #if defined(__linux__) || defined(__MINT__) #define _GNU_SOURCE /* getsubopt(), strcasestr(), strptime() */ #endif #include <sys/types.h> #include <stdio.h> #define VERSION "1.13.1" #define HAVE_DIRENT_NAMLEN 0 #define HAVE_FGETLN 0 #define HAVE_FTS 1 #define HAVE_GETSUBOPT 1 #define HAVE_MMAP 1 #define HAVE_REALLOCARRAY 0 #define HAVE_STRCASESTR 1 #define HAVE_STRLCAT 0 #define HAVE_STRLCPY 0 #define HAVE_STRPTIME 1 #define HAVE_STRSEP 1 #define HAVE_WCHAR 0 #define HAVE_SQLITE3 1 #define HAVE_SQLITE3_ERRSTR 1 #define HAVE_OHASH 0 #define HAVE_MANPATH 0 #if !defined(__BEGIN_DECLS) # ifdef __cplusplus # define __BEGIN_DECLS extern "C" { # else # define __BEGIN_DECLS # endif #endif #if !defined(__END_DECLS) # ifdef __cplusplus # define __END_DECLS } # else # define __END_DECLS # endif #endif extern char *fgetln(FILE *, size_t *); extern void *reallocarray(void *, size_t, size_t); extern size_t strlcat(char *, const char *, size_t); extern size_t strlcpy(char *, const char *, size_t); #endif /* MANDOC_CONFIG_H */ ===============8<=============== > Then please show me the output of the following sequence of commands: > > $ locale > $ ./mandoc -Wall test.1 > /dev/null > $ ./mandoc -Wall -Tlocale test.1 > /dev/null $ locale LANG=en_US.UTF-8 LC_CTYPE=hu_HU.UTF-8 LC_NUMERIC=hu_HU.UTF-8 LC_TIME=hu_HU.UTF-8 LC_COLLATE=hu_HU.UTF-8 LC_MONETARY=hu_HU.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=hu_HU.UTF-8 LC_NAME=hu_HU.UTF-8 LC_ADDRESS=hu_HU.UTF-8 LC_TELEPHONE=hu_HU.UTF-8 LC_MEASUREMENT=hu_HU.UTF-8 LC_IDENTIFICATION=hu_HU.UTF-8 LC_ALL= $ ./mandoc -Wall test.1 > /dev/null main: LC_TIME = C a2time: LC_TIME = C a2time: calling strptime() a2time: LC_TIME = C a2time: calling strptime() a2time: LC_TIME = C a2time: calling strptime() $ ./mandoc -Wall -Tlocale test.1 > /dev/null main: LC_TIME = C a2time: LC_TIME = C a2time: calling strptime() a2time: LC_TIME = C a2time: calling strptime() a2time: LC_TIME = C a2time: calling strptime() > > with a suitable file test.1 exhibiting the problem. Here is a simple test file: ===============8<=============== .Dd August 27, 2014 .Dt TITLE 1 .Os .Sh NAME .Nd description ===============8<=============== TBH, I'm a bit confused. You see, I've used 1.12.3 before, and I've just upgraded to 1.13.1 recently. And because 1.12.3 did not have a ./configure script, furthermore with 1.13.1 I was not supposed to run ./configure directly, it seems to me, something has changed throughout the development that it seems has been fixed in HEAD, but exists (for me) in 1.13.1. Does this make sense? Daniel -- LÉVAI Dániel PGP key ID = 0x83B63A8F Key fingerprint = DBEC C66B A47A DFA2 792D 650C C69B BE4C 83B6 3A8F -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-28 8:39 ` LÉVAI Dániel @ 2014-08-28 16:11 ` Ingo Schwarze 2014-08-28 16:32 ` LÉVAI Dániel 0 siblings, 1 reply; 13+ messages in thread From: Ingo Schwarze @ 2014-08-28 16:11 UTC (permalink / raw) To: LÉVAI Dániel; +Cc: discuss Hi Daniel, LÉVAI Dániel wrote on Thu, Aug 28, 2014 at 10:39:00AM +0200: > On cs, aug 28, 2014 at 02:43:42 +0200, Ingo Schwarze wrote: >> After some code reading and some experimentation, i'm still quite >> unsure where the problem might lie, i fail to reproduce but need >> additional information. Please apply the debugging patch appended >> below (not intended for commit) to anoncvs HEAD, and run: >> >> $ ./configure >> $ make > With the cvs checkout, mandoc(1) accepts the given date for me too. > > config.h: > #define HAVE_WCHAR 0 That's the reason you don't see the problem in HEAD: wide character support is not detected. >> Then please show me the output of the following sequence of commands: >> >> $ locale >> $ ./mandoc -Wall test.1 > /dev/null >> $ ./mandoc -Wall -Tlocale test.1 > /dev/null > $ locale > LC_TIME=hu_HU.UTF-8 Without wide character sipport, that's effectively disabled, see here: > $ ./mandoc -Wall -Tlocale test.1 > /dev/null > main: LC_TIME = C > a2time: LC_TIME = C > a2time: calling strptime() > a2time: LC_TIME = C > a2time: calling strptime() > a2time: LC_TIME = C > a2time: calling strptime() No setlocale() here whatsoever, it doesn't even get compiled in. > TBH, I'm a bit confused. You see, I've used 1.12.3 before, > and I've just upgraded to 1.13.1 recently. Sure, that would raise the question: Why did you not see the problem in 1.12.3, and why do you see it in 1.13.1? But maybe we don't even have to answer that. I just committed a small patch to improve wide character support detection. Can you do a CVS update, re-run ./configure and make, and re-send the output of the same commands as before? Just leave the debugging patches in your checkout directory while doing all that, they are still needed. I hope your lost problem comes back, because i'm still unable to reproduce it, even on 1.13.1. > And because 1.12.3 did not have a ./configure script, > furthermore with 1.13.1 I was not supposed to run > ./configure directly, Yeah, i admit that wiggled a bit back and forth until i got the automatic configuration beat into shape. > it seems to me, something has changed throughout the development > that it seems has been fixed in HEAD, but exists (for me) in 1.13.1. > Does this make sense? No, what you have compiled from HEAD so far does not work for you. Your LC_* settings show you want UTF-8 support, but you don't actually get that. Small consolation it would be that since you lost the feature, you lost the bug contained in it as well. Yours, Ingo -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-28 16:11 ` Ingo Schwarze @ 2014-08-28 16:32 ` LÉVAI Dániel 2014-08-28 17:35 ` Ingo Schwarze 0 siblings, 1 reply; 13+ messages in thread From: LÉVAI Dániel @ 2014-08-28 16:32 UTC (permalink / raw) To: Ingo Schwarze; +Cc: discuss On cs, aug 28, 2014 at 18:11:03 +0200, Ingo Schwarze wrote: [...] > Sure, that would raise the question: Why did you not see the problem > in 1.12.3, and why do you see it in 1.13.1? But maybe we don't > even have to answer that. I just committed a small patch to improve > wide character support detection. Can you do a CVS update, re-run > ./configure and make, and re-send the output of the same commands > as before? Just leave the debugging patches in your checkout > directory while doing all that, they are still needed. I hope your > lost problem comes back, because i'm still unable to reproduce it, > even on 1.13.1. > [...] So here are the new outputs of the given commands: $ ./configure config.log: writing... VERSION="1.13.1" configure.local: no (fully automatic configuration) dirent-namlen: no fgetln: no fts: yes getsubopt: yes mmap: yes reallocarray: no strcasestr: yes strlcat: no strlcpy: no strptime: yes strsep: yes wchar: yes sqlite3: yes sqlite3_errstr: yes ohash: no DBLIB="-lsqlite3" manpath: no config.h: written Makefile.local: written $ ./mandoc -Wall test.1 > /dev/null main: LC_TIME = C a2time: LC_TIME = C a2time: calling strptime() a2time: LC_TIME = C a2time: calling strptime() a2time: LC_TIME = C a2time: calling strptime() $ ./mandoc -Wall -Tlocale test.1 > /dev/null main: LC_TIME = C a2time: LC_TIME = C a2time: calling strptime() a2time: LC_TIME = C a2time: calling strptime() a2time: LC_TIME = C a2time: calling strptime() ascii_init: LC_TIME = C ascii_init: LC_TIME = hu_HU.UTF-8 And my new config.h: ====================8<==================== #ifndef MANDOC_CONFIG_H #define MANDOC_CONFIG_H #if defined(__linux__) || defined(__MINT__) #define _GNU_SOURCE /* See test-*.c what needs this. */ #endif #include <sys/types.h> #include <stdio.h> #define VERSION "1.13.1" #define HAVE_DIRENT_NAMLEN 0 #define HAVE_FGETLN 0 #define HAVE_FTS 1 #define HAVE_GETSUBOPT 1 #define HAVE_MMAP 1 #define HAVE_REALLOCARRAY 0 #define HAVE_STRCASESTR 1 #define HAVE_STRLCAT 0 #define HAVE_STRLCPY 0 #define HAVE_STRPTIME 1 #define HAVE_STRSEP 1 #define HAVE_WCHAR 1 #define HAVE_SQLITE3 1 #define HAVE_SQLITE3_ERRSTR 1 #define HAVE_OHASH 0 #define HAVE_MANPATH 0 #if !defined(__BEGIN_DECLS) # ifdef __cplusplus # define __BEGIN_DECLS extern "C" { # else # define __BEGIN_DECLS # endif #endif #if !defined(__END_DECLS) # ifdef __cplusplus # define __END_DECLS } # else # define __END_DECLS # endif #endif extern char *fgetln(FILE *, size_t *); extern void *reallocarray(void *, size_t, size_t); extern size_t strlcat(char *, const char *, size_t); extern size_t strlcpy(char *, const char *, size_t); #endif /* MANDOC_CONFIG_H */ ====================8<==================== "Unfortunately", CVS HEAD still doesn't emit my original problem when using '-Tlint'. > > it seems to me, something has changed throughout the development > > that it seems has been fixed in HEAD, but exists (for me) in 1.13.1. > > Does this make sense? > > No, what you have compiled from HEAD so far does not work for > you. Your LC_* settings show you want UTF-8 support, but you > don't actually get that. Small consolation it would be that > since you lost the feature, you lost the bug contained in it > as well. Ah, I see! Daniel -- LÉVAI Dániel PGP key ID = 0x83B63A8F Key fingerprint = DBEC C66B A47A DFA2 792D 650C C69B BE4C 83B6 3A8F -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-28 16:32 ` LÉVAI Dániel @ 2014-08-28 17:35 ` Ingo Schwarze 2014-08-28 18:06 ` LÉVAI Dániel 0 siblings, 1 reply; 13+ messages in thread From: Ingo Schwarze @ 2014-08-28 17:35 UTC (permalink / raw) To: LÉVAI Dániel; +Cc: discuss Hi Daniel, LÉVAI Dániel wrote on Thu, Aug 28, 2014 at 06:32:15PM +0200: > So here are the new outputs of the given commands: > > $ ./configure [...] > wchar: yes Good. > manpath: no By the way, that is odd. Given that the bug hides so skillfully, i'd like to pay attention to any clue. You say you are on Linux? Can you show the output of: $ manpath $ which manpath $ man -w manpath $ ls -ald /etc/man* $ man -w man.conf $ man -V > $ ./mandoc -Wall -Tlocale test.1 > /dev/null [...] > ascii_init: LC_TIME = hu_HU.UTF-8 Good. > And my new config.h: [...] > #define HAVE_WCHAR 1 Good. So even though we haven't found your bug yet, your report already resulted in one useful bugfix. > "Unfortunately", CVS HEAD still doesn't emit my original problem > when using '-Tlint'. So we have no choice but to retry with 1.13.1. Please go to your checkout area and do this: $ cvs up -C $ cvs up -r VERSION_1_13_1 $ patch < tmp.patch # the debug patch appended below (for 1.13.1) $ make clean $ make And then we need the usual sequence of commands again... Yours, Ingo Index: main.c =================================================================== RCS file: /cvs/mdocml/main.c,v retrieving revision 1.177 diff -u -p -r1.177 main.c --- main.c 21 Jun 2014 22:24:01 -0000 1.177 +++ main.c 28 Aug 2014 17:33:02 -0000 @@ -21,6 +21,7 @@ #endif #include <assert.h> +#include <locale.h> #include <stdio.h> #include <stdint.h> #include <stdlib.h> @@ -89,6 +90,9 @@ main(int argc, char *argv[]) int options; enum mandoclevel rc; char *defos; + + fprintf(stderr, "main: LC_TIME = %s\n", + setlocale(LC_TIME, NULL)); progname = strrchr(argv[0], '/'); if (progname == NULL) Index: mandoc.c =================================================================== RCS file: /cvs/mdocml/mandoc.c,v retrieving revision 1.83 diff -u -p -r1.83 mandoc.c --- mandoc.c 6 Jul 2014 19:09:00 -0000 1.83 +++ mandoc.c 28 Aug 2014 17:33:02 -0000 @@ -25,6 +25,7 @@ #include <ctype.h> #include <errno.h> #include <limits.h> +#include <locale.h> #include <stdlib.h> #include <stdio.h> #include <string.h> @@ -456,8 +457,11 @@ a2time(time_t *t, const char *fmt, const memset(&tm, 0, sizeof(struct tm)); + fprintf(stderr, "a2time: LC_TIME = %s\n", + setlocale(LC_TIME, NULL)); pp = NULL; #ifdef HAVE_STRPTIME + fprintf(stderr, "a2time: calling strptime()\n"); pp = strptime(p, fmt, &tm); #endif if (NULL != pp && '\0' == *pp) { Index: term_ascii.c =================================================================== RCS file: /cvs/mdocml/term_ascii.c,v retrieving revision 1.27 diff -u -p -r1.27 term_ascii.c --- term_ascii.c 1 Aug 2014 19:25:52 -0000 1.27 +++ term_ascii.c 28 Aug 2014 17:33:02 -0000 @@ -94,9 +94,13 @@ ascii_init(enum termenc enc, char *outop #ifdef USE_WCHAR if (TERMENC_ASCII != enc) { + fprintf(stderr, "ascii_init: LC_TIME = %s\n", + setlocale(LC_TIME, NULL)); v = TERMENC_LOCALE == enc ? setlocale(LC_ALL, "") : setlocale(LC_CTYPE, "en_US.UTF-8"); + fprintf(stderr, "ascii_init: LC_TIME = %s\n", + setlocale(LC_TIME, NULL)); if (NULL != v && MB_CUR_MAX > 1) { p->enc = enc; p->advance = locale_advance; -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-28 17:35 ` Ingo Schwarze @ 2014-08-28 18:06 ` LÉVAI Dániel 2014-08-28 19:49 ` Ingo Schwarze 0 siblings, 1 reply; 13+ messages in thread From: LÉVAI Dániel @ 2014-08-28 18:06 UTC (permalink / raw) To: Ingo Schwarze; +Cc: discuss On cs, aug 28, 2014 at 19:35:22 +0200, Ingo Schwarze wrote: > Hi Daniel, > > LÉVAI Dániel wrote on Thu, Aug 28, 2014 at 06:32:15PM +0200: > > > So here are the new outputs of the given commands: > > > > $ ./configure > [...] > > wchar: yes > > Good. > > > manpath: no > > By the way, that is odd. Given that the bug hides so skillfully, > i'd like to pay attention to any clue. You say you are on Linux? Yes, this is on Linux; a slightly modified version of Slackware. > Can you show the output of: > > $ manpath > $ which manpath > $ man -w manpath Actually, there is no manpath binary on my system, nor manual page for it. > $ ls -ald /etc/man* -rw-r--r-- 1 root root 4729 2014-08-20 17.02.35 /etc/man.conf -rw-r--r-- 1 root root 2038 2014-08-20 15.39.26 /etc/mandoc.conf > $ man -w man.conf /usr/man/man5/man.conf.5.gz > $ man -V man, version 1.6g > So even though we haven't found your bug yet, your report already > resulted in one useful bugfix. Alright! :-) > > "Unfortunately", CVS HEAD still doesn't emit my original problem > > when using '-Tlint'. > > So we have no choice but to retry with 1.13.1. Please go to your > checkout area and do this: > > $ cvs up -C > $ cvs up -r VERSION_1_13_1 > $ patch < tmp.patch # the debug patch appended below (for 1.13.1) > $ make clean > $ make Because for a second I thought I was hallucinating (again.. :P), 'cause I've compile the 1_13_1 tag and the problem was not there, then checked with the 1.13.1 release tarball, and it was not there either, I dug deeper and turns out, that with these latest tests, I didn't use my usual CFLAGS during the compilation. And the culprit for me seems to be: $ cvs up -rVERSION_1_13_1 $ CFLAGS='-DOSNAME=\"Slackware\ Linux\"' make ... $ ./mandoc -Tlint test.1 mandoc: ../mdocml/test.1:1:2: WARNING: cannot parse date, using it verbatim: August 27, 2014 Without the -DOSNAME define, it doesn't emit this warning. I know I'm not crazy! Sort of... :) Sorry for not posting the exact steps I've been using to compile mdocml... rookie mistake.. > > And then we need the usual sequence of commands again... $ ./mandoc -Wall test.1 > /dev/null main: LC_TIME = C a2time: LC_TIME = C a2time: LC_TIME = C a2time: LC_TIME = C mandoc: test.1:1:2: WARNING: cannot parse date, using it verbatim: August 27, 2014 $ ./mandoc -Wall -Tlocale test.1 > /dev/null main: LC_TIME = C a2time: LC_TIME = C a2time: LC_TIME = C a2time: LC_TIME = C mandoc: test.1:1:2: WARNING: cannot parse date, using it verbatim: August 27, 2014 ascii_init: LC_TIME = C ascii_init: LC_TIME = hu_HU.UTF-8 config.h: ===================8<=================== #ifndef MANDOC_CONFIG_H #define MANDOC_CONFIG_H #if defined(__linux__) || defined(__MINT__) # define _GNU_SOURCE /* getsubopt(), strcasestr(), strptime() */ #endif #include <sys/types.h> #include <stdio.h> #define VERSION "1.13.1" #if !defined(__BEGIN_DECLS) # ifdef __cplusplus # define __BEGIN_DECLS extern "C" { # else # define __BEGIN_DECLS # endif #endif #if !defined(__END_DECLS) # ifdef __cplusplus # define __END_DECLS } # else # define __END_DECLS # endif #endif #ifndef HAVE_FGETLN extern char *fgetln(FILE *, size_t *); #endif #ifndef HAVE_GETSUBOPT extern int getsubopt(char **, char * const *, char **); extern char *suboptarg; #endif #ifndef HAVE_REALLOCARRAY extern void *reallocarray(void *, size_t, size_t); #endif #ifndef HAVE_SQLITE3_ERRSTR extern const char *sqlite3_errstr(int); #endif #ifndef HAVE_STRCASESTR extern char *strcasestr(const char *, const char *); #endif #ifndef HAVE_STRLCAT extern size_t strlcat(char *, const char *, size_t); #endif #ifndef HAVE_STRLCPY extern size_t strlcpy(char *, const char *, size_t); #endif #ifndef HAVE_STRSEP extern char *strsep(char **, const char *); #endif #endif /* MANDOC_CONFIG_H */ ===================8<=================== But regarding CVS HEAD, even with the OSNAME define, it won't tell me that warning. Daniel -- LÉVAI Dániel PGP key ID = 0x83B63A8F Key fingerprint = DBEC C66B A47A DFA2 792D 650C C69B BE4C 83B6 3A8F -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-28 18:06 ` LÉVAI Dániel @ 2014-08-28 19:49 ` Ingo Schwarze 2014-08-28 21:07 ` LÉVAI Dániel 0 siblings, 1 reply; 13+ messages in thread From: Ingo Schwarze @ 2014-08-28 19:49 UTC (permalink / raw) To: LÉVAI Dániel; +Cc: discuss Hi Daniel, LÉVAI Dániel wrote on Thu, Aug 28, 2014 at 08:06:17PM +0200: > On cs, aug 28, 2014 at 19:35:22 +0200, Ingo Schwarze wrote: >> LÉVAI Dániel wrote on Thu, Aug 28, 2014 at 06:32:15PM +0200: >>> manpath: no >> By the way, that is odd. Given that the bug hides so skillfully, >> i'd like to pay attention to any clue. You say you are on Linux? > Yes, this is on Linux; a slightly modified version of Slackware. Interesting. I always thought all Linux distros had manpath(1), but apparently, starting a sentence with "All Linux distros..." is bound to end up in an untruth. Well, i sympathize with not using manpath(1). :) So no problem there. > $ CFLAGS='-DOSNAME=\"Slackware\ Linux\"' make Gah. That's not the way to do it. > $ ./mandoc -Tlint test.1 > mandoc: ../mdocml/test.1:1:2: WARNING: cannot parse date, > using it verbatim: August 27, 2014 Indeed. What happens here is that you completely screw up the CFLAGS of ./configure, and all configuration tests fail. So strptime(3) cannot be used when compiling mandoc(1), and hence, no dates whatsoever can be parsed. We were on a completely wrong track with LC_*. The way to set additional CFLAGS in 1.13.1 was to edit the Makefile, uncomment and edit this line right at the top of the file: # Specify this if you want to hard-code the operating system to appear # in the lower-left hand corner of -mdoc manuals. # # CFLAGS += -DOSNAME="\"OpenBSD 5.5\"" > Without the -DOSNAME define, it doesn't emit this warning. I know I'm > not crazy! Sort of... :) Well, as long as you don't break it, ./configure does work... > Sorry for not posting the exact steps I've been using to compile > mdocml... rookie mistake.. You? A rookie? You are not a rookie! "Sir, look, that man over there is an impostor! He's posing as a rookie!" > config.h: [...] > #define VERSION "1.13.1" > > #if !defined(__BEGIN_DECLS) Your problem is right here. No #define HAVE_... whatsoever. > But regarding CVS HEAD, even with the OSNAME define, it won't tell me > that warning. Sure, it has become more robust and ignores the rogue variable now instead of breaking all over the place. In 1.13.2, the way to set OSNAME is documented in the file configure.local.example. # For all settings documented in this file, there are reasonable # defaults and/or the ./configure script attempts autodetection. # Consequently, you only need to create a file ./configure.local # and put any of these settings into it if ./configure autodetection # fails or if you want to make different choices for other reasons. # If autodetection fails, please tell <tech@mdocml.bsd.lv>. # We recommend that you write ./configure.local from scratch and # only put the lines there you need. This file contains examples. # It is not intended as a template to be copied as a whole. [...] # In manual pages written in the mdoc(7) language, the operating system # version is displayed in the page footer line. If an operating system # is specified as an argument to the .Os macro, that is always used. # If the .Os macro has no argument and an operation system is specified # with the mandoc(1) -Ios= command line option, that is used. # Otherwise, the uname(3) library function is called at runtime to find # the name of the operating system. # If you do not want uname(3) to be called but instead want a fixed # string to be used, use the following line: OSNAME="OpenBSD 5.5" Fine, so all is understood now and no more patches are needed. Thanks for reporting the bug you didn't intend to, and don't worry too much that the one you did report turned out to be pilot error - it *was* tricky after all. I also learned something about Slackware. Btw., can you update this: http://slackbuilds.org/slackbuilds/14.1/system/mdocml/ ? Yours, Ingo -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-28 19:49 ` Ingo Schwarze @ 2014-08-28 21:07 ` LÉVAI Dániel 2014-08-29 15:38 ` Ingo Schwarze 0 siblings, 1 reply; 13+ messages in thread From: LÉVAI Dániel @ 2014-08-28 21:07 UTC (permalink / raw) To: Ingo Schwarze; +Cc: discuss On cs, aug 28, 2014 at 21:49:11 +0200, Ingo Schwarze wrote: > > $ CFLAGS='-DOSNAME=\"Slackware\ Linux\"' make > > Gah. That's not the way to do it. > > > $ ./mandoc -Tlint test.1 > > mandoc: ../mdocml/test.1:1:2: WARNING: cannot parse date, > > using it verbatim: August 27, 2014 > > Indeed. What happens here is that you completely screw up the > CFLAGS of ./configure, and all configuration tests fail. > So strptime(3) cannot be used when compiling mandoc(1), > and hence, no dates whatsoever can be parsed. We were on > a completely wrong track with LC_*. > > The way to set additional CFLAGS in 1.13.1 was to edit the > Makefile, uncomment and edit this line right at the top of > the file: > > # Specify this if you want to hard-code the operating system to appear > # in the lower-left hand corner of -mdoc manuals. > # > # CFLAGS += -DOSNAME="\"OpenBSD 5.5\"" > > > Without the -DOSNAME define, it doesn't emit this warning. I know I'm > > not crazy! Sort of... :) > > Well, as long as you don't break it, ./configure does work... [...] But it doesn't seem to break the CFLAGS variable here. Everything stays in it during compile: $ CFLAGS='-DOSNAME=OSNAMEEEE' make rm -f config.log CC="cc" CFLAGS="-DOSNAME=OSNAMEEEE -DUSE_WCHAR -g -DHAVE_CONFIG_H -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings" DBLIB="-lutil -lsqlite3" \ VERSION="1.13.1" ./configure /* RUNNING ./CONFIGURE - SHOULD BE USED ONLY VIA MAKE, READ INSTALL */ cc -DOSNAME=OSNAMEEEE -DUSE_WCHAR -g -DHAVE_CONFIG_H -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings -c -o eqn_html.o eqn_html.c cc -DOSNAME=OSNAMEEEE -DUSE_WCHAR -g -DHAVE_CONFIG_H -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings -c -o html.o html.c ... .. . ^^^ Those are the same compiler flags that would have been there without my CFLAGS "override" on the command line. Furthermore, the problem also remains when I edit only the Makefile: $ fgrep OSNAME ./Makefile # CFLAGS += -DOSNAME="\"OpenBSD 5.5\"" CFLAGS += -DOSNAME="\"Slackware\ Linux\"" $ make rm -f config.log CC="cc" CFLAGS="-DOSNAME="\"Slackware\ Linux\"" -DUSE_WCHAR -g -DHAVE_CONFIG_H -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings" DBLIB="-lutil -lsqlite3" \ VERSION="1.13.1" ./configure /* RUNNING ./CONFIGURE - SHOULD BE USED ONLY VIA MAKE, READ INSTALL */ cc -DOSNAME="\"Slackware\ Linux\"" -DUSE_WCHAR -g -DHAVE_CONFIG_H -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings -c -o eqn_html.o eqn_html.c cc -DOSNAME="\"Slackware\ Linux\"" -DUSE_WCHAR -g -DHAVE_CONFIG_H -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings -c -o html.o html.c ... .. . $ ./mandoc -Tlint test.1 mandoc: test.1:1:2: WARNING: cannot parse date, using it verbatim: August 27, 2014 Only in the absence of the OSNAME define does mandoc parse the given date. If I could "screw up" the CFLAGS of configure, then eg. a simple CFLAGS=-O2 would do that too, but it doesn't; just the -DOSNAME define. > > But regarding CVS HEAD, even with the OSNAME define, it won't tell me > > that warning. > > Sure, it has become more robust and ignores the rogue variable now > instead of breaking all over the place. > > In 1.13.2, the way to set OSNAME is documented in the file > configure.local.example. [...] Okay, seems clear, I'll keep this in mind when upgrading in the future. [...] > Btw., can you update this: > http://slackbuilds.org/slackbuilds/14.1/system/mdocml/ > ? Sure thing, but I need to get this problem out of the way :P Daniel -- LÉVAI Dániel PGP key ID = 0x83B63A8F Key fingerprint = DBEC C66B A47A DFA2 792D 650C C69B BE4C 83B6 3A8F -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-28 21:07 ` LÉVAI Dániel @ 2014-08-29 15:38 ` Ingo Schwarze 2014-08-30 8:57 ` LÉVAI Dániel 0 siblings, 1 reply; 13+ messages in thread From: Ingo Schwarze @ 2014-08-29 15:38 UTC (permalink / raw) To: LÉVAI Dániel; +Cc: discuss Hi Daniel, LÉVAI Dániel wrote on Thu, Aug 28, 2014 at 11:07:31PM +0200: > On cs, aug 28, 2014 at 21:49:11 +0200, Ingo Schwarze wrote: >> Daniel Levai wrote: >>> $ CFLAGS='-DOSNAME=\"Slackware\ Linux\"' make >> Gah. That's not the way to do it. [...] >> Indeed. What happens here is that you completely screw up the >> CFLAGS of ./configure, and all configuration tests fail. That sentence is important. Look at config.log. > But it doesn't seem to break the CFLAGS variable here. > Everything stays in it during compile: It breaks configure, not compile. > $ CFLAGS='-DOSNAME=OSNAMEEEE' make That's going to break badly. mdoc_validate.c is not going to compile. Quotes are missing here. Without the quotes, the failure mode is different. Now ./configure will work fine, but compiling will break. It will still fail. > Furthermore, the problem also remains when I edit only the Makefile: > > $ fgrep OSNAME ./Makefile > # CFLAGS += -DOSNAME="\"OpenBSD 5.5\"" > CFLAGS += -DOSNAME="\"Slackware\ Linux\"" > $ make OUCH. You are right. Passing CFLAGS into the Makefile works (contrary to what i thought at first), what is broken is passing them *from* the Makefile to ./configure. Quoting is screwed in that passage, and i see no way to fix that. > [...] >> Btw., can you update this: >> http://slackbuilds.org/slackbuilds/14.1/system/mdocml/ >> ? > Sure thing, but I need to get this problem out of the way :P Not really; the Slackware port doesn't set OSNAME, and if you update it to 1.13.1, i'd recommend to stick to that for now. You can then introduce it for 1.13.2 if you think it should be there. For your private use, given that the build system was mostly rewritten for 1.13.2 anyway, i'm not going to invent horrenduous workarounds for OSNAME in 1.13.1; we have to accept that OSNAME is somewhat broken in 1.13.1. A simple workaround goes like this: 1. Make sure the OSNAME line is commented out in the Makefile. All other variables should already be set as desired. 2. Run "make clean". 3. Run "make config.h". 4. Check that config.h and config.log look reasonable. (They do on my Linux box.) 5. Edit the Makefile and uncomment (enable) the OSNAME line. 6. Run "make". Watch closely and be sure that ./configure is *not* run at this time. 7. Test "./mandoc -Wall -Tlocale ..." Admittedly, that's slightly ugly, but short of releasing 1.13.2, i cannot think of a better fix, and 1.13.2 isn't quite ready yet. If you *must* set OSNAME in the port, something like the following would be needed: - rename CFLAGS to CONFLAGS (or something) in Makefile (6 definition lines) - use CONFLAGS in the "config.h:" rule - set CFLAGS = $(CONFLAGS) -DOSNAME="\"...\"" (will get picked up by automatic rules) Like that, compile will use OSNAME and configure will not. Yours, Ingo -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: "cannot parse date" for a seemingly valid .Dd parameter 2014-08-29 15:38 ` Ingo Schwarze @ 2014-08-30 8:57 ` LÉVAI Dániel 0 siblings, 0 replies; 13+ messages in thread From: LÉVAI Dániel @ 2014-08-30 8:57 UTC (permalink / raw) To: Ingo Schwarze; +Cc: discuss On p, aug 29, 2014 at 17:38:00 +0200, Ingo Schwarze wrote: [...] > > Furthermore, the problem also remains when I edit only the Makefile: > > > > $ fgrep OSNAME ./Makefile > > # CFLAGS += -DOSNAME="\"OpenBSD 5.5\"" > > CFLAGS += -DOSNAME="\"Slackware\ Linux\"" > > $ make > > OUCH. > > You are right. Passing CFLAGS into the Makefile works (contrary > to what i thought at first), what is broken is passing them *from* > the Makefile to ./configure. Quoting is screwed in that passage, > and i see no way to fix that. I see, all right. > > [...] > >> Btw., can you update this: > >> http://slackbuilds.org/slackbuilds/14.1/system/mdocml/ > >> ? > > > Sure thing, but I need to get this problem out of the way :P > > Not really; the Slackware port doesn't set OSNAME, and if > you update it to 1.13.1, i'd recommend to stick to that for now. > You can then introduce it for 1.13.2 if you think it should > be there. I think you've missed that in the port [1] (or slackbuild, as the kids call it :-) ). The current sb on sb.org with version 1.12.3 sets the OSNAME, that's why it was/is being used in the updated 1.13.1 version. > For your private use, given that the build system was mostly > rewritten for 1.13.2 anyway, i'm not going to invent horrenduous > workarounds for OSNAME in 1.13.1; we have to accept that OSNAME > is somewhat broken in 1.13.1. > > A simple workaround goes like this: > > 1. Make sure the OSNAME line is commented out in the Makefile. > All other variables should already be set as desired. > 2. Run "make clean". > 3. Run "make config.h". > 4. Check that config.h and config.log look reasonable. > (They do on my Linux box.) > 5. Edit the Makefile and uncomment (enable) the OSNAME line. > 6. Run "make". > Watch closely and be sure that ./configure is *not* run > at this time. > 7. Test "./mandoc -Wall -Tlocale ..." Ah, actually, I get this! :) > Admittedly, that's slightly ugly, In my opinion, not at all; it's logical given its behavior. > but short of releasing 1.13.2, i cannot think of a better fix, and > 1.13.2 isn't quite ready yet. > If you *must* set OSNAME in the port, something like the > following would be needed: > - rename CFLAGS to CONFLAGS (or something) in Makefile > (6 definition lines) > - use CONFLAGS in the "config.h:" rule > - set CFLAGS = $(CONFLAGS) -DOSNAME="\"...\"" > (will get picked up by automatic rules) > > Like that, compile will use OSNAME and configure will not. I think I'll just use an OSNAME with 1.13.1 without spaces, eg. like \"Slackware\", and I'll return to the previous one when 1.13.2 comes out. Ingo, thanks for you help and patience, Daniel [1] - http://slackbuilds.org/slackbuilds/14.1/system/mdocml/mdocml.SlackBuild -- LÉVAI Dániel PGP key ID = 0x83B63A8F Key fingerprint = DBEC C66B A47A DFA2 792D 650C C69B BE4C 83B6 3A8F -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2014-08-30 8:57 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2014-08-27 14:58 "cannot parse date" for a seemingly valid .Dd parameter LÉVAI Dániel 2014-08-27 15:07 ` Kristaps Dzonsons 2014-08-27 15:15 ` LÉVAI Dániel 2014-08-28 0:43 ` Ingo Schwarze 2014-08-28 8:39 ` LÉVAI Dániel 2014-08-28 16:11 ` Ingo Schwarze 2014-08-28 16:32 ` LÉVAI Dániel 2014-08-28 17:35 ` Ingo Schwarze 2014-08-28 18:06 ` LÉVAI Dániel 2014-08-28 19:49 ` Ingo Schwarze 2014-08-28 21:07 ` LÉVAI Dániel 2014-08-29 15:38 ` Ingo Schwarze 2014-08-30 8:57 ` LÉVAI Dániel
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).