From: BGINFO4X <bgi...@kz...> - 2013-03-07 12:18:30
|
Hello everybody, I'm having a issue piping two programs: Program1 | Program2. I use MSYS 1.0.18. Program2 is always the "convert" program from ImageMagick (the Windows portable version). Program1 "cats" a file to the pipe. I use two tests files: winfile (CRLF) and unixfile (LF) A) If I pipe the two programs INSIDE CMD, all the tests are always OK: type winfile.txt | convert label:@- winfile.png type unixfile.txt | convert label:@- unixfile.png B) If I pipe the two programs INSIDE MSYS, exactlly equally as done in A), all the tests are always OK: $ cmd.exe /c "type winfile.txt" | cmd.exe /c "convert label:@- winfile.png" $ cmd.exe /c "type unixfile.txt" | cmd.exe /c "convert label:@- unixfile.png" The problem starts when I mix /bin/cat (instead of type) with the convert program. For example: C) Mixing cat (unix program) with convert(Windows program) -> results OK $ cat winfile.txt | cmd.exe /c "convert label:@- winfile.png" $ cat unixfile.txt | cmd.exe /c "convert label:@- unixfile.png" D) Mixing type (windows program) with convert (executed directly by MSYS(not cmd.exe)) -> results OK $ cmd.exe /c "type winfile.txt" | convert label:@- winfile.png $ cmd.exe /c "type unixfile.txt" | convert label:@- unixfile.png E) "Native MSYS" -> Mixing cat (unix program) with convert(executed directly by MSYS) $ cat winfile.txt | convert label:@- winfile.png convert.exe: no images defined `winfile.png' @ error/convert.c/ConvertImageCommand/3068. $ cat unixfile.txt | convert label:@- unixfile.png convert.exe: no images defined `unixfile.png' @ error/convert.c/ConvertImageCommand/3068. In Windows 2012, I get this error always (100% of the cases). In Windows 7, I get this error sometimes (20% of the cases). I opened a bug in Imagemagick, because I thought that it was related to convert (it happens sometimes in Windows 7), but with little success. ( http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=22781) But yesterday, when I tried in a new Windows 2012, I checked that the piping ALWAYS fails, so I started to thought that it was related to MSYS (or not) and started to test the explained tests (A,B,C,D,E). Now I have basically these questions: 1- Is it necessary to piping windows programs with cmd.exe /c "program"? Case B) 2- Is it correct to pipe the programs as (case E) "Native MSYS": cat | convert? I think that it is, but it fails. 3- Why the piping works if one of the two programs uses cmd.exe? case C) or D) 4- Do you have some light of the problem? I also checked in the mail list and found this post from Keith (it seems related, but not 100% sure): http://sourceforge.net/mailarchive/forum.php?thread_name=OFD6894437.E8412F0B-ON80256D9D.003B884D-80256D9D.0044EF54%40LocalDomain&forum_name=mingw-msys Thanks a lot for your time. Regards. |