Mail Archives: cygwin/2004/02/19/03:18:45
------=_NextPart_000_01BC2B74.89D1CCC0
Content-type: text/plain; charset=ISO-8859-1
Hi all,
Now that the new version (1.2.4-1) of lpr works properly I have been trying
to
configure the printing commands of programs that can print directly,
such as dvips, ghostview or xfig. I have found that this task is not
trivial because in general the files to be printed need to be preprocessed;
for example in my case they need to be converted from postscript to deskjet.
Not even the printing of a text file is trivial.
In order to facilitate this task I have modified lpr including a couple
of additional options. I am proposing to include these chages in the
new versions of lpr. Follows a description of the modifications. The
modified files are attached.
1- In my experience most of the time the CR/LF translation is not needed,
so it was flipped the way the raw option works. No option: raw printing,
-l option: LF -> CR-LF preprocessing.
2- The -f option was included. It indicates that a FORMFEED character
is appended to the file. In most printers (working in line printer mode)
this would produce the ejection of the last page of the document.
3- The " -F nameoffilter" to give the name of a filter (or pipe),
to be applied to the input file before sending it to the printer. So
lpr -l -Ffilter -Pprinter file
would be equivalent to
filter < file | lpr -l -Pprinter .
Follows a description of how to print different kinds of files on different
kinds of hardware if lpr had the features I am proposing.
--- Printing of text files with line-printers.
In a Cygwin environment one has at least three kinds of text files: Unix
text
files, Windows text files and DOS text files. Unix and Windows text files
usually use some iso-8859-* character set, while DOS uses an ibm-cp*
character
set. On the other hand Windows and DOS text files use CR-LF line
terminations,
while Unix files use LF line terminations. Most printers have a line-printer
mode in which they print each byte of a text file. In many cases, such as in
mine, the printer is DOS-compatible, what that means is that it uses an
ibm-cp*
character set, depending on the language you use, and of course it requires
a
CR-LF or LF-CR line termination.
In my case the printer and DOS use ibm-cp850, while cygwin and Windows use
iso-8859-1. In order to print a text file one has to:
for a DOS text file:
append FF, send raw to lpr;
for a Windows text file:
translate iso-8859-1 to ibm-cp850, append FF, send raw to lpr;
for a Unix text file:
translate iso-8859-1 to ibm-cp850, LF->CR-LF, append FF, send raw to lpr.
If lpr had the options I proposed (including the change of -l) and an
iso2ibm
filter were available the commands for printing text files were:
lpr -f -Pprinter DOS.txt
lpr -f -Fiso2ibm -Pprinter WINDOWS.txt
lpr -f -Fiso2ibm -l -Pprinter UNIX.txt
Right now I have to use scripts in order to accomplish the same tasks.
There are line-printers that use the iso-8859-* character set, in that case
WINDOWS and UNIX text files don't need to be preprocessed, but DOS file
would require an ibm2iso filter:
lpr -f -Fibm2iso -Pprinter DOS.txt
lpr -f -Pprinter WINDOWS.txt
lpr -f -l -Pprinter UNIX.txt
--- Using a postscript printer.
To print a postscript file would be trivial
lpr -Pprinter file.ps
To print a text file you need a formatting filter, that produces a
postscript
file from the text file. Call it txt2ps. txt2ps can be designed to process
both WINDOWS and UNIX files.
lpr -Ftxt2ps file.txt
For a DOS.TWX file you would need to previously apply an ibm2iso filter
lpr -Fibm2iso|txt2ps DOS.txt
--- Using other graphic printers.
Most modern printers have a graphic mode of operation, which use their
own graphic language. The printer I have is a HP color deskjet. The
ghostscript which is distributed by cygwin translate a postscript file
to any kind of other graphic languages. Using gs one can make a shell
script that behaves as a filter from pstscript to deskjet: ps2cdj.
Some examples of printing.
In order to print the output of a program like Word with the option "print
to file" one only needs to send the file raw to the printer
lpr -Pprinter file.cdj
For printing a postscript file
lpr -Fps2cdj -Pprinter file.ps
For printing a text file in graphic mode
lpr -Ftxt2ps|ps2cdj -Pprinter file.txt
lpr -Fibm2iso|txt2ps|ps2cdj -Pprinter DOS.txt
----------------------------------------------------------------------------
-----------
Rodrigo Medina.
------=_NextPart_000_01BC2B74.89D1CCC0
Content-Type: application/octet-stream; name="Printer.hh"
Content-Transfer-Encoding: base64
Content-Description: Printer.hh
Content-Disposition: attachment; filename="Printer.hh"
LyogCiAqIGxwciBmb3IgY3lnd2luL3dpbmRvd3MKICoKICogQ29weXJpZ2h0
IChDKSAyMDAwLTIwMDMgUmljayBSYW5raW4KICogaHR0cDovL3d3dy5jeWd3
aW4uY29tL21sL2N5Z3dpbi8yMDAwLTA3L21zZzAwMzIwLmh0bWwKICoKICog
VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAq
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUg
MzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojaWYgIWRl
ZmluZWQoUHJpbnRlcl9oaCkKI2RlZmluZSBQcmludGVyX2hoCgojaWYgSEFW
RV9DT05GSUdfSAojICBpbmNsdWRlICJjb25maWcuaCIKI2VuZGlmCiNpbmNs
dWRlICJjb21tb24uaCIKCiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxt
ZW1vcnk+CiNpbmNsdWRlIDx2ZWN0b3I+CgojaW5jbHVkZSAic3JjL2xwci9Q
cmludGVyRXhjZXB0aW9uLmhoIgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNs
YXNzIFByaW50ZXIKewpwdWJsaWM6CiAgUHJpbnRlcihjb25zdCBzdHJpbmcg
Jm5hbWUsIGJvb2wgZGVidWdGbGFnKQogICAgdGhyb3coUHJpbnRlckV4Y2Vw
dGlvbik7CiAgflByaW50ZXIoKTsKCiAgdm9pZCBjbG9zZSgpOwogIHZvaWQg
ZW5kRG9jKCkKICAgIHRocm93KFByaW50ZXJFeGNlcHRpb24pOwogIHZvaWQg
ZW5kUGFnZSgpCiAgICB0aHJvdyhQcmludGVyRXhjZXB0aW9uKTsKICB2b2lk
IGZsdXNoKCkKICAgIHRocm93KFByaW50ZXJFeGNlcHRpb24pOwogIGJvb2wg
Z2V0RmZGbGFnKCkgY29uc3Q7CiAgYm9vbCBnZXRSYXdGbGFnKCkgY29uc3Q7
CiAgdm9pZCBwcmludChpc3RyZWFtICYgaW4sIGNvbnN0IHN0cmluZyAmIGRv
Y05hbWUpCiAgICB0aHJvdyhQcmludGVyRXhjZXB0aW9uKTsKICB2b2lkIHB1
dCh1bnNpZ25lZCBjaGFyIGNoKQogICAgdGhyb3coUHJpbnRlckV4Y2VwdGlv
bik7CiAgdm9pZCBzZXRGZkZsYWcoYm9vbCBmbGFnKTsKICB2b2lkIHNldFJh
d0ZsYWcoYm9vbCBmbGFnKTsKICB2b2lkIHN0YXJ0RG9jKGNvbnN0IHN0cmlu
ZyAmIGRvY05hbWUpCiAgICB0aHJvdyhQcmludGVyRXhjZXB0aW9uKTsKICB2
b2lkIHN0YXJ0UGFnZSgpCiAgICB0aHJvdyhQcmludGVyRXhjZXB0aW9uKTsK
ICB2b2lkIHdyaXRlKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgdW5zaWduZWQgaW50
IHNpemUpCiAgICB0aHJvdyhQcmludGVyRXhjZXB0aW9uKTsKICAKcHJpdmF0
ZToKCiAgdHlwZWRlZiB2ZWN0b3I8UFJJTlRFUl9JTkZPXzU+IFByaW50ZXJM
aXN0OwogIAogIC8vIERvbid0IHdhbnQgY29weSBjb25zdHJ1Y3Rpb24gb3Ig
YXNzaWdubWVudC4KICBQcmludGVyKGNvbnN0IFByaW50ZXIgJiByaHMpOwog
IFByaW50ZXIgJiBvcGVyYXRvciA9IChjb25zdCBQcmludGVyICYgcmhzKTsK
ICAKICAvLyBFbnVtZXJhdGUgdGhlIGV4aXN0aW5nIHByaW50ZXJzLgogIFBy
aW50ZXJMaXN0IGVudW1QcmludGVycyhEV09SRCBmbGFncywgTFBUU1RSIG5h
bWUpCiAgICB0aHJvdyhQcmludGVyRXhjZXB0aW9uKTsKICAKICAvLyBNYXAg
YSBwb3J0IG5hbWUgKGxwdDEsIGV0YykgdG8gYSBkZXZpY2UgbmFtZS4KICB2
b2lkIG1hcFBvcnROYW1lKCkKICAgIHRocm93KFByaW50ZXJFeGNlcHRpb24p
OwoKICAvLyBPcGVuIHRoZSBwcmludGVyIGlmIGl0J3Mgbm90IGFscmVhZHkg
b3Blbi4KICB2b2lkIG9wZW4oKQogICAgdGhyb3coUHJpbnRlckV4Y2VwdGlv
bik7CiAgCiAgc3RyaW5nICAgICAgICAgIG1fZGV2TmFtZTsKICBib29sICAg
ICAgICAgICAgbV9kZWJ1Z0ZsYWc7CiAgSEFORExFICAgICAgICAgIG1fZGV2
SGFuZGxlOwogIERFVk1PREUgKiAgICAgICBtX2Rldk1vZGU7CiAgdW5zaWdu
ZWQgY2hhciAqIG1fYnVmZmVyOwogIHVuc2lnbmVkIGludCAgICBtX2J1ZmZl
clNpemU7CiAgdW5zaWduZWQgaW50ICAgIG1fYnVmZmVySW5kZXg7CiAgYm9v
bCAgICAgICAgICAgIG1fcmF3RmxhZzsKICBib29sICAgICAgICAgICAgbV9m
ZkZsYWc7Cn07CgojZW5kaWYgLyogUHJpbnRlcl9oaCAqLwo=
------=_NextPart_000_01BC2B74.89D1CCC0
Content-Type: application/octet-stream; name="Printer.cc"
Content-Transfer-Encoding: base64
Content-Description: Printer.cc
Content-Disposition: attachment; filename="Printer.cc"
LyogCiAqIGxwciBmb3IgY3lnd2luL3dpbmRvd3MKICoKICogQ29weXJpZ2h0
IChDKSAyMDAwLTIwMDMgUmljayBSYW5raW4KICogaHR0cDovL3d3dy5jeWd3
aW4uY29tL21sL2N5Z3dpbi8yMDAwLTA3L21zZzAwMzIwLmh0bWwKICoKICog
VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAq
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUg
MzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojaW5jbHVk
ZSAic3JjL2xwci9QcmludGVyLmhoIgojaW5jbHVkZSAic3JjL2xwci9XaW4z
MlV0aWxzLmhoIgoKaW5saW5lIExQVFNUUiB0c3RyKGNvbnN0IHN0cmluZyAm
IHN0cikKewogIHJldHVybiBjb25zdF9jYXN0PGNoYXIqPihzdHIuY19zdHIo
KSk7Cn0KClByaW50ZXI6OlByaW50ZXIoY29uc3Qgc3RyaW5nICZuYW1lLCBi
b29sIGRlYnVnRmxhZykKICB0aHJvdyhQcmludGVyRXhjZXB0aW9uKQogIDog
bV9kZXZOYW1lKG5hbWUpLAogICAgbV9kZWJ1Z0ZsYWcoZGVidWdGbGFnKSwK
ICAgIG1fZGV2SGFuZGxlKElOVkFMSURfSEFORExFX1ZBTFVFKSwKICAgIG1f
ZGV2TW9kZSgwKSwKICAgIG1fYnVmZmVyKDApLAogICAgbV9idWZmZXJTaXpl
KDQwOTYpLAogICAgbV9idWZmZXJJbmRleCgwKSwKICAgIG1fcmF3RmxhZyh0
cnVlKSwKICAgIG1fZmZGbGFnKGZhbHNlKQp7CiAgbV9idWZmZXIgPSBuZXcg
dW5zaWduZWQgY2hhclttX2J1ZmZlclNpemVdOwogIG1hcFBvcnROYW1lKCk7
CgogIG9wZW4oKTsKICAKICAvLyBJbml0aWFsaXplIHRoZSBERVZNT0RFIHN0
cnVjdHVyZQogIC8vIEdldCB0aGUgYW1vdW50IG9mIHNwYWNlIG5lZWRlZCBm
b3IgdGhlIGJ1ZmZlci4KICBEV09SRCBuZWVkZWQgPSBEb2N1bWVudFByb3Bl
cnRpZXMoTlVMTCwgbV9kZXZIYW5kbGUsIHRzdHIobV9kZXZOYW1lKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwg
MCk7CgogIG1fZGV2TW9kZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8REVWTU9ERSAq
PihuZXcgdW5zaWduZWQgY2hhcltuZWVkZWRdKTsKICAKICAvLyBHZXQgdGhl
IGRlZmF1bHQgREVWTU9ERSBmb3IgdGhlIHByaW50ZXIuCiAgRFdPUkQgcmV0
ID0gRG9jdW1lbnRQcm9wZXJ0aWVzKE5VTEwsIG1fZGV2SGFuZGxlLCB0c3Ry
KG1fZGV2TmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZGV2TW9kZSwgTlVMTCwgRE1fT1VUX0JVRkZFUik7CiAgaWYgKHJldCAh
PSBJRE9LKQogICAgdGhyb3cgUHJpbnRlckV4Y2VwdGlvbigiZXJyb3IgZ2V0
dGluZyB0aGUgZGVmYXVsdCBkZXZpY2UgbW9kZTogIiArCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdpbjMyVXRpbHM6OmdldEVycm9yTWVzc2FnZSgp
KTsKCiAgLy8gQ2xvc2UgdGhlIHByaW50ZXIsIGJlY2F1c2Ugd2UnbGwgbmVl
ZCB0byByZW9wZW4gaXQgbGF0ZXIsIHBhc3NpbmcgaXQKICAvLyB0aGUgREVW
TU9ERSBzdHJ1Y3R1cmUgd2l0aCBhbnkgb3B0aW9uYWwgY2hhbmdlcyBieSB0
aGUgdXNlci4KICBjbG9zZSgpOwp9CgpQcmludGVyOjp+UHJpbnRlcigpCnsK
ICBjbG9zZSgpOwogIGlmIChtX2J1ZmZlciAhPSAwKQogICAgZGVsZXRlIFtd
IG1fYnVmZmVyOwogIGlmIChtX2Rldk1vZGUgIT0gMCkKICAgIGRlbGV0ZSBt
X2Rldk1vZGU7Cn0KCnZvaWQgUHJpbnRlcjo6Y2xvc2UoKQp7CiAgaWYgKG1f
ZGV2SGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQogIHsKICAgIENs
b3NlUHJpbnRlcihtX2RldkhhbmRsZSk7CiAgICBtX2RldkhhbmRsZSA9IElO
VkFMSURfSEFORExFX1ZBTFVFOwogIH0KfQoKdm9pZCBQcmludGVyOjplbmRE
b2MoKQogIHRocm93KFByaW50ZXJFeGNlcHRpb24pCnsKICBpZiAoIUVuZERv
Y1ByaW50ZXIobV9kZXZIYW5kbGUpKQogICAgdGhyb3cgUHJpbnRlckV4Y2Vw
dGlvbigiRW5kRG9jUHJpbnRlciBlcnJvcjogIiArCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdpbjMyVXRpbHM6OmdldEVycm9yTWVzc2FnZSgpKTsK
fQoKdm9pZCBQcmludGVyOjplbmRQYWdlKCkKICB0aHJvdyhQcmludGVyRXhj
ZXB0aW9uKQp7CiAgY291dCA8PCAiUHJpbnRlcjo6ZW5kUGFnZSgpIiA8PCBl
bmRsOwogIGlmICghRW5kUGFnZVByaW50ZXIobV9kZXZIYW5kbGUpKQogICAg
dGhyb3cgUHJpbnRlckV4Y2VwdGlvbigiRW5kUGFnZVByaW50ZXIgZXJyb3I6
ICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICBXaW4zMlV0aWxzOjpn
ZXRFcnJvck1lc3NhZ2UoKSk7Cn0KCnZvaWQgUHJpbnRlcjo6Zmx1c2godm9p
ZCkKICB0aHJvdyhQcmludGVyRXhjZXB0aW9uKQp7CiAgaWYgKG1fYnVmZmVy
SW5kZXggPiAwKQogIHsKICAgIHdyaXRlKG1fYnVmZmVyLCBtX2J1ZmZlcklu
ZGV4KTsKICAgIG1fYnVmZmVySW5kZXggPSAwOwogIH0KfQoKYm9vbCBQcmlu
dGVyOjpnZXRGZkZsYWcoKSBjb25zdAp7CiAgcmV0dXJuIG1fZmZGbGFnOwp9
Cgpib29sIFByaW50ZXI6OmdldFJhd0ZsYWcoKSBjb25zdAp7CiAgcmV0dXJu
IG1fcmF3RmxhZzsKfQoKdm9pZCBQcmludGVyOjpwcmludChpc3RyZWFtICYg
aW4sIGNvbnN0IHN0cmluZyAmIGRvY05hbWUpCiAgdGhyb3coUHJpbnRlckV4
Y2VwdGlvbikKewogIHN0YXJ0RG9jKGRvY05hbWUpOwoKICBjaGFyIGNoOwog
IGNoYXIgbGFzdENoID0gJ1wwJzsKICB3aGlsZSAoaW4uZ2V0KGNoKSkKICB7
CiAgICBpZiAoIW1fcmF3RmxhZyAmJiBjaCA9PSAnXG4nICYmIGxhc3RDaCAh
PSAnXHInKQogICAgICBwdXQoJ1xyJyk7CiAgICBwdXQoY2gpOwogICAgbGFz
dENoID0gY2g7CiAgfQogIGlmKG1fZmZGbGFnKSBwdXQoJ1xmJyk7CiAgZmx1
c2goKTsKICBlbmREb2MoKTsKfQoKdm9pZCBQcmludGVyOjpwdXQodW5zaWdu
ZWQgY2hhciBjaCkKICB0aHJvdyhQcmludGVyRXhjZXB0aW9uKQp7CiAgaWYg
KG1fYnVmZmVySW5kZXggPT0gbV9idWZmZXJTaXplKQogICAgZmx1c2goKTsK
ICBtX2J1ZmZlclttX2J1ZmZlckluZGV4KytdID0gY2g7Cn0KCnZvaWQgUHJp
bnRlcjo6c2V0RmZGbGFnKGJvb2wgZmxhZykKewogIG1fZmZGbGFnID0gZmxh
ZzsKfQoKdm9pZCBQcmludGVyOjpzZXRSYXdGbGFnKGJvb2wgZmxhZykKewog
IG1fcmF3RmxhZyA9IGZsYWc7Cn0KCnZvaWQgUHJpbnRlcjo6c3RhcnREb2Mo
Y29uc3Qgc3RyaW5nICYgZG9jTmFtZSkKICB0aHJvdyhQcmludGVyRXhjZXB0
aW9uKQp7CiAgRE9DX0lORk9fMSAgICBkaTE7CiAgCiAgb3BlbigpOwogIAog
IGRpMS5wRG9jTmFtZSA9IHRzdHIoZG9jTmFtZSk7CiAgZGkxLnBPdXRwdXRG
aWxlID0gMDsKICBkaTEucERhdGF0eXBlID0gIlJBVyI7CiAgCiAgaWYgKFN0
YXJ0RG9jUHJpbnRlcihtX2RldkhhbmRsZSwgMSwgKExQQllURSkgJmRpMSkg
PT0gMCkKICAgIHRocm93IFByaW50ZXJFeGNlcHRpb24oIlN0YXJ0RG9jUHJp
bnRlciBlcnJvcjogIiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFdp
bjMyVXRpbHM6OmdldEVycm9yTWVzc2FnZSgpKTsKfQoKdm9pZCBQcmludGVy
OjpzdGFydFBhZ2UoKQogIHRocm93KFByaW50ZXJFeGNlcHRpb24pCnsKICBj
b3V0IDw8ICJQcmludGVyOjpzdGFydFBhZ2UoKSIgPDwgZW5kbDsKICBpZiAo
IVN0YXJ0UGFnZVByaW50ZXIobV9kZXZIYW5kbGUpKQogICAgdGhyb3cgUHJp
bnRlckV4Y2VwdGlvbigiU3RhcnRQYWdlUHJpbnRlciBlcnJvcjogIiArCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdpbjMyVXRpbHM6OmdldEVycm9y
TWVzc2FnZSgpKTsKfQoKdm9pZCBQcmludGVyOjp3cml0ZSh1bnNpZ25lZCBj
aGFyICpidWYsIHVuc2lnbmVkIGludCBzaXplKQogIHRocm93KFByaW50ZXJF
eGNlcHRpb24pCnsKICBEV09SRCB3cml0dGVuOwogIGlmICghV3JpdGVQcmlu
dGVyKG1fZGV2SGFuZGxlLCBidWYsIHNpemUsICZ3cml0dGVuKSkKICAgIHRo
cm93IFByaW50ZXJFeGNlcHRpb24oImVycm9yIHdyaXRpbmcgdG8gZGV2aWNl
ICciICsgbV9kZXZOYW1lICsgIic6ICIgKwogICAgICAgICAgICAgICAgICAg
ICAgICAgICBXaW4zMlV0aWxzOjpnZXRFcnJvck1lc3NhZ2UoKSk7Cn0KCi8v
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vCi8vIFByaXZhdGUg
b3BlcmF0aW9ucwovLwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgoKUHJpbnRlcjo6UHJpbnRlckxpc3QgUHJpbnRlcjo6ZW51bVByaW50ZXJz
KERXT1JEIGZsYWdzLCBMUFRTVFIgbmFtZSkKICB0aHJvdyhQcmludGVyRXhj
ZXB0aW9uKQp7CiAgRFdPUkQgbnVtUHJpbnRlcnM7CiAgRFdPUkQgYnl0ZXNO
ZWVkZWQ7CiAgRW51bVByaW50ZXJzKGZsYWdzLCBuYW1lLCA1LCAwLCAwLCAm
Ynl0ZXNOZWVkZWQsICZudW1QcmludGVycyk7CiAgYXV0b19wdHI8QllURT4g
ZW51bUJ1ZmZlcihuZXcgQllURVtieXRlc05lZWRlZF0pOwogIGlmICghRW51
bVByaW50ZXJzKGZsYWdzLCBuYW1lLCA1LCBlbnVtQnVmZmVyLmdldCgpLCBi
eXRlc05lZWRlZCwKICAgICAgICAgICAgICAgICAgICAmYnl0ZXNOZWVkZWQs
ICZudW1QcmludGVycykpCiAgICB0aHJvdyBQcmludGVyRXhjZXB0aW9uKCJ1
bmFibGUgdG8gZW51bWVyYXRlIHByaW50ZXJzOiAiICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2luMzJVdGlsczo6Z2V0RXJyb3JNZXNzYWdlKCkp
OwoKICBQUklOVEVSX0lORk9fNSAqcGkgPSByZWludGVycHJldF9jYXN0PFBS
SU5URVJfSU5GT181ICo+KGVudW1CdWZmZXIuZ2V0KCkpOwoKICBQcmludGVy
TGlzdCBsaXN0OwogIGZvciAodW5zaWduZWQgaW50IGlpID0gMDsgaWkgPCBu
dW1QcmludGVyczsgKytpaSkKICB7CiAgICBpZiAobV9kZWJ1Z0ZsYWcpCiAg
ICAgIGNlcnIgPDwgIlByaW50ZXIgbmFtZTogJyIgPDwgcGktPnBQcmludGVy
TmFtZSA8PCAiJywgIgogICAgICAgICAgIDw8ICJQb3J0IG5hbWU6ICciIDw8
IHBpLT5wUG9ydE5hbWUgPDwgIiciIDw8IGVuZGw7CiAgICBsaXN0LnB1c2hf
YmFjaygqcGkrKyk7CiAgfQoKICByZXR1cm4gbGlzdDsKfQoKdm9pZCBQcmlu
dGVyOjptYXBQb3J0TmFtZSgpCiAgdGhyb3coUHJpbnRlckV4Y2VwdGlvbikK
ewoKICBPU1ZFUlNJT05JTkZPIG9zdmk7CiAgb3N2aS5kd09TVmVyc2lvbklu
Zm9TaXplID0gc2l6ZW9mKE9TVkVSU0lPTklORk8pOwogIEdldFZlcnNpb25F
eCgmb3N2aSk7CiAgYm9vbCBpc1dpbmRvd3M5eCA9IChvc3ZpLmR3UGxhdGZv
cm1JZCA9PSBWRVJfUExBVEZPUk1fV0lOMzJfV0lORE9XUyAmJgogICAgICAg
ICAgICAgICAgICAgICAgKG9zdmkuZHdNYWpvclZlcnNpb24gPiA0IHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgKG9zdmkuZHdNYWpvclZlcnNpb24gPT0g
NCAmJiBvc3ZpLmR3TWlub3JWZXJzaW9uID4gMCkpKTsKCiAgYm9vbCBpc1dp
bmRvd3MyS19OVDQgPSAob3N2aS5kd1BsYXRmb3JtSWQgPT0gVkVSX1BMQVRG
T1JNX1dJTjMyX05UICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3N2
aS5kd01ham9yVmVyc2lvbiA+PSA0KTsKCiAgaWYgKG1fZGVidWdGbGFnKQog
ICAgY291dCA8PCAiaXNXaW5kb3dzOXggPSAiIDw8IGlzV2luZG93czl4IDw8
ICIsICIKICAgICAgICAgPDwgImlzV2luZG93czJLX05UNCA9ICIgPDwgaXNX
aW5kb3dzMktfTlQ0IDw8IGVuZGw7CgoKICBpZiAoaXNXaW5kb3dzOXgpCiAg
ewogICAgUHJpbnRlckxpc3QgbGlzdCA9IGVudW1QcmludGVycyhQUklOVEVS
X0VOVU1fTkFNRSwgIiIpOwogICAgZm9yIChQcmludGVyTGlzdDo6aXRlcmF0
b3IgaXQgPSBsaXN0LmJlZ2luKCk7IGl0ICE9IGxpc3QuZW5kKCk7ICsraXQp
CiAgICB7CiAgICAgIGlmIChzdHJpY21wKG1fZGV2TmFtZS5jX3N0cigpLCBp
dC0+cFBvcnROYW1lKSA9PSAwKQogICAgICB7CiAgICAgICAgaWYgKG1fZGVi
dWdGbGFnKQogICAgICAgICAgY291dCA8PCAiTWFwcGVkICciIDw8IG1fZGV2
TmFtZSA8PCAiJyB0byAnIiA8PCBpdC0+cFByaW50ZXJOYW1lCiAgICAgICAg
ICAgICAgIDw8ICInIiA8PCBlbmRsOwogICAgICAgIG1fZGV2TmFtZSA9IGl0
LT5wUHJpbnRlck5hbWU7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICB9
CiAgfSAgICAgIAoKICBlbHNlIGlmIChpc1dpbmRvd3MyS19OVDQpCiAgewog
ICAgUHJpbnRlckxpc3QgbGlzdCA9IGVudW1QcmludGVycyhQUklOVEVSX0VO
VU1fTE9DQUwsIDApOwogICAgZm9yIChQcmludGVyTGlzdDo6aXRlcmF0b3Ig
aXQgPSBsaXN0LmJlZ2luKCk7IGl0ICE9IGxpc3QuZW5kKCk7ICsraXQpCiAg
ICB7CiAgICAgIGlmIChzdHJpY21wKG1fZGV2TmFtZS5jX3N0cigpLCBpdC0+
cFBvcnROYW1lKSA9PSAwKQogICAgICB7CiAgICAgICAgaWYgKG1fZGVidWdG
bGFnKQogICAgICAgICAgY291dCA8PCAiTWFwcGVkICciIDw8IG1fZGV2TmFt
ZSA8PCAiJyB0byAnIiA8PCBpdC0+cFByaW50ZXJOYW1lCiAgICAgICAgICAg
ICAgIDw8ICInIiA8PCBlbmRsOwogICAgICAgIG1fZGV2TmFtZSA9IGl0LT5w
UHJpbnRlck5hbWU7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICB9CiAg
ICAKICAgIGxpc3QgPSBlbnVtUHJpbnRlcnMoUFJJTlRFUl9FTlVNX0NPTk5F
Q1RJT05TLCAwKTsKICAgIGZvciAoUHJpbnRlckxpc3Q6Oml0ZXJhdG9yIGl0
ID0gbGlzdC5iZWdpbigpOyBpdCAhPSBsaXN0LmVuZCgpOyArK2l0KQogICAg
ewogICAgICBpZiAoc3RyaWNtcChtX2Rldk5hbWUuY19zdHIoKSwgaXQtPnBQ
b3J0TmFtZSkgPT0gMCkKICAgICAgewogICAgICAgIGlmIChtX2RlYnVnRmxh
ZykKICAgICAgICAgIGNvdXQgPDwgIk1hcHBlZCAnIiA8PCBtX2Rldk5hbWUg
PDwgIicgdG8gJyIgPDwgaXQtPnBQcmludGVyTmFtZQogICAgICAgICAgICAg
ICA8PCAiJyIgPDwgZW5kbDsKICAgICAgICBtX2Rldk5hbWUgPSBpdC0+cFBy
aW50ZXJOYW1lOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogIH0K
fQoKdm9pZCBQcmludGVyOjpvcGVuKCkKICB0aHJvdyhQcmludGVyRXhjZXB0
aW9uKQp7CiAgUFJJTlRFUl9ERUZBVUxUUyBwckRlZjsKICAKICBwckRlZi5w
RGF0YXR5cGUgPSAiUkFXIjsKICBwckRlZi5wRGV2TW9kZSA9IG1fZGV2TW9k
ZTsKICBwckRlZi5EZXNpcmVkQWNjZXNzID0gUFJJTlRFUl9BQ0NFU1NfVVNF
OwogIAogIGlmIChtX2RldkhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxV
RSAmJgogICAgICAhT3BlblByaW50ZXIodHN0cihtX2Rldk5hbWUpLCAmbV9k
ZXZIYW5kbGUsICZwckRlZikpCiAgICB0aHJvdyBQcmludGVyRXhjZXB0aW9u
KCJjYW4ndCBvcGVuICciICsgbV9kZXZOYW1lICsgIicgZm9yIHdyaXRpbmc6
ICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICBXaW4zMlV0aWxzOjpn
ZXRFcnJvck1lc3NhZ2UoKSk7Cn0K
------=_NextPart_000_01BC2B74.89D1CCC0
Content-Type: application/octet-stream; name="lpr.cc"
Content-Transfer-Encoding: base64
Content-Description: lpr.cc
Content-Disposition: attachment; filename="lpr.cc"
LyogCiAqIGxwciBmb3IgY3lnd2luL3dpbmRvd3MKICoKICogQ29weXJpZ2h0
IChDKSAyMDAwLTIwMDMgUmljayBSYW5raW4KICogaHR0cDovL3d3dy5jeWd3
aW4uY29tL21sL2N5Z3dpbi8yMDAwLTA3L21zZzAwMzIwLmh0bWwKICoKICog
VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAq
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUg
MzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojaWYgSEFW
RV9DT05GSUdfSAojICBpbmNsdWRlICJjb25maWcuaCIKI2VuZGlmCiNpbmNs
dWRlICJjb21tb24uaCIKCiNpbmNsdWRlIDxmc3RyZWFtPgojaW5jbHVkZSA8
c3RyaW5nPgoKI2luY2x1ZGUgPHN5cy9jeWd3aW4uaD4KCiNpbmNsdWRlICJz
cmMvbHByL1ByaW50ZXIuaGgiCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3Ry
aW5nIHByb2dOYW1lOwoKc3RyaW5nIGdldFByb2dyYW1OYW1lKGNvbnN0IHN0
cmluZyAmIHN0cikKewogIHN0cmluZzo6c2l6ZV90eXBlIGxhc3RTbGFzaFBv
cyA9IHN0ci5maW5kX2xhc3Rfb2YoIlxcLyIpOwogIGlmIChsYXN0U2xhc2hQ
b3MgPT0gc3RyaW5nOjpucG9zKQogICAgbGFzdFNsYXNoUG9zID0gMDsKICBl
bHNlCiAgICArK2xhc3RTbGFzaFBvczsKICBzdHJpbmc6OnNpemVfdHlwZSBk
b3RQb3MgPSBzdHIuZmluZF9sYXN0X29mKCIuIik7CiAgaWYgKGRvdFBvcyA9
PSBzdHJpbmc6Om5wb3MgfHwgZG90UG9zIDwgbGFzdFNsYXNoUG9zKQogICAg
ZG90UG9zID0gc3RyLmxlbmd0aCgpOwogIHJldHVybiBzdHIuc3Vic3RyKGxh
c3RTbGFzaFBvcywgZG90UG9zIC0gbGFzdFNsYXNoUG9zKTsKfQoKY29uc3Qg
Y2hhciAqIHVzYWdlTWVzc2FnZSA9CiIgWy1oXSBbLURdIFstZCBkZXZpY2Vd
IFstZl0gWy1GIEZpbHRlcl0gWy1sXSBbLVAgZGV2aWNlXSBbRmlsZXNdXG4i
CiJcbiIKIndoZXJlOlxuIgoiXG4iCiIgICBGaWxlcyAgICBsaXN0IG9mIGZp
bGVzIHRvIGJlIHByaW50ZWQuIElmIGl0IGlzIG1pc2luZywgdGhlIHN0YW5k
YXJkXG4iCiIgICAgICAgICAgICBpbnB1dCBpcyBwcmludGVkLlxuIgoiICAt
aCAgICAgICAgZG9lcyBub3RoaW5nLiBBY2NlcHRlZCBmb3IgY29tcGF0aWJp
bGl0eS5cbiIKIiAgLWQgZGV2aWNlIHNwb29scyB0byB0aGUgc3BlY2lmaWVk
IGRldmljZS5cbiIKIiAgLUQgICAgICAgIGVuYWJsZSBkZWJ1Z2dpbmcgb3V0
cHV0LlxuIgoiICAtZiAgICAgICAgYXBwZW5kcyA8RkY+IGZvciBlamVjdGlu
ZyB0aGUgbGFzdCBwYWdlLlxuIgoiICAtRiBGaWx0ZXIgYXBwbGllcyB0aGUg
c3BlY2lmaWVkIGZpbHRlciBiZWZvcmUgc3Bvb2xpbmcuXG4iCiIgIC1sICAg
ICAgICBlbmFibGUgPExGPiAtPiA8Q1I+PExGPiBwcm9jZXNzaW5nLlxuIgoi
ICAtUCBkZXZpY2Ugc3Bvb2xzIHRvIHRoZSBzcGVjaWZpZWQgZGV2aWNlLlxu
IgoiXG4iCiJOb3RlczpcbiIKIlxuIgoiLWQgYW5kIC1QIGFyZSBhbGlhc2Vz
IG9mIGVhY2ggb3RoZXIgYW5kIHBlcmZvcm0gdGhlIHNhbWUgZnVuY3Rpb24u
XG4iCiJEZXZpY2UgbmFtZXMgbWF5IHRha2UgdGhlIGZvcm0gb2YgRE9TIGRl
dmljZXMgKGUuZy4sIGxwdDE6KSBpZiB0aGUgcHJpbnRlclxuIgoiaXMgY29u
bmVjdGVkIGxvY2FsbHkuIE5ldHdvcmsgcHJpbnRlcnMgY2FuIGJlIGFjY2Vz
c2VkIHVzaW5nIHRoZSBmb3JtXG4iCiInXFxcXHNlcnZlclxccHJpbnRlcl9u
YW1lJy4gRm9yd2FyZCBzbGFzaGVzIGNhbiBiZSB1c2VkIGFzIHdlbGwsIGUu
Zy4sXG4iCiInLy9zZXJ2ZXIvcHJpbnRlcl9uYW1lJy5cbiIKIlxuIgoiVGhl
IGVudmlyb25tZW50IHZhcmlhYmxlIFBSSU5URVIgY2FuIGJlIHVzZWQgdG8g
c2V0IHRoZSBkZWZhdWx0IHByaW50ZXJcbiIKImRldmljZS5cbiI7Cgp2b2lk
IHVzYWdlKGNvbnN0IHN0cmluZyAmIG1zZyA9ICIiKQp7CiAgaWYgKG1zZyAh
PSAiIikKICAgIGNlcnIgPDwgcHJvZ05hbWUgPDwgIjogIiA8PCBtc2cgPDwg
ZW5kbCA8PCBlbmRsOwoKICBjZXJyIDw8ICJVc2FnZTogIiA8PCBwcm9nTmFt
ZSA8PCB1c2FnZU1lc3NhZ2U7CiAgZXhpdCgxKTsKfQoKaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogIHByb2dOYW1lID0gZ2V0UHJvZ3Jh
bU5hbWUoYXJndlswXSk7CiAgc3RyaW5nIHByaW50ZXJOYW1lID0gIiI7CiAg
c3RyaW5nIGZpbHRlck5hbWUgPSAiIjsKCiAgLy8gSXMgdGhlIHByaW50ZXIg
c3BlY2lmaWVkIGluIHRoZSBlbnZpcm9ubWVudD8KICBjb25zdCBjaGFyICpw
ID0gZ2V0ZW52KCJQUklOVEVSIik7CiAgaWYgKHAgIT0gMCkKICAgIHByaW50
ZXJOYW1lID0gcDsKCiAgYm9vbCBkZWJ1Z0ZsYWcgPSBmYWxzZTsKICBib29s
IHJhd0ZsYWcgPSB0cnVlOwogIGJvb2wgZmZGbGFnID0gZmFsc2U7CgogIGlu
dCBvcHRpb25DaGFyOwogIHdoaWxlICgob3B0aW9uQ2hhciA9IGdldG9wdChh
cmdjLCBhcmd2LCAiOkRkOmhmRjpsUDoiKSkgIT0gRU9GKQogIHsKICAgIHN3
aXRjaCAob3B0aW9uQ2hhcikKICAgIHsKICAgIGNhc2UgJ2gnOgogICAgICAv
LyBhY2NlcHQgZm9yIGNvbXBhdGliaWxpdHkKICAgICAgYnJlYWs7CiAgICBj
YXNlICdEJzoKICAgICAgZGVidWdGbGFnID0gdHJ1ZTsKICAgICAgYnJlYWs7
CiAgICBjYXNlICdkJzoKICAgIGNhc2UgJ1AnOgogICAgICBwcmludGVyTmFt
ZSA9IG9wdGFyZzsKICAgICAgYnJlYWs7CiAgICBjYXNlICdmJzoKICAgICAg
ZmZGbGFnID0gdHJ1ZTsKICAgICAgYnJlYWs7CiAgICBjYXNlICdGJzoKICAg
ICAgZmlsdGVyTmFtZSA9IG9wdGFyZzsKICAgICAgYnJlYWs7CiAgICBjYXNl
ICdsJzoKICAgICAgcmF3RmxhZyA9IGZhbHNlOwogICAgICBicmVhazsKICAg
IGRlZmF1bHQ6CiAgICAgIHVzYWdlKHN0cmluZygidW5rbm93biBvcHRpb246
IC0iKSArIGNoYXIob3B0aW9uQ2hhcikpOwogICAgfQogIH0KCiAgLy8gQ2Fu
J3QgcHJvY2VlZCB3aXRob3V0IGEgcHJpbnRlciBuYW1lLgogIGlmIChwcmlu
dGVyTmFtZSA9PSAiIikKICB7CiAgICBjZXJyIDw8IHByb2dOYW1lIDw8ICI6
IG5vIHByaW50ZXIgc3BlY2lmaWVkIiA8PCBlbmRsOwogICAgcmV0dXJuIDE7
CiAgfQoKICBjaGFyIHdpblByaW50ZXJbTUFYX1BBVEhdOwogIGNoYXIgKmlu
VG1wLCAqb3V0VG1wLCBDb21tYW5kW01BWF9QQVRIXTsKICBjeWd3aW5fY29u
dl90b193aW4zMl9wYXRoKHByaW50ZXJOYW1lLmNfc3RyKCksIHdpblByaW50
ZXIpOwogIGlmIChkZWJ1Z0ZsYWcpCiAgICBjb3V0IDw8ICJXaW5kb3dzIHBy
aW50ZXIgbmFtZSA9ICciIDw8IHdpblByaW50ZXIgPDwgIiciIDw8IGVuZGw7
CiAgCiAgdHJ5CiAgewogICAgUHJpbnRlciBwcih3aW5QcmludGVyLCBkZWJ1
Z0ZsYWcpOwogICAgcHIuc2V0UmF3RmxhZyhyYXdGbGFnKTsKICAgIHByLnNl
dEZmRmxhZyhmZkZsYWcpOwogICAgCiAgICBpZiAob3B0aW5kID49IGFyZ2Mp
CiAgICB7CiAgICAgIGlmIChmaWx0ZXJOYW1lID09ICIiKQogICAgICAgICBw
ci5wcmludChjaW4sICJzdGRpbiIpOwogICAgICBlbHNlCiAgICAgIHsKICAg
ICAgICBjaGFyIGM7CiAgICAgICAgb3V0VG1wID0gdGVtcG5hbShOVUxMLCJv
bHByIik7CiAgICAgICAgaW5UbXAgID0gdGVtcG5hbShOVUxMLCJpbHByIik7
CiAgICAgICAgb2ZzdHJlYW0gb3V0IChpblRtcCk7CiAgICAgICAgaWYgKCFv
dXQpCiAgICAgICAgewogICAgICAgICAgY2VyciA8PCBwcm9nTmFtZSA8PCAi
OiBjYW4ndCBvcGVuICciIDw8IGluVG1wIDw8ICInIGZvciBvdXRwdXQuIgog
ICAgICAgICAgICAgICA8PCBlbmRsOwogICAgICAgICAgICByZXR1cm4gMTsK
ICAgICAgICB9CiAgICAgICAgd2hpbGUoY2luLmdldChjKSlvdXQucHV0KGMp
OwogICAgICAgIG91dC5jbG9zZSgpOwogICAgICAgIHN0cmNweShDb21tYW5k
LCJjYXQgPCAiKTsKICAgICAgICBzdHJjYXQoQ29tbWFuZCxpblRtcCk7CiAg
ICAgICAgc3RyY2F0KENvbW1hbmQsIiB8ICIpOwogICAgICAgIHN0cmNhdChD
b21tYW5kLGZpbHRlck5hbWUuY19zdHIoKSk7CiAgICAgICAgc3RyY2F0KENv
bW1hbmQsIiA+ICIpOwogICAgICAgIHN0cmNhdChDb21tYW5kLG91dFRtcCk7
CiAgICAgICAgc3lzdGVtKENvbW1hbmQpOwogICAgICAgIHJlbW92ZShpblRt
cCk7CiAgICAgICAgaWZzdHJlYW0gaW4gKG91dFRtcCk7CiAgICAgICAgaWYg
KCFpbikKICAgICAgICB7CiAgICAgICAgICAgY2VyciA8PCBwcm9nTmFtZSA8
PCAiOiBjYW4ndCBvcGVuICciIDw8IG91dFRtcCA8PCAiJyBmb3IgaW5wdXQu
IgogICAgICAgICAgICAgICA8PCBlbmRsOwogICAgICAgICAgIHJldHVybiAx
OwogICAgICAgIH0KICAgICAgICBwci5wcmludChpbiwgInN0ZGluIik7CiAg
ICAgICAgaW4uY2xvc2UoKTsKICAgICAgICByZW1vdmUob3V0VG1wKTsKICAg
ICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICBmb3IgKGludCBpaSA9
IG9wdGluZDsgaWkgPCBhcmdjOyArK2lpKQogICAgICB7CiAgICAgICAgaWZz
dHJlYW0gaW4gKGFyZ3ZbaWldKTsKICAgICAgICBpZiAoIWluKQogICAgICAg
ICAgY2VyciA8PCBwcm9nTmFtZSA8PCAiOiBjYW4ndCBvcGVuICciIDw8IGFy
Z3ZbaWldIDw8ICInIGZvciBpbnB1dC4iCiAgICAgICAgICAgICAgIDw8IGVu
ZGw7CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgIGlmIChmaWx0
ZXJOYW1lID09ICIiKQogICAgICAgICAgICAgcHIucHJpbnQoaW4sIGFyZ3Zb
aWldKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICAg
IGluLmNsb3NlKCk7CiAgICAgICAgICAgICBvdXRUbXAgPSB0ZW1wbmFtKE5V
TEwsIm9scHIiKTsKICAgICAgICAgICAgIHN0cmNweShDb21tYW5kLCJjYXQg
PCAiKTsKICAgICAgICAgICAgIHN0cmNhdChDb21tYW5kLGFyZ3ZbaWldKTsK
ICAgICAgICAgICAgIHN0cmNhdChDb21tYW5kLCIgfCAiKTsKICAgICAgICAg
ICAgIHN0cmNhdChDb21tYW5kLGZpbHRlck5hbWUuY19zdHIoKSk7CiAgICAg
ICAgICAgICBzdHJjYXQoQ29tbWFuZCwiID4gIik7CiAgICAgICAgICAgICBz
dHJjYXQoQ29tbWFuZCxvdXRUbXApOwogICAgICAgICAgICAgc3lzdGVtKENv
bW1hbmQpOwogICAgICAgICAgICAgaWZzdHJlYW0gaW4gKG91dFRtcCk7CiAg
ICAgICAgICAgICBpZiAoIWluKQogICAgICAgICAgICAgewogICAgICAgICAg
Y2VyciA8PCBwcm9nTmFtZSA8PCAiOiBjYW4ndCBvcGVuICciIDw8IG91dFRt
cCA8PCAiJyBmb3IgaW5wdXQuIgogICAgICAgICAgICAgICA8PCBlbmRsOwog
ICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHByLnByaW50KGluLCBhcmd2W2lpXSk7CiAgICAgICAgICAgICBp
bi5jbG9zZSgpOwogICAgICAgICAgICAgcmVtb3ZlKG91dFRtcCk7CiAgICAg
ICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBwci5jbG9zZSgp
OwogIH0KICBjYXRjaCAoY29uc3QgUHJpbnRlckV4Y2VwdGlvbiAmIGV4KQog
IHsKICAgIGNlcnIgPDwgcHJvZ05hbWUgPDwgIjogcHJpbnRlciBlcnJvcjog
IiA8PCBleCA8PCBlbmRsOwogICAgcmV0dXJuIDE7CiAgfQoKICByZXR1cm4g
MDsKfQo=
------=_NextPart_000_01BC2B74.89D1CCC0
Content-Type: application/octet-stream; name="lpr.1"
Content-Transfer-Encoding: base64
Content-Description: lpr.1
Content-Disposition: attachment; filename="lpr.1"
LlwiICAgICAgICAgICAgIC0qLU5yb2ZmLSotCi5cIiAgRnJlZWx5IGRpc3Ry
aWJ1dGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwKLlRIIExQUiAx
ICIxOSBGZWIgMjAwNCAiICIiICIiCi5TSCBOQU1FCmxwciBcLSBTcG9vbCBm
aWxlcyB0byBhIHByaW50ZXIKLlNIIFNZTk9QU0lTCi5CUiAibHByICIgWyAi
XC1EIiAiXSBbIiAiXC1kIgouSSBkZXZpY2UKLlJCICJdIFsiICJcLWYiICJd
IFsiICJcLUYiCi5JIGZpbHRlciBwaXBlCi5SQiAiXSBbIiAiXC1oIiAiXSBb
IiAiXC1sIiAiXSBbIiAiXC1QIgouSSBkZXZpY2UKLlJCICJdIFsiICIKLkkg
ZmlsZXMgLi4uCi5SQiAiXQouU0ggREVTQ1JJUFRJT04KXGZCbHByXGZQIHNw
b29scyBhIGxpc3Qgb2YgZmlsZXMgdG8gdGhlIHNwZWNpZmllZCBwcmludGVy
IGRldmljZS4gSWYgdGhlCmxpc3Qgb2YgXGZJZmlsZXNcZlAgaXMgbWlzc2lu
ZyB0aGUgc3RhbmRhcmQgaW5wdXQgaXMgcHJpbnRlZC4gIE5vIGZvcm1hdHRp
bmcKaXMgZG9uZSAtLSBkYXRhIGlzIHNlbnQgInJhdyIuIFRoaXMgaXMgdXNl
ZnVsLCBmb3IgZXhhbXBsZSwgZm9yIHNlbmRpbmcKUG9zdHNjcmlwdCBkYXRh
IHRvIGEgUG9zdHNjcmlwdCBwcmludGVyLiBUaGUgXGZCLUZcZlAgb3B0aW9u
IGFsbG93cyBmb3IKYW55IGtpbmQgb2YgZmlsZSBwcmVwcm9jZXNzaW5nLgou
U0ggT1BUSU9OUwouVFAKXGZCLURcZlAKZW5hYmxlcyBzb21lIGRlYnVnZ2lu
ZyBvdXRwdXQuCi5UUApcZkItZFxmUCBcZklkZXZpY2VcZlAKc3BlY2lmaWVz
IHRoZSBcZklkZXZpY2VcZlAgdG8gd2hpY2ggdG8gc2VuZCB0aGUgb3V0cHV0
LgouVFAKXGZCLWZcZlAKYXBwZW5kcyBhIEZGIGNoYXJhY3RlciBmb3IgZWpl
Y3RpbmcgdGhlIGxhc3QgcGFnZS4KLlRQClxmQi1GXGZQIFxmSWZpbHRlciBw
aXBlXGZQCnNwZWNpZmllcyBhIHBpcGUgb2YgZmlsdGVycyB0aGF0IHdpbGwg
YmUgYXBwbGllZCBiZWZvcmUgc3Bvb2xpbmcuCi5UUApcZkItaFxmUApkb2Vz
IG5vdGhpbmcgYW5kIGlzIGFjY2VwdGVkIGZvciBjb21wYXRpYmlsaXR5IG9u
bHkuCi5UUApcZkItbFxmUAplbmFibGVzIENSL0xGIHRyYW5zbGF0aW9uLiBV
c2VmdWwgZm9yIHByaW50aW5nIHRleHQgZmlsZXMgd2l0aCBVbml4LXN0eWxl
CmxpbmUgZW5kaW5ncyAoTEYpIGluIEFTQ0lJIGxpbmUtcHJpbnRlcnMgdGhh
dCByZXF1aXJlIERPUy9XaW5kb3dzLXN0eWxlCmxpbmUgZW5kaW5ncyAoQ1Ir
TEYpLiBVc3VhbGx5LCBmb3JtYXR0ZWQgZmlsZXMgYW5kIGZpbGVzIHByZXBh
cmVkIGZvcgpwcmludGVycyBpbiBncmFwaGljIG1vZGUgKHN1Y2ggYXMgUG9z
dFNjcmlwdCBvciBsYXNlcikgZG9uJ3QgcmVxdWlyZQp0aGlzIG9wdGlvbi4K
LlRQClxmQi1QXGZQIFxmSWRldmljZVxmUAphbiBhbGlhcyBmb3IgXGZCLWRc
ZlAuCi5TSCBERVZJQ0VTCkEgZGV2aWNlIG5hbWUgbWF5IGJlIGEgVU5DIHBh
dGggKFxcXFxzZXJ2ZXJfbmFtZVxccHJpbnRlcl9uYW1lKSwgYQpyZXNlcnZl
ZCBET1MgZGV2aWNlIG5hbWUgKGUuZy4sIHBybiwgbHB0MSksIG9yIGEgbG9j
YWwgcG9ydCBuYW1lIHRoYXQKaXMgbWFwcGVkIHRvIGEgcHJpbnRlciBzaGFy
ZS4gTm90ZSB0aGF0IGZvcndhcmQgc2xhc2hlcyBtYXkgYmUgdXNlZCBpbgph
IFVOQyBwYXRoIGFsc28gKGUuZy4sIC8vc2VydmVyX25hbWUvcHJpbnRlcl9u
YW1lKS4KLlNIIEVOVklST05NRU5UCkEgZGVmYXVsdCBkZXZpY2UgbmFtZSBt
YXkgYmUgc3BlY2lmaWVkIGluIHRoZSBcZkJQUklOVEVSXGZQCmVudmlyb25t
ZW50IHZhcmlhYmxlLiBTcGVjaWZ5aW5nIGEgZGV2aWNlIHZpYSBhIFxmQi1k
XGZQIG9yIFxmQi1QXGZQCndpbGwgb3ZlcnJpZGUgdGhlIGVudmlyb25tZW50
IHZhcmlhYmxlIHNldHRpbmcuCi5TSCBOT1RFUwpNYWtlIHN1cmUgdGhhdCB0
aGUgZGVmYXVsdCBwYXBlciBzaXplIHNldHRpbmcgaXMgY29ycmVjdCBmb3Ig
dGhlCnByb2dyYW0gdGhhdCBpcyBmb3JtYXR0aW5nIHRoZSBwYWdlLiBGb3Ig
ZXhhbXBsZSwgZm9yIGVuc2NyaXB0LCBtYWtlCnN1cmUgdGhlIFxmQkRlZmF1
bHRNZWRpYVxmUCBzZXR0aW5nIGlzIGNvcnJlY3QgaW4KXGZCL2V0Yy9lbnNj
cmlwdC5jZmdcZlAuIElmIHRoaXMgc2V0dGluZyBpcyBpbmNvcnJlY3QsIGl0
IGlzIHBvc3NpYmxlCnRoYXQgbm8gb3V0cHV0IGF0IGFsbCB3aWxsIGJlIHBy
b2R1Y2VkIGJ5IHRoZSBwcmludGVyLiBUaGlzIGlzClxmQm5vdFxmUCBhbiBs
cHIgaXNzdWUuCi5TSCBBVVRIT1JTCldyaXR0ZW4gYnkgUmljayBSYW5raW4u
IAoK
------=_NextPart_000_01BC2B74.89D1CCC0
Content-Type: text/plain; charset=us-ascii
--
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/
------=_NextPart_000_01BC2B74.89D1CCC0--
- Raw text -