Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com X-Matched-Lists: [] Message-ID: <114780-2200424198174177@cantv.net> Reply-To: rodmedina AT cantv DOT net X-ORIGINATOR-IP: 200.44.79.71 From: "Rodrigo Medina" To: cygwin AT cygwin DOT com Subject: lpr improvement proposal Date: Thu, 19 Feb 2004 04:17:41 -0400 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_01BC2B74.89D1CCC0" Note-from-DJ: This may be spam ------=_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--