2 * Copyright (c) 1990,1994 Regents of The University of Michigan.
3 * All Rights Reserved. See COPYRIGHT.
6 #include <sys/syslog.h>
14 markline( start, stop, pf )
20 if ( PF_BUFSIZ( pf ) == 0 && ( pf->pf_state & PF_EOF )) {
25 for ( p = pf->pf_cur; p < pf->pf_end; p++ ) {
26 if ( *p == '\n' || *p == '\r' ) {
30 if ( p >= pf->pf_end ) {
31 if ( pf->pf_state & PF_EOF ) {
32 APPEND( pf, "\n", 1 );
40 if ( *stop == *start ) {
41 return( 1 ); /* don't return len 0 lines */
43 return( *stop - *start );
47 consumetomark( start, stop, pf )
51 if ( start != pf->pf_cur || pf->pf_cur > stop || stop > pf->pf_end ) {
55 pf->pf_cur = stop + 1; /* past the stop char */
56 if ( pf->pf_cur > pf->pf_end ) {
59 if ( pf->pf_cur == pf->pf_end ) {
60 pf->pf_cur = pf->pf_end = pf->pf_buf;
66 morespace( pf, data, len )
74 if ( pf->pf_cur != pf->pf_buf ) { /* pull up */
75 bcopy( pf->pf_cur, pf->pf_buf, PF_BUFSIZ( pf ));
76 pf->pf_end = pf->pf_buf + PF_BUFSIZ( pf );
77 pf->pf_cur = pf->pf_buf;
80 if ( pf->pf_end + len > pf->pf_buf + pf->pf_len ) { /* make more space */
81 nsize = (( pf->pf_len + len ) / PF_MORESPACE +
82 (( pf->pf_len + len ) % PF_MORESPACE != 0 )) * PF_MORESPACE;
84 if (( nbuf = (char *)realloc( pf->pf_buf, nsize )) == 0 ) {
88 if (( nbuf = (char *)malloc( nsize )) == 0 ) {
93 pf->pf_end = nbuf + ( pf->pf_end - pf->pf_buf );
94 pf->pf_cur = nbuf + ( pf->pf_cur - pf->pf_buf );
98 bcopy( data, pf->pf_end, len );
102 spoolerror( out, str )
106 char *pserr1 = "%%[ Error: ";
107 char *pserr2 = " ]%%\n";
110 str = "Spooler error.";
113 APPEND( out, pserr1, strlen( pserr1 ));
114 APPEND( out, str, strlen( str ));
115 APPEND( out, pserr2, strlen( pserr2 ));