289-01.ps fails. with -dNOOUTERSAVE it prints an error message to the raster. Without -dNOOUTERSAVE it fails with /typecheck in --put--.
Here is a clarification : 1. GS is invoked how the regression tool does : gswin32c.exe -r72 -dNOPAUSE -dBATCH -dNOOUTERSAVE -sDEVICE=ppmraw - sOutputFile=%dir%\cur.ppm -c false 0 startjob pop -f - <%1 1>>cur-1.log 2>>cur- 2.log 2. Actually it prints errors to stdout and doesn't generate a raster.
*** Bug 687091 has been marked as a duplicate of this bug. ***
The 289-01.ps Genoa Test expects to run under a job server. In particular, even though the files are run with -dNOOUTERSAVE -c "false 0 startjob pop" and start under a job server, part of the testing sequence executes the 'true 0 startjob' that exits the server state. As a result, the test 293-01 section eexecutes 'quit' when it has not been mapped to 'stop' by 'false 0 startjob'. On an Adobe printer, a bare 'quit' is used to perform a 'printer reset'. On Ghostscript, the bare 'quit' causes the Ghostscript to exit without furhter interpretation, so no page is produced. The correct solution to this is to make the ^D cause the interpreter action that would happen in an environment under a job server. Regression testing will be performed prior to any patches proposed for this.
This is still failing in the regression test.
This has now been fixed. The src/scantab.c entry for ^D is changed to be ctype_other which allows it to be a self delimiting token which is needed in case a ^D is not followed by any whitespace. The action in gs_init.ps when ^D is found is effectively to end the curent job, and begin a new encapsulated job. This new definition, and the initial job encapsulation are both invoked when -dJOBSERVER is specified on the command line. The -dNOOUTERSAVE is ignored if -dJOBSERVER is given, and everything still works fine if job encapsulation is performed explicitly using: -c false 0 startjob pop To avoid 'invalidrestore', input *must* be from stdin. Thus the normal usage is: gs ... -dJOBSERVER - < inputfile.ps or cat inputfile1.ps inputfile2.ps ... | gs ... -dJOBSERVER - This now works with the Genoa test suite, as long as jobs are run individually. Thie does *NOT* allow all Genoa jobs to be concatenated and sent as a single stream due to tests which perform direct actions on stdin such as 'closefile' or 'flushfile' and expect the ^D to delimit the flushing of stdin. Now it just eats all jobs that follow. Example of this is 124-01.ps. Without the 124-01.ps file, the remaining Genoa tests *CAN* be concatenated and run (several orders tried) to completion!!! ASCII PostScript such as the Genoa tests can partially be emulated including ^D causing EOF by invoking the TBCP filter in a loop, but the problem here is that files that reference (%stdin) file rather than currentfile will interfere with the TBCP filter input.