This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: igawk problem


Igor,

thx for your good idea to look what igawk is doing under the hood.
So I tracked things further down and found that the problem is one line 
further down than you thought, and does not seem to be cygwin/windows 
specific (doesn't work under AIX either):

The real bad guy is:
eval gawk $opts -- '"$processed_program"' '"$@"'

The following workaround works under cygwin :

###############
tmpname=`mktemp`
echo "$processed_program" > $tmpname
gawk -f $tmpname
if [ $? -eq 0 ]; then rm -f $tmpname; fi
#################

Interestingly, this doesn't work under AIX.
There, the command
    echo "$processed_program" > $tmpname
replaces all "\n" in the code (that may occur in printf statements), with 
explicit newlines.

Unfortunately, I don't really understand fully what the construct
    eval gawk $opts -- '"$processed_program"' '"$@"'
other than passing '"$processed_program"' to gawk.

If you can offer any further isight, I'd be very appreciative!

cheers,
Hans

Igor Pechtchanski wrote:
> On Fri, 13 Aug 2004, Hans Horn wrote:
>
>>  Group,
>>
>> I have a rather lengthy awk script (that internally includes a bunch
>> of awk library functions; therefore I'm using igawk).
>>
>> When I invoke it, e.g. like
>>
>> echo | igawk -f script.awk
>> eval: gawk: argument list too long
>>
>> The script and the awk library functions together make up approx.
>> 34kByte.
>>
>> Does anybody have a clue whether I'm running here into a hard shell
>> limit, or some internal limit of gawk?
>
> This looks like an upstream igawk portability bug -- the lines
>
> processed_program=`gawk -- "$expand_prog" /dev/stdin <<EOF
> $program
> EOF
>
> look like the culprit.  They should be using xargs instead...
> This is a Win32 limit, and it has to do with the fact that gawk is
> invoked using Win32 calls by default.  There are a few solutions, one
> of the easiest being to "mount -X" your /bin and /usr/bin
> directories.  Or, you can fix igawk to use xargs and submit your
> patch upstream... ;-)
> Igor 




--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]