Note: please don't spam any of the e-mail addresses which you see here. Follow this link if you want some addresses to misuse.
From: "Thomas E. Knowles" <tek@CS.Princeton.EDU> Date: Fri, 22 Oct 1999 16:50:35 -0400 Subject: Re: PPR: DSC parsing problem? This is a multi-part message in MIME format. - --------------9EFBDBBC64EB383CD33D4A37 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Well, I've looked around for a solution to this and have come to the conclusion that since my HP printers don't mind having "(atend)" in the resource list and my current printing software (Transcript 4.0 from Adobe) doesn't mind, then PPR shouldn't mind either. At least not for me. I want to put PPR into production but I cannot until this is resolved. So, I went ahead and made a patch for it and included that patch in this e-mail. Basically, I just changed the handle_atend() and trap_atend() functions in ppr_dscdoc.c. Before, they would only check for "(atend)" immediately following the DSC comment. Now, they go through the resource list of the comment, breaking when it finds an "(atend)". It issues a WARNING_SEVERE if the (atend) is not the first (and only) argument to the DSC comment, then sets the atend_flag and continues on. I don't know for sure if this is proper, the Red Book doesn't mention anything about "(atend)" being declared in the resource list, at least I couldn't find any reference. I'm also wondering if this is FrameMaker's or Acrobat's fault in the first place for generating this weird postscript. Seeing that Acrobat 3.02 generates it fine, but Acrobat 4.0 doesn't, I'm thinking it's Acrobat's fault. And if that's true, then this should be okay postscript since you'd think Adobe would be the most authoritative when it comes to proper DSC conventions. This patch is against PPR version 1.32p1. - -Thom "Thomas E. Knowles" wrote: > > I have the following file (middle stuff omitted): > > %!PS-Adobe-3.0 > %%Title: (rn7x000t) > %%Version: 1 1 > %%Creator: (FrameMaker 5.5.6.) > %%CreationDate: (D:19991004125326) > %%DocumentData: Clean7Bit > %%BoundingBox: 0 0 612 792 > %%Pages: 70 > %%DocumentProcessColors: (atend) > %%DocumentNeededResources: > %%+ font: (atend) > %%DocumentSuppliedResources: > %%+ procset (Adobe Acrobat - PDF operators) 1.2 0 > %%+ procset (Adobe Acrobat - type operators) 1.2 0 > %%EndComments > %%BeginDefaults > %%EndDefaults > %%BeginProlog > %%EndProlog > ... > ... > %%Trailer > %%DocumentProcessColors: Cyan Magenta Yellow Black > %%DocumentNeededResources: > %%+ font Helvetica-Bold > %%+ font Times-Roman > %%+ font Courier > %%+ font Times-Italic > %%+ font Times-Bold > %%+ font Helvetica > %%+ font Courier-Bold > %%EOF > > PPR won't print this file because in the %%DocumentNeededResources: > line, it has a font (atend) argument. It seems to be having a problem > parsing the fact that font (atend) means look for the fonts at the end, > since (atend) is usually used right after %%DocumentNeededResources:. > Am I right? I've looked over the DSC spec and I'm not sure if you can > specify (atend) for a singular resource. Here are the relevant lines > from lprsrv when I try to print this: > > WARNING: Ignoring "%%DocumentNeededResources:" in trailer because no > "%%Document > NeededResources: (atend)" in header > WARNING: Ignoring "%%DocumentNeededResources:" in trailer because no > "%%Document > NeededResources: (atend)" in header > WARNING: Ignoring "%%DocumentNeededResources:" in trailer because no > "%%Document > NeededResources: (atend)" in header > WARNING: Ignoring "%%DocumentNeededResources:" in trailer because no > "%%Document > NeededResources: (atend)" in header > WARNING: Ignoring "%%DocumentNeededResources:" in trailer because no > "%%Document > NeededResources: (atend)" in header > WARNING: Ignoring "%%DocumentNeededResources:" in trailer because no > "%%Document > NeededResources: (atend)" in header > WARNING: Ignoring "%%DocumentNeededResources:" in trailer because no > "%%Document > NeededResources: (atend)" in header > WARNING: resource "font: atend" declared Needed but no %%Include > > Another interesting part of this is that the file in question is > generated by Acrobat 4.0 from the PDF file apparently generated by > FrameMaker 5.5.6. If I use Acrobat 3.02 to print the same PDF file, it > works, with the postscript looking like this: > > %!PS-Adobe-3.0 > %%Title: (rn7x000t) > %%Version: 1 1 > %%Creator: (FrameMaker 5.5.6.) > %%CreationDate: (D:19991004125326) > %%DocumentData: Clean7Bit > %%BoundingBox: 0 0 612 792 > %%Pages: 70 > %%DocumentProcessColors: (atend) > %%DocumentSuppliedResources: > %%+ font Helvetica > %%+ font Times-Italic > %%+ font Times-Bold > %%+ font Courier > %%+ font Helvetica-Bold > %%+ font Courier-Bold > %%+ font Times-Roman > %%+ procset (Adobe Acrobat - PDF operators) 1.2 0 > %%+ procset (Adobe Acrobat - type operators) 1.2 0 > %%EndComments > %%BeginDefaults > %%EndDefaults > %%BeginProlog > %%EndProlog > ... > ... > > What to do about this? > > Thom Knowles > tek@CS.Princeton.EDU - --------------9EFBDBBC64EB383CD33D4A37 Content-Type: application/octet-stream; name="ppr-atend.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ppr-atend.patch" LS0tIHBwcl9kc2Nkb2MuYy5vcmlnCUZyaSBPY3QgMjIgMTU6MjA6MDIgMTk5OQorKysgcHBy X2RzY2RvYy5jCUZyaSBPY3QgMjIgMTY6NDI6NDMgMTk5OQpAQCAtMTE0LDEyICsxMTQsMzAg QEAKICoqIHJldHVybiB2YWx1ZSBpcyBub24temVybyB3aGV0aGVyIG9yIG5vdCBhIHdhcm5p bmcgaXMgd2FyYW50ZWQuCiAqKiB0cmFwX25vYXJnKCkgb3IgdHJhcF9ub2xpc3QoKSBzaG91 bGQgYmUgY2FsbGVkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uLgogKi8KLXN0YXRpYyBpbnQgaGFu ZGxlX2F0ZW5kKGNvbnN0IGNoYXIgKmtleXdvcmQsIGNvbnN0IGNoYXIgKmFyZ3VtZW50LCBp bnQgYXJnY291bnQsIGludCAqYXRlbmRfZmxhZywgaW50IHRyYWlsZXIpCitzdGF0aWMgaW50 IGhhbmRsZV9hdGVuZChjaGFyICoqbGluZV90b2tlbnMsIGludCBhcmdjb3VudCwgaW50ICph dGVuZF9mbGFnLCBpbnQgdHJhaWxlcikKICAgICB7CisgICAgaW50IGkgPSAxOworICAgIGlu dCBhdGVuZF9mb3VuZF9mbGFnID0gMDsKKyAgICBjaGFyICprZXl3b3JkID0gbGluZV90b2tl bnNbMF07CiAgICAgaW50IG9sZF9hdGVuZF9mbGFnID0gKmF0ZW5kX2ZsYWc7CiAgICAgKmF0 ZW5kX2ZsYWcgfD0gQVRFTkRfS0VZV09SRF9TRUVOOwogCi0gICAgaWYoc3RyY21wKGFyZ3Vt ZW50LCAiYXRlbmQiKSA9PSAwICYmIGFyZ2NvdW50ID09IDIpCisgICAgLyogR28gdGhyb3Vn aCBhbGwgdGhlIHRva2VucywgbG9va2luZyBmb3IgImF0ZW5kIiAqLworICAgIHdoaWxlKGkg PCBhcmdjb3VudCkKKyAgICAgICAgeworCWlmKHN0cmNtcChsaW5lX3Rva2Vuc1tpXSwgImF0 ZW5kIikgPT0gMCkKKwkgICAgeworCSAgICBhdGVuZF9mb3VuZF9mbGFnID0gMTsKKwkgICAg aWYoaSAhPSAxKQorCSAgICAgICAgeworCQl3YXJuaW5nKFdBUk5JTkdfU0VWRVJFLCAiS2V5 d29yZCBcIiVzXCIgZGVjbGFyZWQgKGF0ZW5kKSBpbiByZXNvdXJjZSBsaXN0Iiwga2V5d29y ZCk7CisJCX0KKwkgICAgYnJlYWs7CisJICAgIH0KKwlpKys7CisJfQorCisgICAgaWYoYXRl bmRfZm91bmRfZmxhZykKICAgICAJewogCS8qIEF0ZW5kIGhhcyBubyBtZWFuaW5nIGluIHRo ZSB0cmFpbGVyIHNlY3Rpb24uICovCiAJaWYodHJhaWxlcikKQEAgLTE2NCw5ICsxODIsMjgg QEAKICoqCiAqKiB0cmFwX25vYXJnKCkgb3IgdHJhcF9ub2xpc3QoKSBzaG91bGQgYmUgY2Fs bGVkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uLgogKi8KLXN0YXRpYyBpbnQgdHJhcF9hdGVuZChj b25zdCBjaGFyICprZXl3b3JkLCBjb25zdCBjaGFyICphcmd1bWVudCwgaW50IGFyZ2NvdW50 LCBpbnQgdHJhaWxlcikKK3N0YXRpYyBpbnQgdHJhcF9hdGVuZChjaGFyICoqbGluZV90b2tl bnMsIGludCBhcmdjb3VudCwgaW50IHRyYWlsZXIpCiAgICAgewotICAgIGlmKHN0cmNtcChh cmd1bWVudCwgImF0ZW5kIikgPT0gMCAmJiBhcmdjb3VudCA9PSAyKQorICAgIGludCBpID0g MTsKKyAgICBpbnQgYXRlbmRfZm91bmRfZmxhZyA9IDA7CisgICAgY2hhciAqa2V5d29yZCA9 IGxpbmVfdG9rZW5zWzBdOworCisgICAgLyogR28gdGhyb3VnaCBhbGwgdGhlIHRva2Vucywg bG9va2luZyBmb3IgImF0ZW5kIiAqLworICAgIHdoaWxlKGkgPCBhcmdjb3VudCkKKyAgICAg ICAgeworCWlmKHN0cmNtcChsaW5lX3Rva2Vuc1tpXSwgImF0ZW5kIikgPT0gMCkKKwkgICAg eworCSAgICBhdGVuZF9mb3VuZF9mbGFnID0gMTsKKwkgICAgaWYoaSAhPSAxKQorCSAgICAg ICAgeworCQl3YXJuaW5nKFdBUk5JTkdfU0VWRVJFLCAiS2V5d29yZCBcIiVzXCIgZGVjbGFy ZWQgKGF0ZW5kKSBpbiByZXNvdXJjZSBsaXN0Iiwga2V5d29yZCk7CisJCX0KKwkgICAgYnJl YWs7CisJICAgIH0KKwlpKys7CisJfQorCisgICAgaWYoYXRlbmRfZm91bmRfZmxhZykKICAg ICAJewogCWlmKHRyYWlsZXIpCiAJICAgIHdhcm5pbmcoV0FSTklOR19TRVZFUkUsICJLZXl3 b3JkIFwiJXNcIiBjYW4ndCB0YWtlIChhdGVuZCksIGVzcGVjaWFsbHkgbm90IGluIHRyYWls ZXIiKTsKQEAgLTI4OCw3ICszMjUsNyBAQAogCQkvKiBBcyBwYXJ0IG9mICIlJVBhZ2VzOiAo YXRlbmQpIDEiIGhhbmRsaW5nLCB3ZSBkb24ndCBsZXQKIAkJICAgaGFuZGxlX2F0ZW5kKCkg Y29uc2lkZXIgbm8gbW9yZSB0aGFuIHR3byB0b2tlbnM6ICovCiAJCWlmKHRyYXBfbm9hcmco dG9rZW5zWzBdLCB0b2tlbnNbMV0pCi0JCQl8fCBoYW5kbGVfYXRlbmQodG9rZW5zWzBdLCB0 b2tlbnNbMV0sIHRva2Vuc19jb3VudCA+IDIgPyAyIDogdG9rZW5zX2NvdW50LCAmYXRlbmRf UGFnZXMsIHRyYWlsZXIpKQorCQkJfHwgaGFuZGxlX2F0ZW5kKHRva2VucywgdG9rZW5zX2Nv dW50ID4gMiA/IDIgOiB0b2tlbnNfY291bnQsICZhdGVuZF9QYWdlcywgdHJhaWxlcikpCiAJ CSAgICByZXR1cm4gLTE7CiAKIAkJLyogSWYgdGhpcyBpcyB0aGUgdHJhaWxlciBvciB0aGUg Zmlyc3QgIiUlUGFnZXM6IgpAQCAtMzEzLDcgKzM1MCw3IEBACiAJCX0KIAkgICAgaWYoc3Ry Y21wKHRva2Vuc1swXSwgIiUlUGFnZU9yZGVyOiIpID09IDApCiAJCXsKLQkJaWYodHJhcF9u b2FyZyh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgaGFuZGxlX2F0ZW5kKHRva2Vuc1swXSwg dG9rZW5zWzFdLCB0b2tlbnNfY291bnQsICZhdGVuZF9QYWdlT3JkZXIsIHRyYWlsZXIpKQor CQlpZih0cmFwX25vYXJnKHRva2Vuc1swXSwgdG9rZW5zWzFdKSB8fCBoYW5kbGVfYXRlbmQo dG9rZW5zLCB0b2tlbnNfY291bnQsICZhdGVuZF9QYWdlT3JkZXIsIHRyYWlsZXIpKQogCQkg ICAgcmV0dXJuIC0xOwogCiAJCWlmKHN0cmNtcCh0b2tlbnNbMV0sICJBc2NlbmQiKSA9PSAw KQpAQCAtMzQ2LDcgKzM4Myw3IEBACiAJCX0KIAkgICAgaWYoc3RyY21wKHRva2Vuc1swXSwg IiUlUHJvb2ZNb2RlOiIpID09IDApCiAJICAgIAl7Ci0JCWlmKHRyYXBfbm9hcmcodG9rZW5z WzBdLCB0b2tlbnNbMV0pIHx8IHRyYXBfYXRlbmQodG9rZW5zWzBdLCB0b2tlbnNbMV0sIHRv a2Vuc19jb3VudCwgdHJhaWxlcikpCisJCWlmKHRyYXBfbm9hcmcodG9rZW5zWzBdLCB0b2tl bnNbMV0pIHx8IHRyYXBfYXRlbmQodG9rZW5zLCB0b2tlbnNfY291bnQsIHRyYWlsZXIpKQog CQkgICAgcmV0dXJuIC0xOwogCiAJCS8qIElmIFByb29mTW9kZSBub3QgYWxyZWFkeSBzZXQg Ki8KQEAgLTM3NCw3ICs0MTEsNyBAQAogCQl7CiAJCWNoYXIgKnB0cjsKIAotCQlpZih0cmFw X25vYXJnKHRva2Vuc1swXSwgdG9rZW5zWzFdKSB8fCB0cmFwX2F0ZW5kKHRva2Vuc1swXSwg dG9rZW5zWzFdLCB0b2tlbnNfY291bnQsIHRyYWlsZXIpKQorCQlpZih0cmFwX25vYXJnKHRv a2Vuc1swXSwgdG9rZW5zWzFdKSB8fCB0cmFwX2F0ZW5kKHRva2VucywgdG9rZW5zX2NvdW50 LCB0cmFpbGVyKSkKIAkJICAgIHJldHVybiAtMTsKIAogCQlwdHIgPSAmbGluZVs2K3N0cnNw bigmbGluZVs2XSwgIiBcdCIpXTsKQEAgLTM5Myw3ICs0MzAsNyBAQAogCQl7CiAJCWludCB4 OwogCi0JCWlmKHRyYXBfbm9hcmcodG9rZW5zWzBdLCB0b2tlbnNbMV0pIHx8IHRyYXBfYXRl bmQodG9rZW5zWzBdLCB0b2tlbnNbMV0sIHRva2Vuc19jb3VudCwgdHJhaWxlcikpCisJCWlm KHRyYXBfbm9hcmcodG9rZW5zWzBdLCB0b2tlbnNbMV0pIHx8IHRyYXBfYXRlbmQodG9rZW5z LCB0b2tlbnNfY291bnQsIHRyYWlsZXIpKQogCQkgICAgcmV0dXJuIC0xOwogCiAJCWlmKCh4 ID0gYXRvaSh0b2tlbnNbMV0pKSA+PSAxKQpAQCAtNDEzLDcgKzQ1MCw3IEBACiAJY2FzZSAn VCc6CiAJICAgIGlmKHN0cmNtcCh0b2tlbnNbMF0sICIlJVRpdGxlOiIpID09IDApCiAJCXsK LQkJaWYodHJhcF9ub2FyZyh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgdHJhcF9hdGVuZCh0 b2tlbnNbMF0sIHRva2Vuc1sxXSwgdG9rZW5zX2NvdW50LCB0cmFpbGVyKSkKKwkJaWYodHJh cF9ub2FyZyh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgdHJhcF9hdGVuZCh0b2tlbnMsIHRv a2Vuc19jb3VudCwgdHJhaWxlcikpCiAJCSAgICByZXR1cm4gLTE7CiAKIAkJaWYoICEgZm91 bmRfVGl0bGUgKQpAQCAtNDMxLDcgKzQ2OCw3IEBACiAJY2FzZSAnQyc6CiAJICAgIGlmKHN0 cmNtcCh0b2tlbnNbMF0sICIlJUNyZWF0b3I6IikgPT0gMCkKIAkJewotCQlpZih0cmFwX25v YXJnKHRva2Vuc1swXSwgdG9rZW5zWzFdKSB8fCB0cmFwX2F0ZW5kKHRva2Vuc1swXSwgdG9r ZW5zWzFdLCB0b2tlbnNfY291bnQsIHRyYWlsZXIpKQorCQlpZih0cmFwX25vYXJnKHRva2Vu c1swXSwgdG9rZW5zWzFdKSB8fCB0cmFwX2F0ZW5kKHRva2VucywgdG9rZW5zX2NvdW50LCB0 cmFpbGVyKSkKIAkJICAgIHJldHVybiAtMTsKIAogCQlpZiggISBmb3VuZF9DcmVhdG9yICkK QEAgLTQ0Nyw3ICs0ODQsNyBAQAogCQl9CiAJICAgIGlmKHN0cmNtcCh0b2tlbnNbMF0sICIl IlBQUl9EU0NfUFJFRklYIkF1dGhDb2RlOiIpID09IDApCiAJCXsKLQkJaWYodHJhcF9ub2Fy Zyh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgdHJhcF9hdGVuZCh0b2tlbnNbMF0sIHRva2Vu c1sxXSwgdG9rZW5zX2NvdW50LCB0cmFpbGVyKSkKKwkJaWYodHJhcF9ub2FyZyh0b2tlbnNb MF0sIHRva2Vuc1sxXSkgfHwgdHJhcF9hdGVuZCh0b2tlbnMsIHRva2Vuc19jb3VudCwgdHJh aWxlcikpCiAJCSAgICByZXR1cm4gLTE7CiAKIAkJLyogSWYgdGhpcyBpcyB0aGUgZmlyc3Qg QXV0aENvZGUgbGluZSwgdGhlbiBzYXZlIHRoZSBjb2RlLiAqLwpAQCAtNDYyLDcgKzQ5OSw3 IEBACiAJCXsKIAkJaW50IHg7CiAKLQkJaWYodHJhcF9ub2xpc3QodG9rZW5zWzBdLCB0b2tl bnNbMV0pIHx8IHRyYXBfYXRlbmQodG9rZW5zWzBdLCB0b2tlbnNbMV0sIHRva2Vuc19jb3Vu dCwgdHJhaWxlcikpCisJCWlmKHRyYXBfbm9saXN0KHRva2Vuc1swXSwgdG9rZW5zWzFdKSB8 fCB0cmFwX2F0ZW5kKHRva2VucywgdG9rZW5zX2NvdW50LCB0cmFpbGVyKSkKIAkJICAgIHJl dHVybiAtMTsKIAogCQlmb3IoeD0xOyB0b2tlbnNbeF0gIT0gKGNoYXIqKU5VTEw7IHgrKykK QEAgLTQ4Nyw3ICs1MjQsNyBAQAogCQl7CiAJCWludCB4OwogCi0JCWlmKHRyYXBfbm9saXN0 KHRva2Vuc1swXSwgdG9rZW5zWzFdKSB8fCB0cmFwX2F0ZW5kKHRva2Vuc1swXSwgdG9rZW5z WzFdLCB0b2tlbnNfY291bnQsIHRyYWlsZXIpKQorCQlpZih0cmFwX25vbGlzdCh0b2tlbnNb MF0sIHRva2Vuc1sxXSkgfHwgdHJhcF9hdGVuZCh0b2tlbnMsIHRva2Vuc19jb3VudCwgdHJh aWxlcikpCiAJCSAgICByZXR1cm4gLTE7CiAKIAkJZm9yKHg9MTsgdG9rZW5zW3hdICE9IChj aGFyKilOVUxMOyB4KyspCkBAIC00OTksNyArNTM2LDcgQEAKIAkJewogCQljaGFyICpwdHI7 CiAKLQkJaWYodHJhcF9ub2FyZyh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgdHJhcF9hdGVu ZCh0b2tlbnNbMF0sIHRva2Vuc1sxXSwgdG9rZW5zX2NvdW50LCB0cmFpbGVyKSkKKwkJaWYo dHJhcF9ub2FyZyh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgdHJhcF9hdGVuZCh0b2tlbnMs IHRva2Vuc19jb3VudCwgdHJhaWxlcikpCiAJCSAgICByZXR1cm4gLTE7CiAKIAkJcHRyID0g JmxpbmVbMTArc3Ryc3BuKCZsaW5lWzEwXSwiIFx0IildOwpAQCAtNTE2LDcgKzU1Myw3IEBA CiAJY2FzZSAnRCc6CiAJICAgIGlmKHN0cmNtcCh0b2tlbnNbMF0sICIlJURvY3VtZW50TWVk aWE6IikgPT0gMCkKIAkJewotCQlpZih0cmFwX25vbGlzdCh0b2tlbnNbMF0sIHRva2Vuc1sx XSkgfHwgdHJhcF9hdGVuZCh0b2tlbnNbMF0sIHRva2Vuc1sxXSwgdG9rZW5zX2NvdW50LCB0 cmFpbGVyKSkKKwkJaWYodHJhcF9ub2xpc3QodG9rZW5zWzBdLCB0b2tlbnNbMV0pIHx8IHRy YXBfYXRlbmQodG9rZW5zLCB0b2tlbnNfY291bnQsIHRyYWlsZXIpKQogCQkgICAgcmV0dXJu IC0xOwogCiAJCW1lZGlhKE1SRUZfRE9DLCAxKTsKQEAgLTUyNiw3ICs1NjMsNyBAQAogCQl7 CiAJCWludCB4OwogCi0JCWlmKHRyYXBfbm9saXN0KHRva2Vuc1swXSwgdG9rZW5zWzFdKSB8 fCBoYW5kbGVfYXRlbmQodG9rZW5zWzBdLCB0b2tlbnNbMV0sIHRva2Vuc19jb3VudCwgJmF0 ZW5kX0RvY3VtZW50Rm9udHMsIHRyYWlsZXIpKQorCQlpZih0cmFwX25vbGlzdCh0b2tlbnNb MF0sIHRva2Vuc1sxXSkgfHwgaGFuZGxlX2F0ZW5kKHRva2VucywgdG9rZW5zX2NvdW50LCAm YXRlbmRfRG9jdW1lbnRGb250cywgdHJhaWxlcikpCiAJCSAgICByZXR1cm4gLTE7CiAKIAkJ LyoKQEAgLTU0Myw3ICs1ODAsNyBAQAogCQl7CiAJCWludCB4OwogCi0JCWlmKHRyYXBfbm9s aXN0KHRva2Vuc1swXSwgdG9rZW5zWzFdKSB8fCBoYW5kbGVfYXRlbmQodG9rZW5zWzBdLCB0 b2tlbnNbMV0sIHRva2Vuc19jb3VudCwgJmF0ZW5kX0RvY3VtZW50UHJvY1NldHMsIHRyYWls ZXIpKQorCQlpZih0cmFwX25vbGlzdCh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgaGFuZGxl X2F0ZW5kKHRva2VucywgdG9rZW5zX2NvdW50LCAmYXRlbmRfRG9jdW1lbnRQcm9jU2V0cywg dHJhaWxlcikpCiAJCSAgICByZXR1cm4gLTE7CiAKIAkJaWYoaGFuZGxlX3N1cGVyc2VkZWQo dHJhaWxlciwgJmZvdW5kX0RvY3VtZW50UHJvY1NldHMsIFJFUkVGX1VOQ0xFQVIsICJwcm9j c2V0IikpCkBAIC01NTUsNyArNTkyLDcgQEAKIAkJewogCQlpbnQgeDsKIAotCQlpZih0cmFw X25vbGlzdCh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgaGFuZGxlX2F0ZW5kKHRva2Vuc1sw XSwgdG9rZW5zWzFdLCB0b2tlbnNfY291bnQsICZhdGVuZF9Eb2N1bWVudE5lZWRlZFJlc291 cmNlcywgdHJhaWxlcikpCisJCWlmKHRyYXBfbm9saXN0KHRva2Vuc1swXSwgdG9rZW5zWzFd KSB8fCBoYW5kbGVfYXRlbmQodG9rZW5zLCB0b2tlbnNfY291bnQsICZhdGVuZF9Eb2N1bWVu dE5lZWRlZFJlc291cmNlcywgdHJhaWxlcikpCiAJCSAgICByZXR1cm4gLTE7CiAKIAkJaWYo aGFuZGxlX3N1cGVyc2VkZWQodHJhaWxlciwgJmZvdW5kX0RvY3VtZW50TmVlZGVkUmVzb3Vy Y2VzLCBSRVJFRl9ORUVERUQsIChjaGFyKilOVUxMKSkKQEAgLTU2Nyw3ICs2MDQsNyBAQAog CQl7CiAJCWludCB4OwogCi0JCWlmKHRyYXBfbm9saXN0KHRva2Vuc1swXSwgdG9rZW5zWzFd KSB8fCBoYW5kbGVfYXRlbmQodG9rZW5zWzBdLCB0b2tlbnNbMV0sIHRva2Vuc19jb3VudCwg JmF0ZW5kX0RvY3VtZW50TmVlZGVkRmlsZXMsIHRyYWlsZXIpKQorCQlpZih0cmFwX25vbGlz dCh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgaGFuZGxlX2F0ZW5kKHRva2VucywgdG9rZW5z X2NvdW50LCAmYXRlbmRfRG9jdW1lbnROZWVkZWRGaWxlcywgdHJhaWxlcikpCiAJCSAgICBy ZXR1cm4gLTE7CiAKIAkJaWYoaGFuZGxlX3N1cGVyc2VkZWQodHJhaWxlciwgJmZvdW5kX0Rv Y3VtZW50TmVlZGVkRmlsZXMsIFJFUkVGX05FRURFRCwgImZpbGUiKSkKQEAgLTU3OSw3ICs2 MTYsNyBAQAogCQl7CiAJCWludCB4OwogCi0JCWlmKHRyYXBfbm9saXN0KHRva2Vuc1swXSwg dG9rZW5zWzFdKSB8fCBoYW5kbGVfYXRlbmQodG9rZW5zWzBdLCB0b2tlbnNbMV0sIHRva2Vu c19jb3VudCwgJmF0ZW5kX0RvY3VtZW50TmVlZGVkRm9udHMsIHRyYWlsZXIpKQorCQlpZih0 cmFwX25vbGlzdCh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgaGFuZGxlX2F0ZW5kKHRva2Vu cywgdG9rZW5zX2NvdW50LCAmYXRlbmRfRG9jdW1lbnROZWVkZWRGb250cywgdHJhaWxlcikp CiAJCSAgICByZXR1cm4gLTE7CiAKIAkJaWYoaGFuZGxlX3N1cGVyc2VkZWQodHJhaWxlciwg JmZvdW5kX0RvY3VtZW50TmVlZGVkRm9udHMsIFJFUkVGX05FRURFRCwgImZvbnQiKSkKQEAg LTU5MSw3ICs2MjgsNyBAQAogCQl7CiAJCWludCB4OwogCi0JCWlmKHRyYXBfbm9saXN0KHRv a2Vuc1swXSwgdG9rZW5zWzFdKSB8fCBoYW5kbGVfYXRlbmQodG9rZW5zWzBdLCB0b2tlbnNb MV0sIHRva2Vuc19jb3VudCwgJmF0ZW5kX0RvY3VtZW50TmVlZGVkUHJvY1NldHMsIHRyYWls ZXIpKQorCQlpZih0cmFwX25vbGlzdCh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgaGFuZGxl X2F0ZW5kKHRva2VucywgdG9rZW5zX2NvdW50LCAmYXRlbmRfRG9jdW1lbnROZWVkZWRQcm9j U2V0cywgdHJhaWxlcikpCiAJCSAgICByZXR1cm4gLTE7CiAKIAkJaWYoaGFuZGxlX3N1cGVy c2VkZWQodHJhaWxlciwgJmZvdW5kX0RvY3VtZW50TmVlZGVkUHJvY1NldHMsIFJFUkVGX05F RURFRCwgInByb2NzZXQiKSkKQEAgLTYwMyw3ICs2NDAsNyBAQAogCQl7CiAJCWludCB4Owog Ci0JCWlmKHRyYXBfbm9saXN0KHRva2Vuc1swXSwgdG9rZW5zWzFdKSB8fCBoYW5kbGVfYXRl bmQodG9rZW5zWzBdLCB0b2tlbnNbMV0sIHRva2Vuc19jb3VudCwgJmF0ZW5kX0RvY3VtZW50 U3VwcGxpZWRSZXNvdXJjZXMsIHRyYWlsZXIpKQorCQlpZih0cmFwX25vbGlzdCh0b2tlbnNb MF0sIHRva2Vuc1sxXSkgfHwgaGFuZGxlX2F0ZW5kKHRva2VucywgdG9rZW5zX2NvdW50LCAm YXRlbmRfRG9jdW1lbnRTdXBwbGllZFJlc291cmNlcywgdHJhaWxlcikpCiAJCSAgICByZXR1 cm4gLTE7CiAKIAkJaWYoaGFuZGxlX3N1cGVyc2VkZWQodHJhaWxlciwgJmZvdW5kX0RvY3Vt ZW50U3VwcGxpZWRSZXNvdXJjZXMsIFJFUkVGX1NVUFBMSUVELCAoY2hhciopTlVMTCkpCkBA IC02MTUsNyArNjUyLDcgQEAKIAkJewogCQlpbnQgeDsKIAotCQlpZih0cmFwX25vbGlzdCh0 b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgaGFuZGxlX2F0ZW5kKHRva2Vuc1swXSwgdG9rZW5z WzFdLCB0b2tlbnNfY291bnQsICZhdGVuZF9Eb2N1bWVudFN1cHBsaWVkRmlsZXMsIHRyYWls ZXIpKQorCQlpZih0cmFwX25vbGlzdCh0b2tlbnNbMF0sIHRva2Vuc1sxXSkgfHwgaGFuZGxl X2F0ZW5kKHRva2VucywgdG9rZW5zX2NvdW50LCAmYXRlbmRfRG9jdW1lbnRTdXBwbGllZEZp bGVzLCB0cmFpbGVyKSkKIAkJICAgIHJldHVybiAtMTsKIAogCQlpZihoYW5kbGVfc3VwZXJz ZWRlZCh0cmFpbGVyLCAmZm91bmRfRG9jdW1lbnRTdXBwbGllZEZpbGVzLCBSRVJFRl9TVVBQ TElFRCwgImZpbGUiKSkKQEAgLTYyNyw3ICs2NjQsNyBAQAogCQl7CiAJCWludCB4OwogCi0J CWlmKHRyYXBfbm9saXN0KHRva2Vuc1swXSwgdG9rZW5zWzFdKSB8fCBoYW5kbGVfYXRlbmQo dG9rZW5zWzBdLCB0b2tlbnNbMV0sIHRva2Vuc19jb3VudCwgJmF0ZW5kX0RvY3VtZW50U3Vw cGxpZWRGb250cywgdHJhaWxlcikpCisJCWlmKHRyYXBfbm9saXN0KHRva2Vuc1swXSwgdG9r ZW5zWzFdKSB8fCBoYW5kbGVfYXRlbmQodG9rZW5zLCB0b2tlbnNfY291bnQsICZhdGVuZF9E b2N1bWVudFN1cHBsaWVkRm9udHMsIHRyYWlsZXIpKQogCQkgICAgcmV0dXJuIC0xOwogCiAJ CWlmKGhhbmRsZV9zdXBlcnNlZGVkKHRyYWlsZXIsICZmb3VuZF9Eb2N1bWVudFN1cHBsaWVk Rm9udHMsIFJFUkVGX1NVUFBMSUVELCAiZm9udCIpKQpAQCAtNjM5LDcgKzY3Niw3IEBACiAJ CXsKIAkJaW50IHg7CiAKLQkJaWYodHJhcF9ub2xpc3QodG9rZW5zWzBdLCB0b2tlbnNbMV0p IHx8IGhhbmRsZV9hdGVuZCh0b2tlbnNbMF0sIHRva2Vuc1sxXSwgdG9rZW5zX2NvdW50LCAm YXRlbmRfRG9jdW1lbnRTdXBwbGllZFByb2NTZXRzLCB0cmFpbGVyKSkKKwkJaWYodHJhcF9u b2xpc3QodG9rZW5zWzBdLCB0b2tlbnNbMV0pIHx8IGhhbmRsZV9hdGVuZCh0b2tlbnMsIHRv a2Vuc19jb3VudCwgJmF0ZW5kX0RvY3VtZW50U3VwcGxpZWRQcm9jU2V0cywgdHJhaWxlcikp CiAJCSAgICByZXR1cm4gLTE7CiAKIAkJaWYoaGFuZGxlX3N1cGVyc2VkZWQodHJhaWxlciwg JmZvdW5kX0RvY3VtZW50U3VwcGxpZWRQcm9jU2V0cywgUkVSRUZfU1VQUExJRUQsICJwcm9j c2V0IikpCkBAIC02NDksNyArNjg2LDcgQEAKIAkJfQogCSAgICBpZihzdHJjbXAodG9rZW5z WzBdLCAiJSVEb2N1bWVudERhdGE6IikgPT0gMCkKIAkgICAgCXsKLQkJaWYodHJhcF9ub2xp c3QodG9rZW5zWzBdLCB0b2tlbnNbMV0pIHx8IHRyYXBfYXRlbmQodG9rZW5zWzBdLCB0b2tl bnNbMV0sIHRva2Vuc19jb3VudCwgdHJhaWxlcikpCisJCWlmKHRyYXBfbm9saXN0KHRva2Vu c1swXSwgdG9rZW5zWzFdKSB8fCB0cmFwX2F0ZW5kKHRva2VucywgdG9rZW5zX2NvdW50LCB0 cmFpbGVyKSkKIAkJICAgIHJldHVybiAtMTsKIAogCQlpZiggISBmb3VuZF9Eb2N1bWVudERh dGEgKQpAQCAtNjgxLDcgKzcxOCw3IEBACiAJY2FzZSAnTyc6CiAJICAgIGlmKHN0cmNtcCh0 b2tlbnNbMF0sICIlJU9yaWVudGF0aW9uOiIpID09IDApCiAJICAgIAl7Ci0JCWlmKHRyYXBf bm9hcmcodG9rZW5zWzBdLCB0b2tlbnNbMV0pIHx8IGhhbmRsZV9hdGVuZCh0b2tlbnNbMF0s IHRva2Vuc1sxXSwgdG9rZW5zX2NvdW50LCAmYXRlbmRfT3JpZW50YXRpb24sIHRyYWlsZXIp KQorCQlpZih0cmFwX25vYXJnKHRva2Vuc1swXSwgdG9rZW5zWzFdKSB8fCBoYW5kbGVfYXRl bmQodG9rZW5zLCB0b2tlbnNfY291bnQsICZhdGVuZF9PcmllbnRhdGlvbiwgdHJhaWxlcikp CiAJCSAgICByZXR1cm4gLTE7CiAKIAkJLyogSWYgdGhpcyBpcyB0aGUgZmlyc3QgT3JpZW50 YXRpb24gY29tbWVudCBvciB0aGlzIGlzIHRoZSB0cmFpbGVyLCAqLwo= - --------------9EFBDBBC64EB383CD33D4A37--