Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <3EC1D5F5.2080506@mimosa.ceng.cea.fr> Date: Wed, 14 May 2003 07:36:53 +0200 From: gilles civario User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3.1) Gecko/20030425 X-Accept-Language: fr,en MIME-Version: 1.0 To: cygwin AT cygwin DOT com Cc: civario AT mimosa DOT ceng DOT cea DOT fr Subject: Re: a2ps and printer References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Igor Pechtchanski wrote: > On Tue, 13 May 2003, gilles civario wrote: > > >>Igor Pechtchanski wrote: >> >>>On Tue, 13 May 2003, gilles civario wrote: >>> >>> >>>>>Gilles, >>>>> >>>>>I'm getting the same message ("lpr: The printer name is invalid") for the >>>>>//server/printer syntax. However, I've just verified that the >>>>>'\\\\server\\printer' syntax works for me (i.e., use backslashes, and >>>>>escape them *twice*). Hope this helps, >>>>> Igor >>>> >>>>Igor, >>>>I'd checked this syntax too. And the anther is : >>>> >>>>$ file gettime.c >>>>gettime.c: ASCII C program text >>>>$ lpr -P \\\\mimosa\\glaieul gettime.c >>>>lpr: StartDocPrinter error >>>>lpr: Le type de donne spcifi n'est pas valide. >>> >>>Gilles, >>> >>>No, no, no. You didn't read what I said carefully. I said the >>>backslashes have to be escaped *twice*! You missed the single quotes. >>>The correct syntax would be >>> >>>$ lpr -P '\\\\mimosa\\glaieul' gettime.c >>> >>>(note the quotes). That's what worked for me, and should work for you as >>>well. Alternatively, >>> >>>$ lpr -P \\\\\\\\mimosa\\\\glaieul gettime.c >>> >>>should also work. >> >>Yes, I'd well read you, but here are the results : >> >>$ lpr -P '\\\\mimosa\\glaieul' gettime.c >>lpr: can't open '\\\\mimosa\\glaieul' for writing >>lpr: Adresse rseau non valide. >> >>$ lpr -P \\\\\\\\mimosa\\\\glaieul gettime.c >>lpr: can't open '\\\\mimosa\\glaieul' for writing >>lpr: Adresse rseau non valide. >> >>Adresse rseau non valide => Invalid network adresse >> >>$ lpr -P \\\\mimosa\\glaieul gettime.c >>lpr: StartDocPrinter error >>lpr: Le type de donne spcifi n'est pas valide. >> >>$ lpr -P '\\mimosa\glaieul' gettime.c >>lpr: StartDocPrinter error >>lpr: Le type de donne spcifi n'est pas valide. >> >>Le type de donne spcifi n'est pas valide => Invalid data type >> >>So i don't know what append. > > > Gilles, > > I have to apologize. The initial message contained the syntax for a2ps, > which does need additional escapes. For lpr itself you don't need to > escape the backslashes twice, so your syntax ('\\mimosa\glaieul' or > \\\\mimosa\\glaieul) should work. Sorry for the misunderstanding. > > Why not try initially to just > > $ echo Testing^L | lpr -P '\\mimosa\glaieul' > > ? (The ^L is the actual Ctrl-L character, you can escape it with Ctrl-V > in bash). > > >>>>$ unix2dos gettime.c >>>>gettime.c: done. >>>>$ file gettime.c >>>>gettime.c: ASCII C program text, with CRLF line terminators >>>>$ lpr -P \\\\mimosa\\glaieul gettime.c >>>>lpr: StartDocPrinter error >>>>lpr: Le type de donne spcifi n'est pas valide. >>>> >>>>While tracing the process with strace, I seen this : >>>> >>>> 295 107178 [main] lpr 1428 fhandler_disk_file::open: 1 = fhandler_disk_file::open (d:\civario\tmp\gettime.c, 0x0) >>>> 293 107471 [main] lpr 1428 open: 3 = open (gettime.c, 0x0) >>>> 231 107702 [main] lpr 1428 _cygwin_istext_for_stdio: _cygwin_istext_for_stdio (3) >>>> 231 107933 [main] lpr 1428 _cygwin_istext_for_stdio: _cifs: get_*_binary >>>> 3195 111128 [main] lpr 1428 writev: writev (2, 0x22E420, 1) >>>> 400 111528 [main] lpr 1428 fhandler_console::write: 22E4B0, 5 >>>> 245 111773 [main] lpr 1428 fhandler_console::write: at 108(l) state is 0 >>>>lpr: 347 112120 [main] lpr 1428 fhandler_console::write: 5 = write_console (,..5) >>>> 254 112374 [main] lpr 1428 writev: 5 = write (2, 0x22E420, 1), errno 0 >>>> 248 112622 [main] lpr 1428 writev: writev (2, 0x22E440, 1) >>>> 236 112858 [main] lpr 1428 fhandler_console::write: 22E4D0, 21 >>>> 225 113083 [main] lpr 1428 fhandler_console::write: at 83(S) state is 0 >>>>StartDocPrinter error 310 113393 [main] lpr 1428 fhandler_console::write: 21 = write_console (,..21) >>>> >>>>I think (but I may be wrong) that the text file is seen as a >>>>binary one by lpr. >>> >>>That shouldn't matter. The lpr you're using is smart enough not to care >>>too much. > > > Actually, I've just tried the same command as you did, and it worked for > me, even when the file was in DOS mode... It even works if the file > contains accented characters (in comments). Strange... > > Is your printer a postscript printer? What is the driver? What OS are > you running? My printer is a poscript printer, HP Laserjet 5SiMx. The driver is the one provided by Windows as "HP Laserjet 5SI/5SI MX PS". My os is Win2000 5.00.2195 SP2. > FYI, StartDocPrinter is a Windows function. That lpr implementation is > pretty simple-minded and sets the data type to "raw" unconditionally. > Perhaps your driver doesn't recognize it (or is case-sensitive on data > type specification)... > > Since you can reproduce the problem, the best thing to try (given time, of > course) would be for you to download the source of the cygutils package > (through setup.exe); first compile lpr and see if it works, and then try > to tweak little things (like the case of the datatype specification, or > setting pOutputFile to NULL instead of "", as recommended by MSDN). For > reference, here's the relevant MSDN page: > . You > could then contribute a patch (against the original sources) back to the > project. > Igor > Igor. Excellent idea. I've download the lpr sources and change the di1.pDatatype from "raw" to "RAW"... Miracle, it's work perfectly ! As the StartDocPrinter error message were saying, the data type was incorect. Here is the output of a uname -a on my machine : $ uname -a CYGWIN_NT-5.0 hepatique 1.3.22(0.78/3/2) 2003-03-18 09:20 i686 unknown unknown Cygwin And here is the diff betwwen the two lpr.c files : $ diff -urN lpr.c.orig lpr.c --- lpr.c.orig 2002-03-03 04:09:42.000000000 +0100 +++ lpr.c 2003-05-14 07:27:22.000000000 +0200 @@ -110,7 +110,7 @@ di1.pDocName = docName; di1.pOutputFile = ""; - di1.pDatatype = "raw"; + di1.pDatatype = "RAW"; if (StartDocPrinter(deviceHandle, 1, (LPBYTE) &di1) == 0) exitCode = error(1, "StartDocPrinter error"); Thanks a lot for the help. Gilles. -- 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/