Fixed now, I believe.
The problem is that the LaserJet 2100 was sending error messages like:
@PJL USTATUS TIMED
CODE=41900
...
and a comment in ifhp.c implies that the second line "may" be a value for
the variable at the end of the first. I'm not a PJL expert, nor have I
looked at the PJL documentation, but it seems to me a reasonable
assumption that if the second line has an "=", it's not a value. (Please
correct me if I'm wrong!)
In our case, I fixed this by moving the eq_line check up a bit, so that
the second line gets processed on its own in addition to being appended
to the first:
*** ifhp.c.orig Wed Apr 17 19:13:47 2002
--- ifhp.c Wed Apr 17 18:51:09 2002
***************
*** 733,738 ****
--- 733,739 ----
* last entry may be a variable name and the next
* line a value for it. We need to append to the variable value
*/
+ eq_line = safestrchr( str, '=' );
pjlline = !safestrncasecmp( str, "@PJL",4);
if( pjlvar ){
if( !pjlline && !ISNULL(str) ){
***************
*** 755,761 ****
SAFEFREE(pjlstatus); pjlstatus = 0;
pjlinfo = 0;
}
! if( !pjlline ) goto done;
}
if( (ps_str = safestrstr( str,"%%[" )) ){
--- 756,762 ----
SAFEFREE(pjlstatus); pjlstatus = 0;
pjlinfo = 0;
}
! if( (!pjlline) && (!eq_line) ) goto done;
}
if( (ps_str = safestrstr( str,"%%[" )) ){
***************
*** 766,772 ****
c = cval(s);
*s = 0;
}
- eq_line = safestrchr( str, '=' );
if( s ) *s = c;
/* now we check for xx=value entries */
_Rob
On April 15th, Rob Joyce wrote:
> Sorry to be a pain about status messages...
>
> If, say, the paper runs out in the middle of a job on an HP JetDirect
> printer, lpq reports only
>
> Status: processing 'dfA688printserver', size 136, format 'f', IF filter 'ifhp' at
>19:12:51.441
> Filter_status: getting end using 'pjl job/eoj' at 19:13:03.961
>
> ...is there any way to have LPRng report the real printer error via lpq?
> tcpdump says the printer is indeed periodically sending
> @PJL.USTATUS.TIMED..CODE=41900..DISPLAY="TRAY.EMPTY"..ONLINE=FALSE (where
> the "." characters are just placeholders).
>
> lpd_printcap entry:
>
> scribe
> :server
> :oh=printserver
> :filter=/usr/local/libexec/filters/ifhp
> :sd=/var/spool/lpd/%P
> :lf=/var/spool/lpd/%P/log
> :mx=0
> :mc=0
> :lp=scribe-pr%9100
> :ifhp=model=hp2100
>
> Thanks for any insight,
> _Rob
>
>
> debug=4 excerpt:
>
> Filter_status: Read_status_timeout: timeout 296, count 69 at 19:54:12.774
> Filter_status: Read_status_timeout: read count 69, '@PJL USTATUS TIMED^M
> Filter_status: CODE=41900^M
> Filter_status: DISPLAY="TRAY EMPTY"^M
> Filter_status: ONLINE=FALSE^M
> Filter_status: ^L' at 19:54:12.774
> Filter_status: Put_inbuf_len: buffer '@PJL USTATUS TIMED^M
> Filter_status: CODE=41900^M
> Filter_status: DISPLAY="TRAY EMPTY"^M
> Filter_status: ONLINE=FALSE^M
> Filter_status: ^L' at 19:54:12.774
> Filter_status: Get_inbuf_str: found '@PJL USTATUS TIMED' at 19:54:12.775
> Filter_status: Pr_status: start str '@PJL USTATUS TIMED', pjlvar '<NULL>',
>pjlstatus '<NULL>' at 19:54:12.775
> Filter_status: Pr_status: doing PJL status on '@PJL USTATUS TIMED' at 19:54:12.775
> Filter_status: Pr_status: PJL var 'timed' at 19:54:12.775
> Filter_status: Get_inbuf_str: found 'CODE=41900' at 19:54:12.776
> Filter_status: Pr_status: start str 'CODE=41900', pjlvar 'timed', pjlstatus
>'<NULL>' at 19:54:12.776
> Filter_status: Pr_status: PJL var 'timed' append '<NULL>' + 'CODE=41900' at
>19:54:12.776
> Filter_status: Pr_status: pjlinfo '0', setting PJL var 'timed' to 'CODE=41900' at
>19:54:12.776
> Filter_status: Get_inbuf_str: found 'DISPLAY="TRAY EMPTY"' at 19:54:12.777
> Filter_status: Pr_status: start str 'DISPLAY="TRAY EMPTY"', pjlvar '<NULL>',
>pjlstatus '<NULL>' at 19:54:12.777
> Filter_status: Check_device_status: 'DISPLAY="TRAY EMPTY"' at 19:54:12.777
> Filter_status: Check_device_status: key 'DISPLAY', value '"TRAY EMPTY"' at
>19:54:12.777
> Filter_status: Get_inbuf_str: found 'ONLINE=FALSE' at 19:54:12.778
> Filter_status: Pr_status: start str 'ONLINE=FALSE', pjlvar '<NULL>', pjlstatus
>'<NULL>' at 19:54:12.778
> Filter_status: Check_device_status: 'ONLINE=FALSE' at 19:54:12.778
> Filter_status: Check_device_status: key 'ONLINE', value 'FALSE' at 19:54:12.778
> Filter_status: Get_inbuf_str: found '' at 19:54:12.779
> Filter_status: Pr_status: start str '', pjlvar '<NULL>', pjlstatus '<NULL>' at
>19:54:12.779
> Filter_status: Get_inbuf_str: final '' at 19:54:12.779
> Filter_status: Do_waitend: len 0 at 19:54:12.779
> Filter_status: Do_waitend - Devstatus - OBJ_T_HASH len 9 at 19:54:12.779
> Filter_status: [0] HASH key 'device' - OBJ_T_STR 'CODE=41900' at 19:54:12.780
> Filter_status: [1] HASH key 'display' - OBJ_T_STR '"TRAY EMPTY"' at 19:54:12.780
> Filter_status: [2] HASH key 'echo' - OBJ_T_STR '[EMAIL PROTECTED]' at
>19:54:12.780
> Filter_status: [3] HASH key 'id' - OBJ_T_STR '"HP LaserJet 2100 Series"' at
>19:54:12.780
> Filter_status: [4] HASH key 'job' - OBJ_T_STR 'START' at 19:54:12.781
> Filter_status: [5] HASH key 'name' - OBJ_T_STR '"19-53-58.164 PID 23206"' at
>19:54:12.781
> Filter_status: [6] HASH key 'online' - OBJ_T_STR 'FALSE' at 19:54:12.781
> Filter_status: [7] HASH key 'pagecount' - OBJ_T_STR '82703' at 19:54:12.781
> Filter_status: [8] HASH key 'timed' - OBJ_T_STR 'CODE=41900' at 19:54:12.782
> Filter_status: Do_waitend: job 'START', name '"19-53-58.164 PID 23206"', result
>'<NULL>', endname '19-53-58.164 PID 23206' at 19:54:12.782
> Filter_status: Do_waitend: echo '[EMAIL PROTECTED]', want '19-53-58.164
>PID 23206' at 19:54:12.782
> Filter_status: Do_waitend: waitend '0' at 19:54:12.782
> Filter_status: Do_waitend: Outlen 0 '' at 19:54:12.782
>
>
-----------------------------------------------------------------------------
YOU MUST BE A LIST MEMBER IN ORDER TO POST TO THE LPRNG MAILING LIST
The address you post from MUST be your subscription address
If you need help, send email to [EMAIL PROTECTED] (or lprng-requests
or lprng-digest-requests) with the word 'help' in the body. For the impatient,
to subscribe to a list with name LIST, send mail to [EMAIL PROTECTED]
with: | example:
subscribe LIST <mailaddr> | subscribe lprng-digest [EMAIL PROTECTED]
unsubscribe LIST <mailaddr> | unsubscribe lprng [EMAIL PROTECTED]
If you have major problems, send email to [EMAIL PROTECTED] with the word
LPRNGLIST in the SUBJECT line.
-----------------------------------------------------------------------------