-
Notifications
You must be signed in to change notification settings - Fork 0
/
History.txt
10176 lines (7006 loc) · 413 KB
/
History.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
mouse:~ppr/src/History.txt
This file contains a history of changes to PPR which occured after the
release of version 1.00.
1.00, 26 April 1995
First public release.
1.10, 27 April 1995--7 June 1995
Removed "From:" line from message passed to Sendmail by pprd when sending
a message listing the remaining printer faults. This is so that Sendmail
will take the "real name" from the password file and put it in the "From:"
line.
Removed dotmatrix/input.epson, a GIF file which had been inadvertently
included in the distribution.
Moved the contents of include/atalk_streams.h into
interfaces/atalk_streams.c since it was not long enough to justify an
include file, nor was it of interest to any other program.
Added code to ppad to classify members of the group "ppradmin" as PPR
addministrators who can edit printer and group configurations.
Added -v switch to ppad.
Removed uid's 1-99 from the list of priveledged users.
Fixed ppad(8) so that it considers the group "ppradmin" as priveledged
rather than "ppr".
Changed ppr(1) so that it will accept the members of the group "pprprox" as
priveledged as well as the members of "ppr". This is for security reasons
as one may not want to grant a user who has the privedge of using the -f
switch the priveledge of deleting other people's jobs.
Modified ppop(1) and pprd(8) so that user's can request to see the queue
entry for a single job. Previously, the only options were all jobs for a
certain destination or all jobs in all queues.
Rewrote and renamed the undocumented "ppop qdebug" command to become the new
documented command "ppop details". (This was done primarily to support
wwwppop, an experimental managment interface for PPR. Since it was still
incomplete it was not released with this version of PPR.)
Renamed interfaces/atalk_streams.c to atalk_ali.c and
papsrv/papsrv_streams.c to papsrv_ali.c
Removed code from "make dirs" so that it doesn't create the directory
"/etc/ppr/groups.ppd".
Added sleep=N and eoftimeout=N options to tcpip interface.
Added -C _filename_ switch to ppr invokation in xppr.
Added "-default okay" to xmessage invokation in xppr.
Added the "ppop lpq" sub-command to the "ppop help" information, thus
making it a documented sub-command.
Extended automatic bin selection to multiple media types when "%%PageMedia:"
comments are present. This has not yet been well tested.
Made "%%EndProcset" an acceptable substitute for "%%EndProcSet" due to a
reputed bug in QuickDraw GX.
Changed rule in ppr_infile.c for detecting PCL code so that documents with
only one escape would still be detected.
1.20, 8 June 1995--10 January 1996
Fixed code in ppr_infile.c so that the ppr -o switch will work even if there
is no "DefFiltOpts:" line in the printer or group configuration file.
Added '(' to list of likely second characters for HP escape codes
in ppr_infile.c
Replaced printing of errno value with strerror(errno) output in some places,
eliminated printing of errno=x from other places where both were printed.
Fixed ppr(1) so that it sets the environment variables "PATH", "IFS", and
"SHELL" so that filters and responders it invokes are less easy to subvert.
Removed setting of PATH from ~ppr/src/misc_filters/tex.perl and changed
shell name from "/usr/bin/tainperl" to "/usr/bin/perl".
Changed code which determins default responder address so that the
environment variables "USER" and "LOGNAME" are used in preference to the
current uid.
Added prompts in Configure to set the directory into which the links to PPR
binaries will be written and the path to the X-Windows binaries such as
xterm.
Modified papsrv so that it will pass the network and node number of the
client to ppr with the -r switch. (This is for use with an experimental
AppleTalk responder.)
Modified papsrv.c, renaming cleanup() to termination_handler() and causing
it to call fatal() only the first time it is called. Without this, name
could be left on the network if the CAP version received two terminate
signals in rapid sucession.
Added code to re-line-wrap responder messages for certain responders.
(The library function responder_width() returns the width for a responder.
Currently it is hard coded to return zero for all responders except "samba".
A return value of zero indicates that the message should not be
re-line-wrapped.)
Dropt reading of LPDEST and PRINTER by ppr(1). (I can not really remember
why I put this feature in. I don't think the reasons where very good. It
may have been that I thought that the same printer would be available thru
two spooling systems so one might want to set the default destination for
both with one variable. That now seems a little far fetched.)
Separated Solaris and Starserver sections of sysdep.h
Added PNG (Portable Network Graphics) format with magic number recognition
to ppr_infile.c. This remains untested since I do not have any programs
which manipulate this graphics format.
In pprd.c, put sleep(1) between execl("pprdrv") and _exit(242) so that pprd
has time to record the PID before the child exits. (If this is not done
and execl() fails immediately, a child which should have become pprdrv may
exit before the parent records its PID in the information structure for that
queue. This result is that it will not recoginize the purpose of the child
when it receives notification of its death and will leave the queue in the
printing state indefinitely.)
Did same in pprdrv.c in code which executes interface. Also changed
_exit(255) to _exit(242). (Exit 242 is the new standard since PERL uses 255
as the exit code when die() is executed.)
Added automatic creation of "DefFiltOpts:" lines to ppad(8). Manual
creation is supported by the the "ppad deffiltopts" and "ppad group
deffiltopts" command.
Modified ppop so that interactive mode restores the terminal settings when
it exits. Also changed terminal setting code to use the POSIX method of
reading and setting terminal characteristics instead of the ioctl() method.
Modified code in serial interface so that it reads the port settings and
modifies them instead of writing entirely new settings.
Added the experimental commentator "audio".
Added HTML as an input file type. Auto-detect works if the file begins with
the magic number "<HTML>".
Added -s to ar switches for Linux configuration in include/global.mk.master
because this seems to be necessary with the tools supplied with
Slackware 2.3.0.
Fixed information on -S switch default in "ppr -?". The actual default is
"true".
Minor modifications to the DSC versions of the HP PPD files.
Renamed pputc(), pputs(), pputline(), pflush(), pprintf(), post(), and
quoted() in pprdrv to printer_putc(), printer_puts(), printer_putline(),
printer_flush(), printer_printf(), printer_puts_escaped(), and
printer_puts_QuotedValue() respectively.
Fixed ppad so that "ppad -- switchset" can be used to work around brain-dead
implemenations of getopt().
Fixed ppr2samba so that it would remove *~ (Emacs style backup) files from
the /etc/ppr/printers and /etc/ppr/groups directories before building the
dummy printcap file.
Removed a bug from ppad_conf.c print_switchset() which would cause
segmentation faults when displaying the configurations of printers or groups
with switchsets defined.
Fixed ppad_printer.c:printer_show() and ppad_group.c:group_show() so that
they deallocate all the memory they allocate.
Removed the experimental error trailer page code (which was not compiled in
due to NEWCODE not being defined) from pprdrv_flag.c.
Added "save/restore" and "newinterface" jobbreak methods.
Modified pprd so that it makes pprdrv its own process and session group
leader. (That is, pprd calls setsid() in the child half just after the
fork().
Fixed pprdrv so it will only wait 60 seconds for commentators to exit. It
they exists, hoping they will get SIGHUP.
Limited argc feed to getopt() in ppad.c:main() to 2 or less so that it will
not try to parse options in a switchset. This makes "ppad -- switchset"
unnecessary.
Fixed bug in pprdrv_flag.c:select_flag_media() which prevented banner and
trailer pages from being printed on printers with no bins with mounted media
defined. Going on the information that a mounted media list was found, it
assumed that the printer had bins and did not regard the fact that it was
reported to have zero bins. This bug was almost certainly introduced before
version 1.00.
Added /etc/ppr/mfmodes database and code in ppad(8) to automatically put a
mfmode= in the DefFiltOpts:.
Added a "*Product:" line with the true product name to my HP 4M and HP 4M
Plus PPD files.
Modified the DVI filter so that it will create dvips config files on the
fly.
Added a define called "A4" which causes filter output and banner pages to be
formatted for A4 paper.
Fixed ppop so that when displaying the names of the media a document is
waiting for it does not display the second argument of the "Media:" line.
Fixed pprsync so that it works with Linux but no longer re-starts papsrv.
Fixed ppr/ppr_infile.c so that it will accept the file name "-" to mean
stdin.
Fixed pprd so that it will create /var/spool/ppr/logs with the permissions
755 instead of 700.
Defined the global #defines VERSION and COPYRIGHT in version.h
Added pprdrv_progress.c module.
Added reporting of percent sent, pages started, and pages completed to queue
display of currently printing job.
Added indication of unfiltered and filtered size in bytes of the job to
"ppop details".
Replace use of sigpause() in pprdrv.c to wait for the SIGUSR1 that indicated
that the interface had set up its SIGUSR1 handler with Posix sigsuspend().
Added a signal() macro for Linux to sysdep.h because the Linux signal() is
System V compatible, not BSD compatible as PPR requires. It is interesting
that Linux sigpause() is BSD compatible.
Put quotes around the file name in the redirect of diff output in
ppd/makepatches.sh so that bash will not say "Ambiguous redirect".
Some changes to "xwin" commentator.
Modified atalk_ali.c so it will print "%%[ status: xxxx ]%%" if the printer
is busy.
Added code to pprdrv so it will copy "%%[ status: xxxx ]%%" message to the
printers status file and send them to the commentators.
Fixed pprdrv.c so the status file is only removed before exiting if the job
was printed or resulted in a job error.
Fixed the CAP and ALI atalk interfaces so that they will continue to read
data from the printer even after pprdrv has ceased to send data.
Removed fatal() from atalk_ali.c interface code.
Added code to pprdrv so that when PJL is used, pprdrv will wait for the last
page to hit the output tray before exiting.
Added wwwppop to the distribution even though it is still incomplete and
very insecure. No installation instructions are provided.
Added a patched verion of the the Adobe Windows 2.0 proceedure set to the
distribution.
Cleaned up atalk_cap.c and atalk_ali.c to make them neater and more
consistent with one another.
Increase use of const, strerror(), and strsignal().
Fixed atalk_cap.c so that if will correctly detect a printer that is busy
and print "%%[ status: xxxx ]%%" and return EXIT_ENGAGED.
Fixed "ppop lpq" so that is displays all the jobs even if one of them is
printing.
Disallowed an empty colour name as input to "ppad media put" since such an
entry could cause false matches in ppr_media.c:_write_media_line().
Fixed prompt for banner suitability in "ppad media put". The prompting and
input range checking were broken.
Fixed code in ppr_media.c:_write_media_lines() so that an unspecified colour
requirement would match "white". Previously this didn't work.
Added an "undefined command t42CSB" to pprdrv/pprdrv_reason.c to detect the
Adobe PostScript Driver for MS-Windows sending to an HP4M with an HP4M+ PPD
file.
Changed ppr_main.c:main() so that the default "%%For:" line uses the unix
/etc/passwd comment field in stead of the user name. The "-u yes" switch
produces the former behavior.
Added setsockopt() to interfaces "tcpip" and "lpr" to turn on SO_KEEPALIVE.
Changed tcpip and lpr interfaces so that if DNS fails the printer will be
placed into fault-retry mode instead of fault-no-retry mode.
Added code to ppr_respond.c: respond() to wait until responder is done.
Changed papsrv_conf.c so that all the configuration file keywords are case
insensitive.
Added CAP AUFS -X authentication to papsrv. Added the suporting keyword
"ForceAUFSSecurity:" to the papsrv configuration file.
Added debuging code to the interface "tcp/ip" in an attempt to figure out
why it sometimes doesn't report an error when attempting to communicated
with a crashed pocket print server.
In pprdrv.c: main(): changed fdopen(printlogfd,"w") to
fdopen(printlogfd,"a"). For some reason, the former sometimes didn't work
even though printlogfd had been opened for append.
In "ppad show" and "ppad group show" output changed "Default Filter
Options:" to "Default filter options:" and "Switchset:" to "Switchset
macro:".
Added code to pprd/pprd.c:reapchild() to put an error message in the log
file if a responder or other non-interface process terminates abnormally.
Added code to serial interface to detect a jobbreak method of "signal" or
"signal/pjl" and refuse to proceed.
Added code to serial interface to support an online= option which allows
DSR, CTS, or CD to be specified as a line which must be true before the
printer will be considered to be on line.
Renamed ~ppr/src/README to ~ppr/src/INSTALL.
Added options.c to libppr.a.
Moved convert_dimension from ppad/ppad_media to libppr/dimens.c.
Fixed the "tcpip" interface so that the SIGALRM handler only sets a flag.
Previously it would exit() from the signal handler, and if running with the
"patron=" option, it would send SIGUSR1 to its patron, sleep() end then
exit(). The sleep() did not work under Linux because it was inside a
SIGALRM handler.
Fixed the "pr" filter so that it would feed the options thru to filter_lp.
Fixed a problem in ppr_infile.c which made options such as
"fontnormal=Times-Roman" not work because the hyphen was mistaken for a
filter name delimiter even though it occurs after the = sign.
Modified filter_lp to use the functions in libppr/options.c.
Added numberous options to filter_lp. Previously, the only option
was "charset=". Changed MIN_COLUMNS from 80 to 70, changed MIN_LINES from
55 to 50. Changed the point size limit from 80% of the line spacing to 100%
of the line spacing.
Put quotes around PostScript font name in log output of indexttf.
Changed ppr's -o switch so that multiple instances are concatenated together
rather than overriding previous ones.
Modified dotmatrix filter to use libppr/options.c; added the "colour=" and
"color=" options; Added the "noisy=" option.
Changed the name of ~ppr/install/install to ~ppr/install/fixup.
Changed "fortran" filter to use libppr/options.c. The fortran filter may
not have worked at all in version 1.10 because it didn't like the number of
options it was getting.
Wrote a function libppr:foptions:filter_options_error() and fixed filter_lp,
dotmatrix, and fortran to use it.
Fixed texinfo filter so that it will use the dvi filter, passing the options
to it.
Fixed a problem in dotmatrix filter: the narrowcarriage= option changed the
left margin to 0.25 inch in stead of shifting everything right 0.25 inch.
This caused problems if the document contained its own margin settings or
absolute horizontal positioning commands. Part of this involved taking the
revision of procset "Trincoll-Dotmatrix" from 0 to 1.
Removed the group "ppr" from the this of those who may use the -f switch to
pretend to be someone else. Now only "root", "ppr", and the members of
"pprprox" may do so.
Changed "ppop" so that the authorized group is "ppop" rather than "ppr".
Changed "ppad" so that the authorization group is "ppad" rather than
"ppradmin".
Fixed misc_filters/pcl.perl to fool Perl so that it believes a safe PATH
is defined at the top. (The PATH and IFS provided by ppr are safe already.)
Simplified the install procedure, making "make dirs" part of "make install".
Made all setuid "ppr" programs also setgid "ppop". PPRD and PAPSRV also now
do setgid(getegid()) if they find they are running as root.
Fixed xppr. If ppr returned non-zero, it wasn't properly printing the error
message when ppr failed.
Fixed pprdrv code related to correct output order when the input is reversed
and the printers has a face up tray.
Added an "HP DeskJet 500 Ghostscript" ppd file. It differs from the
"HP LJ III Ghostscript PPD" in that the *DefaultOutputOrder is Reverse.
Added a second PSVersion line to the Ghostscript PPD files for revision 333.
(That is, Ghostscript 3.33.)
Modified misc_filters/tex.perl, adding a run_with_stdin() function to replace
the use of system(). Fixed a problem which caused the option parser to
fail if there was more than one option.
Added -fomit-frame_pointer and -m486 to Linux compile options.
Added www.conf authorization file to wwwppop.
Fixed "ppop lpq" command so it will not print "No entries" after printing
usage help.
Added %%DocumentData: Clean7Bit to filter_lp.
Added %%DocumentData: Clean7Bit to dotmatrix and made change to make it true.
Implemented rudimentry job splitting. Jobs can be split into an arbitrary
number of segments but all segments have all the requirements of the whole.
Implemented printer configuration option "GrayOK:".
Changed Linux library making command in global.mk.master from "ar -sq" to
"ar -crs" to remove need to run ranlib with some versions of the Gnu
utilities.
Changed pprdrv/pprdrv_reason.c message from "No TT rasterizer,wrong PPD
file" to "No TrueType rasterizer,MS-Windows is using|wrong PPD file".
Made corresponding changes to ppop to break messages at "|".
Converted ppr2samba from a shell script to a C program so that we can make
it set user/group id so that anyone can run it.
Added qentry.attr.parts to give total number of parts in the job. Also
added line to "ppop details" to display that information.
Added state_update() to pprd.c and code to call it to inform queue
monitoring programs of interesting events.
Moved debug("pprd starting") to a point after the old log files are renamed.
Reworked SIGCHLD and close_interface() code to pprdrv to get rid of obscure
lockup. Greatly simplified code in the process.
Fixed "ppop details" so it will no longer show ".0" at the end of job ids.
Added -M switch to ppop and added "ppop qquery" command.
Expanded many of the help messages in ppop.
Made ppr use the file name as the default title if no -C switch is given.
Added -G switch to ppr. (This belongs back there somewhere.)
Found and corrected several places in pprd.c where job->status was being set
directly rather than calling newstatus() to do it.
Removed code which printed "gunzip" or "uncompress" on stderr when printing
compressed files.
Added an interactive mode and an -M switch to ppad.
Changed ppop and ppad interactive mode so that an stty to set the backspace
character to control-h is not made unless BACKSPACE is defined. BACKSPACE
will be defined in sysdep.h.
Changed "%%Orienation:" handling code do detect three states, Portrait,
Landscape, and Unknown. Previously it only determined landscape true or
false.
Added code to papsrv to retry name advertising if it fails with CAP error -1025.
Added code to papsrv so it will announce when it has added all the names,
and on shutting down, when shutdown is complete.
Enhanced papsrv debug() so it datestamps its lines.
Added code to papsrv so it will print query information in the log file after
receiving SIGUSR1 and quit after receiving another SIGUSR1.
Added RamSize: as a valid line in the papsrv config file.
Changed papsrv so that appletalk_dependent_cleanup() is only called by the
daemon, not by its children.
Changed references to stderr in ppop.c to errors which can be redefined.
Redefined errors to stdout if -M switch is used. This helps Tcl/Tk which
seems not to read stderr.
Removed code at start of ppop main which set stdout and stderr to line
buffering mode.
Changed references to stderr in ppad to references to "errors" and put code
in -M switch handler to define errors as stdout.
In "ppop status" displays, changed "printing xxxxx-yyy (stopping)" to
"stopping (printing xxxxxx-yyy)".
Modified the "ppad show" command to produce machine readable output with the
-M switch.
Fixed ppop to use the Posix sigsuspend() in stead of the deprecated sigpause().
Added a SIGPIPE handler to ppop so it can produce an inteligible response
when the spooler shuts down.
Fixed a bug in the ALI version of the AppleTalk interface which caused it to
write the message that there was a syntax error in the printer address into
an alert file with the wrong name.
Fixed bug in atalk ALI interface: after hiding a printer it would sleep for
10 seconds and then look for it with the unhidden name which would always
fail.
Fixed a bug in the papsrv_ali.c module. When trying to flush the output
buffer it used while(ocount) when it should have used while(ocount ||
blocked). Was able to simplify flush_reply() after fixing this bug.
Made "open_retries", "lookup_retries", and "lookup_interval" interface
options in the ALI version of the atalk interface.
Fixed a bug in interfaces/atalk_ali.c: fatal_pap_error(). The switch
statement did not have breaks after to calls to alert() with the result that
more than one alert message would be posted for each error.
Fixed papsrv Makefile so that papsrv_ali.c and papsrv_cap.c will depend on
include/papsrv.h
Changed papsrv so that add_name() takes only the prnid as argument, the name
string was dropt.
Fixed a problem in pprd.c which caused it to write a new printer's first
media list to "/etc/ppr/mounted/<invalid>" because printer_count wasn't
updated soon enough.
Re-wrote interfaces/atalk_ali.c: copy_job() to use select() for better
handling of the data stream from stdin to the printer and the stream from
the printer to stdout.
Fixed bug in pprdrv_twoway.c: when lines were received from the printer, if
the were written to the log they were only written correctly if they were
the first line in the data block. This is because the code printed the
first n characters of the data block rather than the first n characters of
the line.
Slightly modified PJL handling in pprdrv_twoway.c to prevent PAGES=n lines
from appearing in the job log.
Modified pprdrv_nup.c so that it will use Trincoll-dmm-nup-3-3 only if
Trincoll-dmm-nup-3-4 is not available. Created Trincoll-dmm-nup-3-4 which
will be a new version of the N-Up dictionary.
Modified Configure and include/global.mk.master to support NATALI/Netatalk
under Linux.
Modified ppr_main.c: main() so that the "%%Pages:" comments in jobs will be
rounded up to the next multiple of the smallest printable unit.
Added the shell script papsrv_kill and fixed pprsync to use it.
Added code to papsrv to answer *Option queries using information in
"PPDOpt:" lines in the printer configuration file.
Changed the papsrv message "%%[ Error: unspecified fatal ppr error ]%%\n"
to "%%[ Error: fatal error, see papsrv log ]%%\n".
Added squeeze.c from dvips. Modified it so that it no longer strips out DSC
comments. Modified procset Makefile so squeeze is applied to
Trincoll-dmm-nup-3-4. This reduces to downloaded dictionary to 1/3 of its
former size.
Changed the gs and gstcpip interfaces so that if Ghostscript exits with
errorlevel 1 the job is arrested rather than putting the printer in
fault-no-retry mode.
Installed workarounds for NATALI in atalk_ali.c. These are compiled in if
_NATALI_PAP is defined.
Relaxed the parsing of cpio output in pprsync.
Replaced various calls to poll() with calls to select() since select() seems
to be more widely supported.
Added -fno-strength-reduce to the gcc flags for Linux.
Added reference to "ppop help" to "ppop -?".
Changed installprogs/fixup.sh so that it will put " # -z 'Default Zone" at
the end of the papsrv line in rc.local.
1.30a1, 17 January 1996--26 February 1996
Fixed an echo command in pprsync to use $EECHO.
Removed unused code in pprdrv which could display the job title on a PJL
display.
Changed sigpause() to sigsuspend() in pprdrv.c:signal_jobbreak().
Fixed atalk_ali.c: copy_job() slightly so that it will only call
pap_write() if pap_look() return PAP_WRITE_ENABLED or 0.
Put writemon code in pprdrv_twoway.c: twoway_pjl_wait().
Applied the squeeze program to all of the Trincoll-PPR-* procedure sets and
re-aranged the top level Makefile so that the procsets directory will be
built before dotmatrix so that squeeze will exist when dotmatrix is built.
Modified pprdrv_twoway.c: twoway_pjl_wait() so it does not wait if a
PostScript error has been detected. It is not clear if this ought to be
necessary.
Changed papsrv so it will try to read /etc/ppr/papsrv_default_zone if there
is no -z switch.
Removed commented out -z switch from code added to rc.local by fixup script.
Changed ppop lpq so that if there is no title it prints a file name of
"stdin" in stead of "(no title)" and so that it changes spaces in the title
to underscores. (It was suggested that this may be necessary to get around
problems in the Samba lpq parser.)
In include/global.mk.master, Linux section, changed -ldbm in DBLIBS to
-lgdbm. Old Slackware releases seem to have only libdbm which seems not
to include gdbm but in Slackware 2.0, libdbm is a link to libgdbm and
since libgdbm is really what we want, why not specify it? Among other
things, if it is not there it will prompt the installer to install the
package himself.
Corrected bug in pprdrv_res.c: _include_resource(), when searching the
resource list failed to check the version and revision numbers. This caused
a problem if two versions of the same resource are contained in the same
file. This _seems_ unlikely, but Freehand declares "FreeHand_header 3 1"
supplied but includes "Freehand_header 3 0". (Reported by Damian Iveriegh.)
Fixed ppr_res.c so that warnings print the procset version and revision
numbers. (Suggested by Damian Iveriegh.)
Modified ppr_res.c to accept procedure sets with version numbers but no
revision number and treate the missing revision number as zero. (Per
RBIIpp. 637,638.)
Created a new library function ppr_get_command() to combine code from ppop
and ppad interactive modes and to get ready for eventual GNU readline
support.
Replaced previous library exit code variables with "lib_memory_fatal",
"lib_tokenize_fatal", and "lib_misc_fatal".
Broke ppop.c into ppop.c, ppop_cmds_listq.c, and ppop_cmds_other.c.
Removed "-Z true" from the arguments papsrv uses when it invokes ppr. This
was necessary because QuickDraw GX goes not end the file with an "%%EOF"
line.
In the QFileEntry structure, deleted the redundant "principal" member
leaving the "proxy_for" member.
Deleted DNSLIBS from global.mk.master and replaced DNSLIBS in
lprsrv/Makefile with SOCKLIBS.
Converted ppr to use distributed job names.
Added ppr_get_nodename() to the library.
Added nodename_to_nodeid(), free_nodeid(), and nodeid_to_nodename() to the
library.
Added Configure, sysdep.h, and global.mk.master sections for SunOS 4.1.3_U1
(Info provided by Damian Iveriegh.)
Added Configure, sysdep.h, and global.mk.master sections for OSF/1 3.2 (Patches
and README.osf provided by Steve Swinnea <swinnea@weiss.che.utexas.edu>.)
Added mystrndup() to the library.
Changed function names in ppop_cmds_listq.c and ppop_cmds_other.c so that they
have prefixes based upon the commands which invoke them.
Various structures had members called "id", "qid", or "jobid", all of which
refered to the same thing. Changed them all to "id".
Changed product string in Ghostscript PPD files from "(Ghostscript)" to
"(Alladin Ghostscript)" because that is what at least versions 3.33 and 3.51
of the interpreter return. Also make a first Product string which is the
same as the ModelName and NickName. This is so that LaserWriter 8.x can
pick the right one.
Added %hd to ppr_sscanf().
Changed "ppop list" protocol to eliminate passing of binary structures.
Various function name changes in ppop and pprd so that the ppop command
functions all have the form ppop_XXXX().
Added struct Destname and the parse_dest_name() function to ppop.c.
Numberous corrections to make the code compile properly under G++.
Converted the serial, tcpip, and atalk_cap interfaces to use the option
parsing library.
Copied the retry timer options code into atalk_cap but did not implement the
code to use the values.
Modified the libpprdb functions to call error() in stead of
calling fprintf(stderr,...).
Changed the name of the "HP LJ III Ghostscript" PPD file to
"HP LaserJet III Ghostscript".
Added "fullname" to ppuser records.
Changed the name of db.h to "userdb.h".
Fixed ppuser to always return values from util_exits.h
Added "ppuser help" command.
Changes in interfaces/lpr.c: Changed the socket() call to a
rresvport() call (remote lpd requires a connection from a priveledged
port). Look up port number for lpr service ("printer") in /etc/services
defaulting to 515 if not found. Added new option "lpr_typecode",
which may be either "o" or "f" (default to "f"). This is the letter
that is used before the data file name in the cf file sent to the
remote lpr. "o" is officially used for Postscript, but older lpr
spoolers don't understand it. The data file is now sent before the
cf file so that remote deamons won't try to start printing before
the whole file has arrived. (Damian Ivereigh)
Furthur changes to interfaces/lpr.c: made use of reserved port conditional on
geteuid() returning zero, added option to specify remote port with host:port
format just like tcpip interface. Eliminated use of Berkeley rresvport()
function in favour of socket() and bind(). (David Chappell)
Eliminated WinNT w/Hippix from global.mk.master and simplified definition
of LIBCMD in Makefiles.
Added "PPRVersion: x.xx" to queue files. The idea is that with the advent
of distributed printing it may be necessary to convert between new and old
queue file formats.
Changed "ppop status" so that when the status of a printer is displayed, if
it is "printing", the retry number will be displayed if it is greater than
zero.
pprdrv/pprdrv_twoway.c: changed name to pprdrv/pprdrv_feedback.c, combined
ready_twoway() and start_twoway() into feedback_start().
pprdrv/pprdrv.c: simplified main() by breaking large code chunks out into
separate functions. Rearanged somewhat to accomodate future raw printing.
pprdrv/pprdrv.c: copy_pages(): changed variable name "thissheet" to
"sheetmember".
pprd/pprd.c: initialize_queue(): changed call to calloc() to call to
myalloc().
Made use of GNUC __attribute__ in global_defines.h conditional on the
definition of __GNUC__.
Added myalloc_checkpoint() and myalloc_assert() to libppr.
Converted Configure and global.mk.master to use cpp in stead of m4. Removed
code in Configure to select system type manually.
Added -H switch to ppr and implemented "-H saveinfile", added opts.hacks to
struct QFileEntry.
Added member "portion" to struct QFileEntry.
Changed libppr/readqfile.c: read_queue_file() to read_struct_QFileEntry().
The new function takes an open file rather than a file name. Also changed
the name of libppr/unreadqfile.c: destroy_queue_file() to destroy_struct_QFileEntry();
Added a "Time:" line to the queue file and effectively removed code in
pprdrv/pprdrv_progress.c which preserved the file dates on queue files when
writing the "Progress:" line.
1.30a2, 26 February 1996--17 May 1996
Changed myrealloc() to use number of members and size just like myalloc
does. Previously it took the number of bytes desired.
Added -p switch with the settable values start=, stop=, even=, and odd= to
specify a subset of the pages to be printed.
Added code to make ppr "-s fronts", "-s backs" work.
Added automatic TBCP decoding via a special filter.
Made fixup.sh make lpr interface setuid root.
Modified ppr program so that level variable is replaced by calls to
functions in ppr_nesting.c. Also added calls to functions in ppr_nesting.c
which keep track of which part of the outermost document is being parsed
(prolog, docsetup, script, etc.).
Made ppr_infile.c: stubborn rewind unlink() to temporary file immedately
after re-opening it instead of saving its name for later unlinking by
exec_filter().
In stubborn rewind, changed pointer in write() call from in_buffer to
in_ptr.
Added sleep= option to dummy interface.
Added binary token preservation code in ppr_infile.c: getline(). (Does not
support Binary Object Sequences at this time.)
ppr/*.c: changed variable name "eof" to "logical_eof".
ppr/ppr_main.c: main(): Changed severity of warning about character following
%%EOF mark from SEVERE to PEEVE if the number if characters is less than 50.
pprdrv, ppad: added jobbreak method "tbcp". Added printer_TBCP_on_off()
function to pprdrv:pprdrv_buf.c but it doesn't do anything yet.
Modified the PPD file lexers for pprdrv and papsrv so that they can do
nested include files more than 1 deap.
Modified pprd so that it can expand its queue array if necessary. Moved the
definition of the initial queue size from global_defines.h to pprd.h.
Corrected product string in HP 4M+ PPD file. Appended "DSC" to ModelName in
HP 4M and HP 4M+ PPD files. Changed PPD version from 4.1 to 4.2. Added
"*LanguageEncoding: ISOLatin1". Added halftone type option for HP4M+.
Changed "*Nickname:" to "NickName:" in HP4M+ PPD. Added optional equipment
queries to HP4M and HP4M+ PPD files.
Modifications to pprd and pprdrv to reduce use of non-reentrant functions by
signal handlers. Also fixed signal handlers to save and restore errno.
HP4M and HP4M+ PPD files: Removed reciprical options when they are obviously
reciprical.
Added "*ShortNickName:" lines to HP4M, HP4M+, Ghostscript, and QMS-PS 410
PPD files.
Added module ppad_readppd.c and made PPDDIR in global_defines.h an absolute
path in order to make ppad diagnostic messages clearer.
Converted ppad_filt.c to use ppad_readppd.c.
Converted "ppad ppdopts" command to use ppad_readppd.c (Previously it did
not support PPD includes at all.)
Converted "ppad bins ppd" command to use ppad_readppd.c (It supported
include files previously.)
Made -H and -G table driven and added support of "no-" prefix.
Added -H badeps.
Added -G structure:nesting and -G structure:sections.
Restored system type menu to Configure, moved global.mk.master into
Configure using herefiles and other shell techniques to replace cpp.
Added "none" as a valid argument the the "online" option to the "serial"
interface.
Added HP PPD files for 4V, 4M Plus, and Color LaserJet.
Fixed "gs" interface. If the port wasn't writable it was reporting that the
port did not exist.
Made pprdrv_reason.c: give_reason() reentrant so that
pprdrv_reason.c: describe_postscript_error() would be reentrant too. As far
as I know, all of the rentrancy problems have been removed from pprd and
pprdrv.
Moved INSTALL.osf1 into INSTALL.
Fixed a timing bug in pprdrv, it would sometimes miss the SIGUSR1 in
start_interface(). It is unclear when in the 1.30 development this bug was
introduced.
Added a "nodename" argument to destination_protected() in libppr. Currently
it will always return FALSE if the nodename is not that of the local node.
It will remain this way until such time as I choose to implement charging
for remote printing.
Cleaned up the code in pprd.c: main() which opened the FIFO, moving it to a
function called "open_fifo()". Previously, pprd would block at this point
with the result that the open() was often interupted by SIGCHLD and SIGALRM
didn't work yet.
Added a second argument to libppr/readppd.c: ppd_open(). This second
argument is the stdio file pointer to use when writing error messages.
Reworked ppr2samba to create a smb.conf include file as well as the
pseudo-printcap file.
Added missing -l, and -p items to papsrv -? help.
Corrected ppr2samba Makefile, it was running installscript on the binary and
failing to strip it.
Added ~ppr/src/misc/ppdconv.perl to the distribution.
Added automatic detection of PDF input files.
Improved auto-detection of HTML files and added detection of other SGML
types. (If the file is HTML, then ppr_infile.c runs filter_html on it, if it
is some other type of SGML, then ppr_infile.c runs filter_sgml on it.
Removed ppd/PPDrename since it has not been used in a long time.
Added to "ppad interface" so that it assigns new printers the default filter
options of the "Apple LaserWriter Plus" as well as its PPD file.
Added -d (debug) switch to ppad.
Fixed ppad and ppop so that they will send help messages to stdout if
invoked with -?, to stderr if they see an unrecognized switch. Exit values
also fixed.
Changed "*Option4" in "HP LaserJet 4M Plus DSC" PPD file to
"*InstalledMemory".
Fixed "ppad ppdopts" so that it will do "*InstalledMemory" options as well
as *Option options.
Fixed ppad so that it will consider *InstalledMemory when generating default
filter options.
Removed a bug in ppad_filt.c which would cause a crash under certain
circumstances when a third printer was added to a group. The problem
related to "*DefaultResolution" line parsing.
Fixed papsrv so that it will answer *InstalledMemory queries.
Enhancements to ppr so properly handle the result of printing with the Adobe
Acrobat reader version 2.1 under MS-Windows 95. The Acrobat reader
stupidly prints the file by putting a 298 page document on one page using
"%%BeginDocument:". What makes things so bad is that there is a colon missing
from a "%%BeginFile" comment. The result is that the "%%EndFile" was
terminating the document structure with the result that ppr generated page
start records in the -pages file for all of those pages. When pprdrv
interpreted it differently it would print all the pages as components of the
enclosing first page and then go on to the first real page. The result was
two copies. The solution is to enhance ppr_nest.c so that it does better
gabbing and so that it ignores the false terminator.
1.30a3, 31 May 1996--14 June 1996
Added ForLine, Time, and Reason arguments to responders. Cleaned up
responder code in ppr and pprd somewhat.
Fixed a bug in pprd which was created by the expansion of the jobid syntax.
When a job was held or arrested, the chmod() would fail because the file name
had been build the old way.
Changed library function wrap_string() so that it modifies the origional
string rather than coping it.
Changed /etc/ppr/smb.conf to /etc/ppr/smb-include.conf.
Fixed dotmatrix problem: If underlineing was done by turning on underlining
and printing spaces interspersed with horizontal moves, the horizontal moves
were underlined as well as the spaces.
filter_dotmatrix: changed Trincoll-Dotmatrix-1-1 to revision 2, changed
/bp so default downward shift was 12 pt in stead of 20. Put the variables
in a procedure called pprdotmatrix_init. Added xshift and yshift to
filter options.
Modified the audio commentator to work with pprpopup.
Changed pprdrv/pprdrv_commentary.c so that commentator stdout and stderr are
logged to the pprdrv log file.
Fixed startup code in pprd/pprd.c: main() so that if the uid is root it
calls setgid(0) before it tries to set the gid to the egid.
Added the program samba_submitter.
Modified ppr/ppr_respond.c: respond() so that it no longer redirects
responder stdout and stderr to /dev/null.
Modified papsrv/papsrv.c:main() so that it does setgid(0) before it does
setgid(egid). This may be necessary for Linux and possibly other unixes.