|
From: Roland L. <rol...@go...> - 2006-07-31 09:02:43
|
I2lmbmRlZiBxdWFudGxpYl96ZXJvX3NwcmVhZF90ZXJtX3N0cnVjdHVyZV9ocHAKI2RlZmluZSBx dWFudGxpYl96ZXJvX3NwcmVhZF90ZXJtX3N0cnVjdHVyZV9ocHAKCiNpbmNsdWRlIDxxbC9UZXJt U3RydWN0dXJlcy96ZXJveWllbGRzdHJ1Y3R1cmUuaHBwPgojaW5jbHVkZSA8cWwvcXVvdGUuaHBw PgoKbmFtZXNwYWNlIFF1YW50TGliIHsKCiAgLy8hIFRlcm0gc3RydWN0dXJlIHdpdGggYW4gYWRk ZWQgdmVjdG9yIG9mIHNwcmVhZHMgb24gdGhlIHplcm8geWllbGQgcmF0ZQogIC8qISBcbm90ZSBU aGlzIHRlcm0gc3RydWN0dXJlIHdpbGwgcmVtYWluIGxpbmtlZCB0byB0aGUgb3JpZ2luYWwKICAg IHN0cnVjdHVyZSwgaS5lLiwgYW55IGNoYW5nZXMgaW4gdGhlIGxhdHRlciB3aWxsIGJlCiAgICBy ZWZsZWN0ZWQgaW4gdGhpcyBzdHJ1Y3R1cmUgYXMgd2VsbC4KCiAgICBcaW5ncm91cCB5aWVsZHRl cm1zdHJ1Y3R1cmVzCiAgKi8KICBjbGFzcyBaZXJvU3ByZWFkVGVybVN0cnVjdHVyZSA6IHB1Ymxp YyBaZXJvWWllbGRTdHJ1Y3R1cmUgewogIHB1YmxpYzoKICAgIFplcm9TcHJlYWRUZXJtU3RydWN0 dXJlKGNvbnN0IEhhbmRsZTxZaWVsZFRlcm1TdHJ1Y3R1cmU+JiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8SGFuZGxlPFF1b3RlPiA+JiBzcHJlYWQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPERhdGU+JiBkYXRl KTsKICAgIC8vISBcbmFtZSBZaWVsZFRlcm1TdHJ1Y3R1cmUgaW50ZXJmYWNlCiAgICAvL0B7CiAg ICBEYXlDb3VudGVyIGRheUNvdW50ZXIoKSBjb25zdCB7IHJldHVybiBvcmlnaW5hbEN1cnZlXy0+ ZGF5Q291bnRlcigpOyB9CiAgICBDYWxlbmRhciBjYWxlbmRhcigpIGNvbnN0OwogICAgY29uc3Qg RGF0ZSYgcmVmZXJlbmNlRGF0ZSgpIGNvbnN0OwogICAgRGF0ZSBtYXhEYXRlKCkgY29uc3Q7CiAg ICBUaW1lIG1heFRpbWUoKSBjb25zdDsKICAgIC8vQH0KICBwcm90ZWN0ZWQ6CiAgICAvLyEgcmV0 dXJucyB0aGUgc3ByZWFkZWQgemVybyB5aWVsZCByYXRlCiAgICBSYXRlIHplcm9ZaWVsZEltcGwo VGltZSkgY29uc3Q7CiAgICAvLyEgcmV0dXJucyB0aGUgc3ByZWFkZWQgZm9yd2FyZCByYXRlCiAg ICAvKiBUaGlzIG1ldGhvZCBtdXN0IGRpc2FwcGVhciBzaG91bGQgdGhlIHNwcmVhZCBiZWNvbWUg YSBjdXJ2ZSAqLwogICAgUmF0ZSBmb3J3YXJkSW1wbChUaW1lKSBjb25zdDsKICBwcml2YXRlOgog ICAgSGFuZGxlPFlpZWxkVGVybVN0cnVjdHVyZT4gb3JpZ2luYWxDdXJ2ZV87CiAgICBzdGQ6OnZl Y3RvcjxIYW5kbGU8UXVvdGU+ID4gc3ByZWFkXzsKICAgIHN0ZDo6dmVjdG9yPFRpbWU+IHRpbWVf OwogIH07CgogIGlubGluZSBaZXJvU3ByZWFkVGVybVN0cnVjdHVyZTo6WmVyb1NwcmVhZFRlcm1T dHJ1Y3R1cmUoCiAgICBjb25zdCBIYW5kbGU8WWllbGRUZXJtU3RydWN0dXJlPiYgaCwKICAgIGNv bnN0IHN0ZDo6dmVjdG9yPEhhbmRsZTxRdW90ZT4gPiYgc3ByZWFkLAogICAgY29uc3Qgc3RkOjp2 ZWN0b3I8RGF0ZT4mIGRhdGUgPSBzdGQ6OnZlY3RvcjxEYXRlPigwLERhdGUoKSkpCiAgICA6IG9y aWdpbmFsQ3VydmVfKGgpLCBzcHJlYWRfKHNwcmVhZCkgewogICAgUUxfUkVRVUlSRSAoc3ByZWFk Xy5zaXplKCkgPiAwLCAic3ByZWFkIHZlY3RvciBzaXplID0gMCIpOwovLyAgICAgUUxfUkVRVUlS RSAoc3ByZWFkXy5zaXplKCkgPT0gZGF0ZS5zaXplKCkgfHwgc3ByZWFkXy5zaXplKCkgPT0gMSwK Ly8gICAgICAgICAgICAgICAgICJzcHJlYWQgYW5kIGRhdGUgdmVjdG9yIGhhdmUgZGlmZmVyZW50 IHNpemUiKTsKICAgIHJlZ2lzdGVyV2l0aChvcmlnaW5hbEN1cnZlXyk7CiAgICBmb3IgKGludCBp ID0gMDsgaSA8IHNwcmVhZF8uc2l6ZSgpOyBpKyspCiAgICAgIHJlZ2lzdGVyV2l0aChzcHJlYWRf W2ldKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGRhdGUuc2l6ZSgpOyBpKyspCiAgICAgIHRp bWVfLnB1c2hfYmFjayAodGltZUZyb21SZWZlcmVuY2UgKGRhdGVbaV0pKTsKICB9CgogIGlubGlu ZSBDYWxlbmRhciBaZXJvU3ByZWFkVGVybVN0cnVjdHVyZTo6Y2FsZW5kYXIoKSBjb25zdCB7CiAg ICByZXR1cm4gb3JpZ2luYWxDdXJ2ZV8tPmNhbGVuZGFyKCk7CiAgfQoKICBpbmxpbmUgY29uc3Qg RGF0ZSYgWmVyb1NwcmVhZFRlcm1TdHJ1Y3R1cmU6OnJlZmVyZW5jZURhdGUoKSBjb25zdCB7CiAg ICByZXR1cm4gb3JpZ2luYWxDdXJ2ZV8tPnJlZmVyZW5jZURhdGUoKTsKICB9CgogIGlubGluZSBE YXRlIFplcm9TcHJlYWRUZXJtU3RydWN0dXJlOjptYXhEYXRlKCkgY29uc3QgewogICAgICByZXR1 cm4gb3JpZ2luYWxDdXJ2ZV8tPm1heERhdGUoKTsKICB9CgogIGlubGluZSBUaW1lIFplcm9TcHJl YWRUZXJtU3RydWN0dXJlOjptYXhUaW1lKCkgY29uc3QgewogICAgcmV0dXJuIG9yaWdpbmFsQ3Vy dmVfLT5tYXhUaW1lKCk7CiAgfQoKICBpbmxpbmUgUmF0ZSBaZXJvU3ByZWFkVGVybVN0cnVjdHVy ZTo6emVyb1lpZWxkSW1wbChUaW1lIHQpIGNvbnN0IHsKICAgIC8vIHJldHVybiBvcmlnaW5hbEN1 cnZlXy0+emVyb1lpZWxkKHQsIHRydWUpICsgc3ByZWFkXy0+dmFsdWUoKTsKICAgIGRvdWJsZSB6 ID0gb3JpZ2luYWxDdXJ2ZV8tPnplcm9SYXRlKHQsIENvbnRpbnVvdXMsIE5vRnJlcXVlbmN5LCB0 cnVlKTsKICAgIGlmICh0aW1lXy5zaXplKCkgPT0gMCB8fCB0IDw9IHRpbWVfWzBdKQogICAgICBy ZXR1cm4geiArIHNwcmVhZF9bMF0tPnZhbHVlKCk7CiAgICBlbHNlIGlmICh0ID49IHRpbWVfLmJh Y2soKSkKICAgICAgcmV0dXJuIHogKyBzcHJlYWRfLmJhY2soKS0+dmFsdWUoKTsKICAgIGVsc2Ug ewogICAgICBpbnQgaTsKICAgICAgZm9yIChpID0gMDsgaSA8IHRpbWVfLnNpemUoKTsgaSsrKQog ICAgICAgIGlmICh0aW1lX1tpXSA+IHQpIGJyZWFrOwogICAgICBkb3VibGUgZHQgPSB0aW1lX1tp XSAtIHRpbWVfW2ktMV07CiAgICAgIHJldHVybiB6ICsgc3ByZWFkX1tpXS0+dmFsdWUoKSAqICh0 IC0gdGltZV9baS0xXSkgLyBkdAogICAgICAgICsgc3ByZWFkX1tpLTFdLT52YWx1ZSgpICogKHRp bWVfW2ldIC0gdCkgLyBkdDsKICAgIH0KICB9CgogIGlubGluZSBSYXRlIFplcm9TcHJlYWRUZXJt U3RydWN0dXJlOjpmb3J3YXJkSW1wbChUaW1lIHQpIGNvbnN0IHsKLy8gICAgIHJldHVybiBvcmln aW5hbEN1cnZlXy0+Zm9yd2FyZFJhdGUodCwgdCwgQ29udGludW91cywgTm9GcmVxdWVuY3ksIHRy dWUpCi8vICAgICAgICsgc3ByZWFkXy0+dmFsdWUoKTsKICAgIGRvdWJsZSBmPW9yaWdpbmFsQ3Vy dmVfLT5mb3J3YXJkUmF0ZSh0LCB0LCBDb250aW51b3VzLCBOb0ZyZXF1ZW5jeSwgdHJ1ZSk7CiAg ICBpZiAodGltZV8uc2l6ZSgpID09IDAgfHwgdCA8PSB0aW1lX1swXSkKICAgICAgcmV0dXJuIGYg KyBzcHJlYWRfWzBdLT52YWx1ZSgpOwogICAgZWxzZSBpZiAodCA+PSB0aW1lXy5iYWNrKCkpCiAg ICAgIHJldHVybiBmICsgc3ByZWFkXy5iYWNrKCktPnZhbHVlKCk7CiAgICBlbHNlIHsKICAgICAg aW50IGk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aW1lXy5zaXplKCk7IGkrKykKICAgICAgICBp ZiAodGltZV9baV0gPiB0KSBicmVhazsKICAgICAgZG91YmxlIGR0ID0gdGltZV9baV0gLSB0aW1l X1tpLTFdOwogICAgICByZXR1cm4gZiArIHNwcmVhZF9baV0tPnZhbHVlKCkgKiAodCAtIHRpbWVf W2ktMV0pIC8gZHQKICAgICAgICArIHNwcmVhZF9baS0xXS0+dmFsdWUoKSAqICh0aW1lX1tpXSAt IHQpIC8gZHQ7CiAgICB9CiAgfQoKfQoKI2VuZGlmCg== |