Newsgroup: it.comp.os.linux.software
Titolo: FLEX (REJECT) provoca errori su WWWOFFLE 2.5d (lungo)

Ho una debian 2.1 con kernel 2.038 Ho compilato ed installato wwwoffle 2.5d
e lo utilizzo, con le solite opzioni:
  enable-modify-html = yes
  add-cache-info = yes
in modo da avere in fondo alla pagina l'indicazione della data.
Alcuni siti mi danno errore, che sparisce se disabilito la modifica della
pagina. Ad esempio:
 
http://www.pluto.linux.it/ildp/LDR/
In questi casi e' presente un lungo testo fra i tag <pre> e </pre>.
Abilitando il debug vedo che ho un errore:
Child wwwoffles exited with status 2
input buffer overflow, can't enlarge buffer because scanner uses REJECT
L'autore mi ha consigliato di disabilitare REJECT su FLEX, dicendo che tra
l'altro penalizza pesantemente le prestazioni.
Ottimo consiglio, ma come applicarlo? La mia conoscenza di flex e' a zero.
Ho letto i manuali e fatto delle prove sul file implicato nell'errore e che
e' generato da flex, ma non riesco a venirne a capo. Comunque faccia, flex
utilizza sempre REJECT.
Il file /usr/doc/flex/NEWS.gz dice:
   Flex scans your rule actions to determine whether you use the
   REJECT or yymore features (this is not new).  Two %options can be
   used to override its decision, either by setting them to indicate
   the feature is indeed used, or unsetting them to indicate it
   actually is not used:
   reject
   yymore
Non serve a nulla porre la direttiva:
  "%option noreject"
all'inizio del file "html.l" da cui deriva il file htmlmodify.c.
Facendo "grep REJECT htmlmodify.c" si ha:
#define YY_USES_REJECT
#define REJECT \
#ifdef YY_USES_REJECT
"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
Il file /usr/doc/flex/NEWS.gz dice:
  flex not support old directives "uset or unused":
  ......
  One can force the presence or absence of
  REJECT by adding a line in the first section of the form
  "%used REJECT" or "%unused REJECT".
La mia debian 2.1 usa flex 2.5.4 che non accetta questa opzione.
Da una vecchia distribuzione di linux del 94 ho prelevato la versione 2.4.7
(e le sue librerie). Accetta quella opzione, ma la definisce "deprecated" e
quindi non cambia nulla, REJECT non vuol saperne di andar via. 
Che fare per impedire a FLEX di utilizzare REJECT?
Grazie, Remo

   
http://www.pluto.linux.it/ildp/LDR/
I have tried this site and I do get the same errors that you get.
I have re-optimised the htmlmodify.l code as shown in the patch below
and I don't have the problems now.
-------------------- htmlmodify.l patch --------------------
*** htmlmodify.l	2000/01/15 19:32:33	1.13
--- htmlmodify.l	2000/03/14 19:12:21	1.14
***************
*** 464,470 ****
 
   /* Tags */
 
! <TAG_START>"/"?{K}+/({W}|">") { BEGIN(TAG);
htmlmodify_yylval=htmlmodify_yytext; return(LEX_TAG_BEGIN); }
  <TAG_START>(.|\n)           { BEGIN(INITIAL); YY_OUTPUT(string);
YY_OUTPUT(htmlmodify_yytext); }
 
  <TAG>">"                    { BEGIN(INITIAL); htmlmodify_yylval="";
return(LEX_TAG_END); }
--- 464,471 ----
 
   /* Tags */
 
! <TAG_START>"/"?{K}+/{W}     { BEGIN(TAG);
htmlmodify_yylval=htmlmodify_yytext; return(LEX_TAG_BEGIN); }
! <TAG_START>"/"?{K}+/">"     { BEGIN(TAG);
htmlmodify_yylval=htmlmodify_yytext; return(LEX_TAG_BEGIN); }
  <TAG_START>(.|\n)           { BEGIN(INITIAL); YY_OUTPUT(string);
YY_OUTPUT(htmlmodify_yytext); }
 
  <TAG>">"                    { BEGIN(INITIAL); htmlmodify_yylval="";
return(LEX_TAG_END); }
-------------------- htmlmodify.l patch --------------------
-- 
Andrew.