># makefile
>VARA := $(shell echo someText)
>VARB := $(shell echo $(VARA)1)
>all:
>    @echo $(VARA)2
>    @echo $(VARB)3
># end
>
>This prints:
>someText2
>someText13
>
>I expect it to print:
>someText
>someText1
>someText2
>someText13

The reason for this seems to be the following...
On windows, for the $(shell ...) function, stdout for the child process that 
executes the shell command line is piped to a stream that is read from the 
parent process.  After the parent process reads the stream into a buffer, it 
doesn't print it to stdout... it just puts the results into the variable buffer.

I think that this is a problem.  It can be changed easily by just echoing the 
buffered characters to stdout as they are coming in...

      if (cc <= 0)
        break;

can be changed to...

      if (cc <= 0)
        break;
      else
        fwrite(&buffer[i], 1, cc, stdout);

in the function "func_shell"

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


_______________________________________________
Make-w32 mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/make-w32

Reply via email to