Mr. Rob Joyce gets the
  'Wish I had read his email sooner that before I read the email sooner'
award.

I just implemented a similar fix BEFORE I read his email.  Would have
saved me a bit of work... Sigh...

Thanks Rob!

Patrick

> From [EMAIL PROTECTED] Wed Apr 17 17:02:59 2002
> Date: Wed, 17 Apr 2002 19:20:23 -0400
> From: Rob Joyce <[EMAIL PROTECTED]>
> To: [EMAIL PROTECTED]
> Subject: Re: LPRng: HP/JetDirect status messages
>
> 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.
> -----------------------------------------------------------------------------
>

-----------------------------------------------------------------------------
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.
-----------------------------------------------------------------------------

Reply via email to