Summary: | man:groff(7) cannot show the request names | ||
---|---|---|---|
Product: | [Unmaintained] kio | Reporter: | Nicolas Goutte <nicolasg> |
Component: | man | Assignee: | Unassigned bugs mailing-list <unassigned-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Nicolas Goutte
2005-05-21 16:06:22 UTC
SVN commit 416452 by goutte: First step of supporting string variables with long names (long > 2 chars) (For now, it just put in red, when the page wants such a variable.) CCBUG:106067 M +55 -13 trunk/KDE/kdebase/kioslave/man/man2html.cpp SVN commit 417884 by goutte: Start working on long names and on unifying string and macro definitions: - create one class and a QMap to store string and macro definitions. - port strings to this new class and QMap - allow strings with long names CCBUG:106067 It fixes bug 106067 when taken to the letter. However there is still plenty to do for displaying groff(7) correctly, for example macros with long names. (Note: this breaks -DSIMPLE_MAN2HTML (temporarily)) M +171 -108 man2html.cpp SVN commit 417923 by goutte: - Define macros in the same QMap than strings - Macros can have long names now I have no idea if it is in the right direction or not, as groff(7) looks even worser than before. CCBUG:106067 M +96 -116 man2html.cpp SVN commit 418050 by goutte: Fix the bug when calling macros (The first line was not preceed by a line feed, so the first request was ignored.) (groff(7) looks now again better) CCBUG:106067 M +42 -28 man2html.cpp SVN commit 418213 by goutte: Improve the groff basic support: - make troff/nroff switchable by the requests .troff and .nroff (The mode is therefore not compilable anymore by a #define) - put the strings declared by man(7) and mdoc(7) as strings and not as special character anymore (It was a mismatch that I had unfortunately introduced.) - add the missing strings declared by mdoc(7) - allow strings to be called by \* in its three modes: single letter, two letters, long name - do not put the string name in red when it is not found, groff(7) tells that an undefined string is empty. - support for $0 (the name of the macro) - allow parameters to be called by \$ in its three modes: single digit, two digits, any number of digits. (But we are still limited in the numbers of arguments that we can process.) - define .als ("ALias String"), however temporarily not as hard link but as simple copy. (As Qt4 has other classes than Qt3, it is better to postpone it.) - fix .rn ("ReName string"), as the second parameter was not parsed. CCBUG:106067 M +288 -109 man2html.cpp SVN commit 418559 by goutte: Improve the groff basic support: - use a QMap to define number registers - add a predefined string \*[.KDE_VERSION_STRING] giving the KDE version - new predefined number registers \n[year] \n(yr \n(mo \n(dy \n(dw (year Y2K, year non-Y2K, month, day, day of week) - replace argument list by a QValueList<char*> - add support for \$* and \$@ ("all arguments") - add read-only number registers, like \n[.$] or the 3 components of the KDE version. - try to read all variants of \n including long names and auto-increments indicated after \n( or after \n[ - fix .nr to allow normal increments (Note: \R is still missing) - define .rr and .rnn (remove and rename number registers) - define .aln ("ALias Number register"), however temporarily not as hard link but as simple copy. (As Qt4 has other classes than Qt3, it is better to postpone it.) - define .shift (to shift arguments) - be careful that the code allows a word list longer than 20 (even if probably no macro has so much parameters) - fix a few small details CCBUG:106067 (The document looks again worser; what is really missing now is the request .while) M +414 -68 man2html.cpp [POSSIBLY UNSAFE: scanf] SVN commit 418672 by goutte: Improve the groff basic support: - add support for the request .while (yes, finally!) - allow more characters for an indentifier (nearly whole printable ASCII) - be more careful when parsing an identifier as parameter of a request (There was an off-by-one error, which could make that the next line was skipped, because the right end of line was already passed.) - no need to parse the first \n when calling a macro (This too is an off-by-one-error. The first \n is needed for parsing the next character, we do not need to parse it itself.) - do not use puts in KDE mode for the request .ab - a few kdDebugs less - use the function skip_till_newline whne needed to avoid off-by-one errors - for the request .shift, be careful when parsing the argument not to pass the end of line (again off-by-one error). - remove function that was under #if 0 - add my copyright (as I have now modified quite much) - fix a few small details CCBUG:106067 (The document looks much much better.) M +165 -150 man2html.cpp SVN commit 418902 by goutte: Improve the groff basic support: - define characters by a QMap too (nearly like strings) (The predefined one are still loaded from the old structure.) - use QCString where possible, especially to avoid static char* buffers to pass strings between functions - allow long name characters with \[name] and \C'name' - allow the long name of characters or strings is defined by a string - make a versionof scan_expression that does not call out_html but that returns the string as QCString CCBUG:106067 (Only small progress this time.) M +327 -163 man2html.cpp SVN commit 419104 by goutte: Improve the groff basic support: - fix a few of the special characters (by looking into Unicode list) - change the way of setting fonts, always as HTML <span> (The new implementation has the drawback not to have any font number anymore. So may be we need to go back a little in future, assuming needing \n[.f] ) (We do not use/abuse the KDE CSS classes as fonts anymore.) - as we do not know .ftr (font translation) offer a few other fonts too (The main ones of the ps output of groff) (Sorry, still no Japanese fonts, as I have no idea how to test. But Qt might be smarter anyway.) - fix the off-by-one easy-to-do error in scan_escape_direct and friends - fix single letter string variables and number registers. - new code for the font setting escape \f (including long names now) - fix \\ for getting a backspace - use HTML <small> for the corresponding requests .SM and .SB - a few other minor details CCBUG:106067 (It looks rather good this time, except the .while condition problem, which still polutes the text with >=2 here and there.) M +292 -147 man2html.cpp SVN commit 421114 by goutte: A few basic groff improvements: - do not assign a char directly to QCString (Doing so is asking for trouble, as it does not work correctly) - fix font name handling (The logic of the code for checking if it is a number or a name was wrong.) - ` does not exist in HTML - use cerr as kdDebug replacement in SIMPLE_MAN2HTML mode - remove the #if 0-ed definition of what were probably (planned to be) internal number registers - try to allow a in a man link (not finished, as I found the major problem of QCString before being able to finishe this part of code; for bug #85753). - little detail change the <meta> from "Mandoc-Type" to "ROFF-Type" (It would be nice if one day the man kioslave could do other ROFF types than man(7) or mdoc(7) pages CCBUG:106067 (With font changing working now, this looks even better. The major problem is still the .while condition.) M +48 -35 man2html.cpp SVN commit 421319 by goutte: Fix the scanning of conditions to allow a space if the condition is between parentheses CCBUG:106067 This fixes the .while condition problem. The remain big problen is the generated HTML... do not know how to do it ith the current code. :-( M +11 -4 man2html.cpp --- trunk/KDE/kdebase/kioslave/man/man2html.cpp #421318:421319 @@ -2303,7 +2303,7 @@ return c; } -static char *scan_expression(char *c, int *result) +static char *scan_expression( char *c, int *result, const unsigned int numLoop ) { int value=0,value2,sign=1,opex=0; char oper='c'; @@ -2350,11 +2350,11 @@ if (tcmp) c=c+3; c++; } else { - while (*c && !isspace(*c) && *c!=')' && opex >= 0) { + while (*c && ( !isspace(*c) || ( numLoop > 0 ) ) && *c!=')' && opex >= 0) { opex=0; switch (*c) { case '(': - c=scan_expression(c+1, &value2); + c = scan_expression( c + 1, &value2, numLoop + 1 ); value2=sign*value2; opex=1; break; @@ -2446,6 +2446,11 @@ return c; } +static char *scan_expression(char *c, int *result) +{ + return scan_expression( c, result, 0 ); +} + static void trans_char(char *c, char s, char t) { char *sl=c; @@ -2745,8 +2750,10 @@ { // Unlike for a normal macro, we have the condition at start, so we do not need to prepend extra bytes char* liveloop = qstrdup( macro.data() ); - kdDebug(7107) << "Scanning .while condition" << endl; + kdDebug(7107) << "Scanning .while condition" << endl; + kdDebug(7101) << "Loop macro " << liveloop << endl; char* end_expression = scan_expression( liveloop, &result ); + kdDebug(7101) << "After " << end_expression << endl; if ( result ) { kdDebug(7107) << "New .while iteration" << endl; SVN commit 1212624 by mkoller: CCBUG: 238534 CCBUG: 105765 BUG: 106067 BUG: 195241 BUG: 247012 Fix a lot of HTML-generation bugs by implementing some additional macros, escape sequences, etc, etc. Also start to make the code more readable and introduce more Qt/C++ while eliminating old C code, which is horrible to maintain. The request keywords are now looked up by a gperf hash function. The generated gperf file is committed, so that noone has to rely on the existence of gperf on the build machine. If I broke the rendering of some man pages, please inform me. M +1 -1 CMakeLists.txt M +586 -614 man2html.cpp A request_gperf.c [License: GENERATED FILE] A request_hash.cpp [License: UNKNOWN] A request_hash.h [License: UNKNOWN] A requests.gperf M +4 -1 tests/CMakeLists.txt WebSVN link: http://websvn.kde.org/?view=rev&revision=1212624 SVN commit 1212666 by mkoller: Backport from trunk: CCBUG: 238534 CCBUG: 105765 CCBUG: 106067 CCBUG: 195241 CCBUG: 247012 Fix a lot of HTML-generation bugs by implementing some additional macros, escape sequences, etc, etc. Also start to make the code more readable and introduce more Qt/C++ while eliminating old C code, which is horrible to maintain. The request keywords are now looked up by a gperf hash function. The generated gperf file is committed, so that noone has to rely on the existence of gperf on the build machine. If I broke the rendering of some man pages, please inform me. M +1 -1 CMakeLists.txt M +586 -614 man2html.cpp A request_gperf.c [License: GENERATED FILE] A request_hash.cpp [License: LGPL (v2+)] A request_hash.h [License: LGPL (v2+)] A requests.gperf M +4 -1 tests/CMakeLists.txt WebSVN link: http://websvn.kde.org/?view=rev&revision=1212666 |