PATCH: Handling of Class-Path attribute in jars
Carlos Valiente
kaffe@rufus.w3.org
Thu, 17 May 2001 20:46:51 +0200
--------------Boundary-00=_3ITHOSQCVWI4XAB1OP4B
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
Here's a patch which takes into account the classpath entries specified in a
jar's manifest. I have included a jar with a very simple test case.
Regards,
Carlos Valiente <yo@virutass.net>
--------------Boundary-00=_3ITHOSQCVWI4XAB1OP4B
Content-Type: text/x-c;
charset="iso-8859-1";
name="kaffe-classpath.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="kaffe-classpath.diff"
PyBrYWZmZS1jbGFzc3BhdGguZGlmZgpJbmRleDoga2FmZmUva2FmZmV2bS9maW5kSW5KYXIuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2thZmZlL2thZmZlL2thZmZlL2thZmZldm0vZmluZElu
SmFyLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDQKZGlmZiAtdSAtcjEuNDQgZmluZEluSmFy
LmMKLS0tIGthZmZlL2thZmZldm0vZmluZEluSmFyLmMJMjAwMC8wOS8wOSAxODowNjozNAkxLjQ0
CisrKyBrYWZmZS9rYWZmZXZtL2ZpbmRJbkphci5jCTIwMDEvMDUvMTcgMTg6NDI6MjMKQEAgLTE2
OCw5ICsxNjgsMTIgQEAKIAljbGFzc0ZpbGUgaGFuZDsKIAlzc2l6ZV90IGo7CiAJamFyRW50cnkq
IGVudHJ5OworCWNoYXIgKm1mY2xhc3NwYXRoOworCWNoYXIgKmphcmRpcjsKIAlzdGF0aWMgaUxv
Y2sqIGphcmxvY2s7CiAJY2xhc3NwYXRoRW50cnkqIHB0cjsKLQlpbnQgaTsKKwljbGFzc3BhdGhF
bnRyeSogbmV3RW50cnk7CisJaW50IGksIGw7CiAJaW50IHJjOwogCWludCBpTG9ja1Jvb3Q7CiAK
QEAgLTE4Miw2ICsxODUsNyBAQAogCWxvY2tTdGF0aWNNdXRleCgmamFybG9jayk7CiAKIAlmb3Ig
KHB0ciA9IGNsYXNzcGF0aDsgcHRyICE9IDA7IHB0ciA9IHB0ci0+bmV4dCkgeworREJHKENMQVNT
TE9PS1VQLGRwcmludGYoIlByb2Nlc3NpbmcgY2xhc3NwYXRoIGVudHJ5ICclcydcbiIsIHB0ci0+
cGF0aCk7CSkKIAkJaGFuZC50eXBlID0gcHRyLT50eXBlOwogCQlzd2l0Y2ggKHB0ci0+dHlwZSkg
ewogCQljYXNlIENQX1pJUEZJTEU6CkBAIC0xOTUsNyArMTk5LDc0IEBACiAKIAkJCWVudHJ5ID0g
bG9va3VwSmFyRmlsZShwdHItPnUuamFyLCBjbmFtZSk7CiAJCQlpZiAoZW50cnkgPT0gMCkgewot
CQkJCWJyZWFrOworCQkJCS8qIEVudHJ5IHdhcyBub3QgdGhlcmU7IHNlZSBpZiB0aGVyZSdzIGEg
Q2xhc3MtUGF0aAorCQkJCSAgIGF0dHJpYnV0ZSBpbiB0aGUgbWFuaWZlc3QgYW5kIGhhdmUgYSBs
b29rIHRoZXJlICovCisJCQkJbWZjbGFzc3BhdGggPSBnZXRNYW5pZmVzdE1haW5BdHRyaWJ1dGUo
cHRyLT51LmphciwgIkNsYXNzLVBhdGgiKTsKKwkJCQlpZihtZmNsYXNzcGF0aCA9PSAwKQorCQkJ
CQlicmVhazsKK0RCRyhDTEFTU0xPT0tVUCwJCWRwcmludGYoIiVzOiBNYW5pZmVzdCAnQ2xhc3Mt
UGF0aCcgYXR0cmlidXRlIGlzICclcydcbiIsIHB0ci0+cGF0aCwgbWZjbGFzc3BhdGgpOwkpCisK
KwkJCQlidWYgPSBtZmNsYXNzcGF0aDsKKwkJCQl3aGlsZSgqbWZjbGFzc3BhdGgpIHsKKwkJCQkJ
d2hpbGUoKm1mY2xhc3NwYXRoICE9ICcgJyAmJgorCQkJCQkJKm1mY2xhc3NwYXRoICE9ICdcdCcg
JiYKKwkJCQkJCSptZmNsYXNzcGF0aCAhPSAnXDAnKQorCQkJCQkJKyttZmNsYXNzcGF0aDsKKwkJ
CQkJCQorCQkJCQkqbWZjbGFzc3BhdGggPSAnXDAnOworCisJCQkJCS8qIEluc2VydCBtYW5pZmVz
dCBjbGFzc3BhdGggZW50cmllcyAqLworCQkJCQkKKwkJCQkJbmV3RW50cnkgPSBLTUFMTE9DKHNp
emVvZihjbGFzc3BhdGhFbnRyeSkpOworCQkJCQluZXdFbnRyeS0+dS5qYXIgPSAwOworCQkJCQkK
KwkJCQkJLyogTWFuaWZlc3QgY2xhc3NwYXRoIGVudHJpZXMgY2FuIGJlIGVpdGhlcgorCQkJCQlh
YnNvbHV0ZSBvciByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24KKwkJCQkJb2YgdGhlIGphciBmaWxl
LiAqLworCQkJCQkKKwkJCQkJaWYoYnVmWzBdICE9IGZpbGVfc2VwYXJhdG9yWzBdKSB7CisJCQkJ
CQkvKiBQYXRoIGlzIHJlbGF0aXZlLiBGaXJzdCwgZ2V0IHRoZSBkaXJlY3RvcnkKKwkJCQkJCW9m
IHRoZSBqYXIgZmlsZSAqLworCQkJCQkJamFyZGlyID0gS01BTExPQyhQQVRIX01BWCk7CisJCQkJ
CQlzdHJjcHkoamFyZGlyLCBwdHItPnBhdGgpOworCQkJCQkJbCA9IHN0cmxlbihqYXJkaXIgLSAx
KTsKKwkJCQkJCXdoaWxlKGphcmRpcltsXSAhPSBmaWxlX3NlcGFyYXRvclswXSAmJgorCQkJCQkJ
CWwgPiAwKQorCQkJCQkJCS0tbDsKKwkJCQkJCWphcmRpcltsXSA9ICdcMCc7CisKKwkJCQkJCS8q
IE5vdyBidWlsZCBlbnRyeSdzIHBhdGggKi8KKwkJCQkJCW5ld0VudHJ5LT5wYXRoID0gS01BTExP
QyhQQVRIX01BWCk7CisJCQkJCQlpZihqYXJkaXJbMF0gIT0gJ1wwJykKKwkJCQkJCQlzcHJpbnRm
KG5ld0VudHJ5LT5wYXRoLCAiJXMlcyVzIiwgamFyZGlyLCBmaWxlX3NlcGFyYXRvciwgYnVmKTsK
KwkJCQkJCWVsc2UKKwkJCQkJCQlzdHJjcHkobmV3RW50cnktPnBhdGgsIGJ1Zik7CisJCQkJCX0K
KwkJCQkJZWxzZSB7CisJCQkJCQkvKiBQYXRoIGlzIGFic29sdXRlICovCisJCQkJCQluZXdFbnRy
eS0+cGF0aCA9IEtNQUxMT0Moc3RybGVuKGJ1ZikgKyAxKTsKKwkJCQkJCXN0cmNweShuZXdFbnRy
eS0+cGF0aCwgYnVmKTsKKwkJCQkJfQorCisJCQkJCS8qIENoZWNrIHdoZXRoZXIgaXQncyBhIGph
ciBvciBhIGRpcmVjdG9yeSAqLworCQkJCQlyYyA9IEtPUEVOKG5ld0VudHJ5LT5wYXRoLCBPX1JE
T05MWSwgMCwgJmZwKTsKKwkJCQkJaWYocmMgPT0gMCkgeworCQkJCQkJcmMgPSBLRlNUQVQoZnAs
ICZzYnVmKTsKKwkJCQkJCWlmKHJjID09IDApIHsKKwkJCQkJCQluZXdFbnRyeS0+dHlwZSA9IFNf
SVNESVIoc2J1Zi5zdF9tb2RlKSA/IAorCQkJCQkJCQkJCUNQX0RJUjogQ1BfWklQRklMRTsKKwkJ
CQkJCQkJCQkKKwkJCQkJCQkvKiBPSywgaW5zZXJ0IHRoZSBuZXcgZW50cnkgYWZ0ZXIgdGhlIGN1
cnJlbnQgb25lICovCisJCQkJCQkJbmV3RW50cnktPm5leHQgPSBwdHItPm5leHQ7CisJCQkJCQkJ
cHRyLT5uZXh0ID0gbmV3RW50cnk7CisJCQkJCQl9CisJCQkJCQlLQ0xPU0UoZnApOworCQkJCQl9
CisJCQkJCQorCQkJCQkvKiBHbyB0byB0aGUgZm9sbG93aW5nIGNsYXNzcGF0aCBlbGVtZW50ICov
CisJCQkJCWJ1ZiA9IG1mY2xhc3NwYXRoOworCQkJCX0gCisJCQkJY29udGludWU7CiAJCQl9CiAJ
CQloYW5kLmJhc2UgPSBnZXREYXRhSmFyRmlsZShwdHItPnUuamFyLCBlbnRyeSk7CiAJCQlpZiAo
aGFuZC5iYXNlID09IDApIHsKSW5kZXg6IGthZmZlL2thZmZldm0vamFyLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9rYWZmZS9rYWZmZS9rYWZmZS9rYWZmZXZtL2phci5jLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjE4CmRpZmYgLXUgLXIxLjE4IGphci5jCi0tLSBrYWZmZS9rYWZmZXZtL2ph
ci5jCTIwMDAvMDgvMjYgMjI6MjE6NTYJMS4xOAorKysga2FmZmUva2FmZmV2bS9qYXIuYwkyMDAx
LzA1LzE3IDE4OjQyOjI0CkBAIC0zMjIsNiArMzIyLDU4IEBACiAJfQogfQogCit1aW50OCogZ2V0
TWFuaWZlc3RNYWluQXR0cmlidXRlKGphckZpbGUqIGZpbGUsIGNoYXIqIGF0dHJOYW1lKQorewor
CWphckVudHJ5KiBtZjsKKwl1aW50OCogbWZkYXRhOworCXVpbnQ4KiBhdHRyRW50cnk7CisJdWlu
dDgqIHJldDsKKwlpbnQgaSwgcG9zQXR0clZhbHVlOworCQorCS8qIExvY2F0ZSBtYW5pZmVzdCBl
bnRyeSBpbiBqYXIgKi8KKwltZiA9IGxvb2t1cEphckZpbGUoZmlsZSwgIk1FVEEtSU5GL01BTklG
RVNULk1GIik7CisJaWYobWYgPT0gMCkKKwkJcmV0dXJuICgwKTsKKwkKKwkvKiBSZWFkIGl0ICov
CisJbWZkYXRhID0gZ2V0RGF0YUphckZpbGUoZmlsZSwgbWYpOworCWlmKG1mZGF0YSA9PSAwKQor
CQlyZXR1cm4gKDApOworCQorCS8qIExvb2sgZm9yIHRoZSBkZXNpcmVkIGVudHJ5ICovCisJYXR0
ckVudHJ5ID0gbWZkYXRhOworCWZvcihpID0gMDsgaSA8IG1mLT51bmNvbXByZXNzZWRTaXplOyAr
K2kpIHsKKwkJaWYobWZkYXRhW2ldID09ICdcbicpIHsKKwkJCW1mZGF0YVtpXSA9ICdcMCc7CisJ
CQkvKiBFY2NvISB0aGlzIGxpbmUgYmVnaW5zIHdpdGggdGhlIGF0dHJpYnV0ZSdzIG5hbWUgKi8K
KwkJCWlmKHN0cnN0cihhdHRyRW50cnksIGF0dHJOYW1lKSkgeworCQkJCS8qIFNraXAgJ2F0dHJO
YW1lOicgKi8KKwkJCQlwb3NBdHRyVmFsdWUgPSBzdHJsZW4oYXR0ck5hbWUpICsgMTsKKwkJCQlh
dHRyRW50cnkgKz0gcG9zQXR0clZhbHVlOworCQkJCQorCQkJCS8qIFNraXAgaW5pdGlhbCB3aGl0
ZXNwYWNlICovCisJCQkJd2hpbGUoKmF0dHJFbnRyeSA9PSAnICcgfHwKKwkJCQkJKmF0dHJFbnRy
eSA9PSAnXHQnKQorCQkJCQkrK2F0dHJFbnRyeTsKKwkJCQkKKwkJCQkvKiBOb3cgbG9vayBmb3Ig
ZW5kIG9mIHN0cmluZyAqLworCQkJCXdoaWxlKGF0dHJFbnRyeVtpXSAhPSAnXG4nICYmIGkgPCBt
Zi0+dW5jb21wcmVzc2VkU2l6ZSkKKwkJCQkJKytpOworCQkJCWF0dHJFbnRyeVtpXSA9ICdcMCc7
CisJCQkJCisJCQkJLyogT0ssIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHJlc3VsdCBhbmQgcmV0
dXJuICovCisJCQkJcmV0ID0gS01BTExPQyhzdHJsZW4oYXR0ckVudHJ5KSArIDEpOworCQkJCXN0
cmNweShyZXQsIGF0dHJFbnRyeSk7CisJCQkJS0ZSRUUobWZkYXRhKTsKKwkJCQlyZXR1cm4gcmV0
OworCQkJfQorCQkJYXR0ckVudHJ5ID0gbWZkYXRhICsgaSArIDE7CisJCX0KKwl9CisJS0ZSRUUo
bWZkYXRhKTsKKwlyZXR1cm4gKDApOworfQorCiB2b2lkCiBjbG9zZUphckZpbGUoamFyRmlsZSog
ZmlsZSkKIHsKSW5kZXg6IGthZmZlL2thZmZldm0vamFyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9rYWZmZS9rYWZmZS9rYWZmZS9rYWZmZXZtL2phci5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjUKZGlmZiAtdSAtcjEuNSBqYXIuaAotLS0ga2FmZmUva2FmZmV2bS9qYXIuaAkyMDAwLzEw
LzA1IDIyOjI0OjA1CTEuNQorKysga2FmZmUva2FmZmV2bS9qYXIuaAkyMDAxLzA1LzE3IDE4OjQy
OjI1CkBAIC0xNDEsNSArMTQxLDYgQEAKIHZvaWQJCWNsb3NlSmFyRmlsZShqYXJGaWxlKik7CiBq
YXJFbnRyeSoJbG9va3VwSmFyRmlsZShqYXJGaWxlKiwgY2hhciopOwogdWludDgqCQlnZXREYXRh
SmFyRmlsZShqYXJGaWxlKiwgamFyRW50cnkqKTsKK3VpbnQ4KgkJZ2V0TWFuaWZlc3RNYWluQXR0
cmlidXRlKGphckZpbGUqLCBjaGFyKik7CiAKICNlbmRpZgo=
--------------Boundary-00=_3ITHOSQCVWI4XAB1OP4B
Content-Type: application/x-zip;
charset="iso-8859-1";
name="ClassPathMF.jar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="ClassPathMF.jar"
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
XFKUmZceHauQWJRerAlWyhkCZKeWgE3Qy0jNycnX0LTm4qzlquUCAFBLBwgKGUZrVgAAAGMAAABQ
SwECFAAUAAgACABdlLEqbsQnghkAAAAXAAAAFAAAAAAAAAAAAAAAAAAAAAAATUVUQS1JTkYvTUFO
SUZFU1QuTUZQSwECFAAUAAgACABglLEqB5zdCE8CAADJAgAAHAAAAAAAAAAAAAAAAABbAAAAQ2xh
c3NQYXRoTUYvdGFyZ2V0Y2xhc3MyLmphclBLAQIUABQACAAIAGCUsSpY6M/IHgAAAB4AAAAaAAAA
AAAAAAAAAAAAAPQCAABDbGFzc1BhdGhNRi90YXJnZXRjbGFzcy5tZlBLAQIUABQACAAIAGCUsSoH
iEUBbwIAAOgCAAAbAAAAAAAAAAAAAAAAAFoDAABDbGFzc1BhdGhNRi90YXJnZXRjbGFzcy5qYXJQ
SwECFAAUAAgACABglLEqYBKsJywAAAA1AAAAEwAAAAAAAAAAAAAAAAASBgAAQ2xhc3NQYXRoTUYv
bWFpbi5tZlBLAQIUABQACAAIAGCUsSrP0pzlLAIAAKYCAAAUAAAAAAAAAAAAAAAAAH8GAABDbGFz
c1BhdGhNRi9tYWluLmphclBLAQIUABQACAAIAGCUsSoIM5aPYAAAAHoAAAAdAAAAAAAAAAAAAAAA
AO0IAABDbGFzc1BhdGhNRi9UYXJnZXRDbGFzczIuamF2YVBLAQIUABQACAAIAGGUsSrKeYmQZgAA
AJAAAAAcAAAAAAAAAAAAAAAAAJgJAABDbGFzc1BhdGhNRi9UYXJnZXRDbGFzcy5qYXZhUEsBAhQA
FAAIAAgAYZSxKgoZRmtWAAAAYwAAABwAAAAAAAAAAAAAAAAASAoAAENsYXNzUGF0aE1GL0NsYXNz
UGF0aE1GLmphdmFQSwUGAAAAAAkACQB/AgAA6AoAAAAA
--------------Boundary-00=_3ITHOSQCVWI4XAB1OP4B--