From 1129ef019f10c8c241227f9e787fe6616f74781c Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Fri, 6 Nov 2015 14:40:23 +0000 Subject: makedoc: Don't interpret license text as a command Align makedoc's iscommand() with it's documentation, and don't allow commands to contain a space. A command is a line containing only a sequence of capital letters or '_', followed by optional spaces. This prevents "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE" (the only line in the license text which consists of only capitals and spaces, without any punctuation) from being interepreted as a makedoc command, leading to: "Can't find IMPLIED" "warning, IMPLIED is not recognised" being emitted by makedoc, (which is normally un-noticed because makedoc's stderr is redirected to a .ref file) 2015-11-06 Jon Turney * doc/makedoc.c (iscommand): Only allow commands to have trailing spaces, not space separated words. Signed-off-by: Jon Turney --- newlib/ChangeLog | 5 +++++ newlib/doc/makedoc.c | 19 +++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) (limited to 'newlib') diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 34b0c79..bc0ec24 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,5 +1,10 @@ 2015-11-06 Jon Turney + * doc/makedoc.c (iscommand): Only allow commands to have trailing + spaces, not space separated words. + +2015-11-06 Jon Turney + * libm/mathfp/s_acos.c: Fix QUICKREF. * libm/mathfp/e_acosh.c: Ditto. * libm/math/w_asin.c: Ditto. diff --git a/newlib/doc/makedoc.c b/newlib/doc/makedoc.c index 7188642..96362f7 100644 --- a/newlib/doc/makedoc.c +++ b/newlib/doc/makedoc.c @@ -777,14 +777,18 @@ DEFUN( iscommand,(ptr, idx), unsigned int idx) { unsigned int len = 0; - while (at(ptr,idx)) { - if (isupper(at(ptr,idx)) || at(ptr,idx) == ' ' || - at(ptr,idx) == '_') - { + + while (isupper(at(ptr,idx)) || at(ptr,idx) == '_') { len++; idx++; - } - else if(at(ptr,idx) == '\n') + } + + while (at(ptr,idx) == ' ') { + len++; + idx++; + } + + if(at(ptr,idx) == '\n') { /* The length check will never fail on a real command * because the commands are screened as the definitions file @@ -792,8 +796,7 @@ DEFUN( iscommand,(ptr, idx), if (len >= MIN_CMDLEN) return 1; return 0; } - else return 0; - } + return 0; } -- cgit v1.1