<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to bugs</title><link>https://sourceforge.net/p/jawk/bugs/</link><description>Recent changes to bugs</description><atom:link href="https://sourceforge.net/p/jawk/bugs/feed.rss" rel="self"/><language>en</language><lastBuildDate>Fri, 16 Aug 2013 09:13:10 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/jawk/bugs/feed.rss" rel="self" type="application/rss+xml"/><item><title>#6 Nonstandard Getline behavior</title><link>https://sourceforge.net/p/jawk/bugs/6/?limit=25#f101</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;I have a fix resolving the issue. How can I contribute to the source?&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter</dc:creator><pubDate>Fri, 16 Aug 2013 09:13:10 -0000</pubDate><guid>https://sourceforge.net5b6b09a14f1520235c7f8b09ab443034544308e1</guid></item><item><title>#4 Escaped '/' in regexp throws exception</title><link>https://sourceforge.net/p/jawk/bugs/4/?limit=25#67ed</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi &lt;br /&gt;
I have also experimented this issue.&lt;br /&gt;
Please find here after the description of the "ugly" patch I did on my side:&lt;br /&gt;
In readRegexp() from AwkParser.java I just add a check to make sure an escaped / is taken into account (lines FIXME: are the one I added)&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="s-Atom"&gt;private&lt;/span&gt; &lt;span class="s-Atom"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;readRegexp&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
   &lt;span class="s-Atom"&gt;throws&lt;/span&gt; &lt;span class="nv"&gt;IOException&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="s-Atom"&gt;should&lt;/span&gt; &lt;span class="s-Atom"&gt;only&lt;/span&gt; &lt;span class="s-Atom"&gt;contain&lt;/span&gt; &lt;span class="s-Atom"&gt;nothing&lt;/span&gt; &lt;span class="s-Atom"&gt;or&lt;/span&gt; &lt;span class="s-Atom"&gt;=&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s-Atom"&gt;depending&lt;/span&gt; &lt;span class="s-Atom"&gt;on&lt;/span&gt; &lt;span class="s-Atom"&gt;whether&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="s-Atom"&gt;starting&lt;/span&gt; &lt;span class="s-Atom"&gt;with&lt;/span&gt; &lt;span class="s-Atom"&gt;/...&lt;/span&gt; &lt;span class="s-Atom"&gt;or&lt;/span&gt; &lt;span class="s-Atom"&gt;/=...&lt;/span&gt;
&lt;span class="s-Atom"&gt;assert&lt;/span&gt; &lt;span class="s-Atom"&gt;regexp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;length&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="p"&gt;||&lt;/span&gt; &lt;span class="s-Atom"&gt;regexp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;length&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nf"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;c&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="s-Atom"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="s-Atom"&gt;c&lt;/span&gt; &lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;'/'&lt;/span&gt; &lt;span class="s-Atom"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="s-Atom"&gt;c&lt;/span&gt; &lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;'\n'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cm"&gt;/* FIXME:Just to be able to to include / in the pattern &lt;/span&gt;
&lt;span class="cm"&gt;     * FIXME:In case of \ force to read the one character more:&lt;/span&gt;
&lt;span class="cm"&gt;     * FIXME:- if second is not /, append the two characters to regexp buffer&lt;/span&gt;
&lt;span class="cm"&gt;     * FIXME:- if a / is read, only the / is append. */&lt;/span&gt;
    &lt;span class="nf"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;c&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s-Atom"&gt;'\\'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;                          &lt;span class="cm"&gt;/* FIXME: */&lt;/span&gt;
        &lt;span class="s-Atom"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;               &lt;span class="cm"&gt;/* FIXME: */&lt;/span&gt;
        &lt;span class="nf"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;c&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="s-Atom"&gt;='/'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="s-Atom"&gt;regexp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;'\\'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cm"&gt;/* FIXME: */&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;                                        &lt;span class="cm"&gt;/* FIXME: */&lt;/span&gt;
    &lt;span class="s-Atom"&gt;regexp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="s-Atom"&gt;char&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="s-Atom"&gt;c&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="s-Atom"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="s-Atom"&gt;completely&lt;/span&gt; &lt;span class="s-Atom"&gt;bypass&lt;/span&gt; &lt;span class="s-Atom"&gt;\r's&lt;/span&gt;
&lt;span class="s-Atom"&gt;    while(c == '\r') c = reader.read();&lt;/span&gt;
&lt;span class="s-Atom"&gt;}&lt;/span&gt;
&lt;span class="s-Atom"&gt;if (c &amp;lt; 0 || c == '\n')&lt;/span&gt;
&lt;span class="s-Atom"&gt;    throw new LexerException(&amp;quot;Unterminated regular expression: &amp;quot;+regexp);&lt;/span&gt;
&lt;span class="s-Atom"&gt;c = reader.read();&lt;/span&gt;
&lt;span class="s-Atom"&gt;// completely bypass \r's&lt;/span&gt;
&lt;span class="nf"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;c&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s-Atom"&gt;'\r'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="s-Atom"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Terrot Francois</dc:creator><pubDate>Thu, 06 Jun 2013 15:44:25 -0000</pubDate><guid>https://sourceforge.net80ac5ffe3e28e8793e60d83988d356d436568e27</guid></item><item><title>Awk Error Not Reported (&amp; Caught)</title><link>https://sourceforge.net/p/jawk/bugs/7/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi ...&lt;/p&gt;
&lt;p&gt;The problem is that the jawk interpreter fails on the attached script -- The script is a mess with cut-n-pastes from old scripts to build a new script.&lt;/p&gt;
&lt;p&gt;Jawk just crashes.  The same script runs to completion with gnu gawk (latest version). and the code itself is quite old.  So if there's a typo, etc gawk should catch it too.&lt;/p&gt;
&lt;p&gt;Stack dump:&lt;/p&gt;
&lt;p&gt;org.jawk.frontend.AwkParser$AST$SemanticException: function org.jawk.frontend.AwkParser$FunctionProxy@57102fab (RESET) not defined (line: 449)&lt;br /&gt;
at org.jawk.frontend.AwkParser$FunctionCall_AST.semanticAnalysis(AwkParser.java:3016)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1844)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1844)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1844)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.frontend.AwkParser$AST.semanticAnalysis(AwkParser.java:1845)&lt;br /&gt;
at org.jawk.Awk.invoke(Awk.java:164)&lt;br /&gt;
at org.jawk.Awk.main(Awk.java:105)&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">aplatypus</dc:creator><pubDate>Tue, 16 Apr 2013 11:57:56 -0000</pubDate><guid>https://sourceforge.net82a5a7f680e903c632b4c00f25ecc2b7ae6682c9</guid></item><item><title>Nonstandard Getline behavior</title><link>https://sourceforge.net/p/jawk/bugs/6/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;getline function changes variables that it should not according to &lt;a href="http://www.gnu.org/software/gawk/manual/html_node/Getline-Summary.html#Getline-Summary" rel="nofollow"&gt;http://www.gnu.org/software/gawk/manual/html_node/Getline-Summary.html#Getline-Summary&lt;/a&gt;&lt;br /&gt;
I used the function in the form&lt;br /&gt;
command | getline var&lt;br /&gt;
but at least FILENAME and NF were changed. For my application of the type&lt;br /&gt;
/pattern/ {&lt;br /&gt;
cmd = "wget -t 1 -nv " $1 " 2&amp;gt;&amp;amp;1"&lt;br /&gt;
while ( (cmd | getline line) &amp;gt; 0 )&lt;br /&gt;
result = result " " line&lt;br /&gt;
close(cmd)&lt;br /&gt;
}&lt;br /&gt;
it had the consequence of stopping the awk script after processing one line of the input file instead of processing each line. The script works correctly with Gawk.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yanlend</dc:creator><pubDate>Sat, 16 Feb 2013 12:40:55 -0000</pubDate><guid>https://sourceforge.net5c2c93b24f62d190595108322df8f26888365f08</guid></item><item><title>Bracket not taken into account in math expression</title><link>https://sourceforge.net/p/jawk/bugs/5/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The mathematic expression:&lt;/p&gt;
&lt;p&gt;a=(i-j)/(k*m)&lt;/p&gt;
&lt;p&gt;with i=206&lt;br /&gt;
j=6&lt;br /&gt;
k=7&lt;br /&gt;
m=2&lt;/p&gt;
&lt;p&gt;gives 57.1429 but it should be 14.2857&lt;/p&gt;
&lt;p&gt;Bracket are not taken into account for operation priority.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;millette_jocelyn@hotmail.com&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Tue, 18 Nov 2008 23:00:49 -0000</pubDate><guid>https://sourceforge.netd1ff050b57cb497429db73b610da9e5789744483</guid></item><item><title>Escaped '/' in regexp throws exception</title><link>https://sourceforge.net/p/jawk/bugs/4/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;To match a '/' in a regexp in AWK you have to escape it as follows: &lt;br /&gt;
\/&lt;/p&gt;
&lt;p&gt;But doing so causes Jawk to throw an exception.&lt;/p&gt;
&lt;p&gt;eg the following AWK script (which is looking for /cgi):&lt;/p&gt;
&lt;p&gt;/\/cgi/ { print }&lt;/p&gt;
&lt;p&gt;causes this:&lt;/p&gt;
&lt;p&gt;Exception in thread "main" org.jawk.frontend.AwkParser$ParserException: Expecting an ID.  Got (299): { (line 0)&lt;br /&gt;
at org.jawk.frontend.AwkParser.SYMBOL(AwkParser.java:1173)&lt;br /&gt;
at org.jawk.frontend.AwkParser.FACTOR(AwkParser.java:1097)&lt;br /&gt;
at org.jawk.frontend.AwkParser.FACTOR_FOR_INCDEC(AwkParser.java:1016)&lt;br /&gt;
at org.jawk.frontend.AwkParser.FACTOR_FOR_IN(AwkParser.java:983)&lt;br /&gt;
at org.jawk.frontend.AwkParser.FACTOR_FOR_GETLINE(AwkParser.java:967)&lt;br /&gt;
at org.jawk.frontend.AwkParser.TERM(AwkParser.java:939)&lt;br /&gt;
at org.jawk.frontend.AwkParser.TERM(AwkParser.java:947)&lt;br /&gt;
at org.jawk.frontend.AwkParser.EXPRESSION(AwkParser.java:871)&lt;br /&gt;
at org.jawk.frontend.AwkParser.COMPARISON_EXPRESSION(AwkParser.java:853)&lt;br /&gt;
at org.jawk.frontend.AwkParser.LE2_EXPRESSION(AwkParser.java:833)&lt;br /&gt;
at org.jawk.frontend.AwkParser.LE1_EXPRESSION(AwkParser.java:816)&lt;br /&gt;
at org.jawk.frontend.AwkParser.TERTIARY_EXPRESSION(AwkParser.java:802)&lt;br /&gt;
at org.jawk.frontend.AwkParser.CONCAT_EXPRESSION(AwkParser.java:785)&lt;br /&gt;
at org.jawk.frontend.AwkParser.CONCAT_EXPRESSION(AwkParser.java:788)&lt;br /&gt;
at org.jawk.frontend.AwkParser.COMMA_EXPRESSION(AwkParser.java:768)&lt;br /&gt;
at org.jawk.frontend.AwkParser.ASSIGNMENT_EXPRESSION(AwkParser.java:749)&lt;br /&gt;
at org.jawk.frontend.AwkParser.RULE(AwkParser.java:683)&lt;br /&gt;
at org.jawk.frontend.AwkParser.RULE_LIST(AwkParser.java:615)&lt;br /&gt;
at org.jawk.frontend.AwkParser.SCRIPT(AwkParser.java:599)&lt;br /&gt;
at org.jawk.frontend.AwkParser.parse(AwkParser.java:237)&lt;br /&gt;
at org.jawk.Awk.invoke(Awk.java:114)&lt;br /&gt;
at org.jawk.Awk.main(Awk.java:83)&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Stephen Summerfield&lt;br /&gt;
stephen@netality.com&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Wed, 16 Jan 2008 14:33:38 -0000</pubDate><guid>https://sourceforge.net86a8821ce7ffff9ac4569953bc9c8dd8a3579067</guid></item><item><title>umberFormatException</title><link>https://sourceforge.net/p/jawk/bugs/3/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;NumberFormatException thrown in file AwkParser, line 3719, Class AwkSymbolTable:&lt;/p&gt;
&lt;p&gt;AST addINTEGER(String integer) { return new Integer_AST(Integer.decode(integer)); }&lt;/p&gt;
&lt;p&gt;The value of the integer String is "09", causing Integer.decode to interpret it as octal. &lt;/p&gt;
&lt;p&gt;I supose the correct line must be:&lt;/p&gt;
&lt;p&gt;AST addINTEGER(String integer) { return new Integer_AST(Integer.parseInt(integer)); }&lt;/p&gt;
&lt;p&gt;mail cvasquez2@hotmail.com&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Camilo Vasquez</dc:creator><pubDate>Fri, 06 Jul 2007 23:51:46 -0000</pubDate><guid>https://sourceforge.net8fad53077651d33fae10813da98451ebf17cd365</guid></item><item><title>Number Format Exeption</title><link>https://sourceforge.net/p/jawk/bugs/2/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;NumberFromatException thrown in file AwkParser, line 3719, Class AwkSymbolTable:&lt;/p&gt;
&lt;p&gt;AST addINTEGER(String integer) { return new Integer_AST(Integer.decode(integer)); }&lt;/p&gt;
&lt;p&gt;The value of the integer String is "09", causing Integer.decode to interpret it as octal. &lt;/p&gt;
&lt;p&gt;I supose the correct line must be:&lt;/p&gt;
&lt;p&gt;AST addINTEGER(String integer) { return new Integer_AST(Integer.parseInt(integer)); }&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Fri, 06 Jul 2007 23:44:24 -0000</pubDate><guid>https://sourceforge.netd4bf23b10314c9a2d26889157c2b2e775c79c12d</guid></item><item><title>Problem with \r, \n, \t characters in strings.</title><link>https://sourceforge.net/p/jawk/bugs/1/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The interpreter processes \r, \n, and \t in strings as&lt;br /&gt;
regular r, n, and t characters, respectively.  A&lt;br /&gt;
workaround is to use character types:&lt;/p&gt;
&lt;p&gt;Instead of "Hello there\n", use "Hello there" '\n'.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">ddaglas</dc:creator><pubDate>Tue, 28 Feb 2006 12:08:17 -0000</pubDate><guid>https://sourceforge.net461fe82eabbe0f7eb3447ec6f753ed84f9da589b</guid></item></channel></rss>