[Bf-committers] XML Patches

Philipp Gühring bf-committers@blender.org
Mon, 18 Aug 2003 00:02:59 +0200


--------------Boundary-00=_ZKASGCV14AG9TOTQVI9J
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Ok, this is now the core functionality of XML saving.

I am still not decided upon using Hexdecimal or Base64 as encoding scheme for 
the binary contents like Images in the file.

Base64 would need less space, but is a bit more complicated to generate and 
parse.

So at the moment it is saving binaries as-is, which normally breaks the XML 
conformance.

The patch against the blenloader/intern/writefile.c is attached.

Many greetings,
- -- 
~ Philipp Gühring              p.guehring@futureware.at
~ http://www.livingxml.net/       ICQ UIN: 6588261
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE/P/uVlqQ+F+0wB3oRAj0WAJ4pN2KQy4a5B2jxHdD8cK2WzBMdMgCeJk8j
lj/WTrN1JvssbNXI1rVG4ag=
=/QR9
-----END PGP SIGNATURE-----

--------------Boundary-00=_ZKASGCV14AG9TOTQVI9J
Content-Type: text/x-diff;
  charset="iso-8859-1";
  name="writepatch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="writepatch"

LS0tIHdyaXRlZmlsZS5vcmlnLmMJMjAwMy0wOC0xNyAyMzowODoyMC4wMDAwMDAwMDAgKzAyMDAK
KysrIHdyaXRlZmlsZS5jCTIwMDMtMDgtMTcgMjM6MjY6MjAuMDAwMDAwMDAwICswMjAwCkBAIC0x
NzYsNiArMTc2LDcgQEAKIAlpbnQgdG90LCBjb3VudCwgZXJyb3I7CiAJCiAJaW50IGlzX3B1Ymxp
c2hlcjsKKwlpbnQgd3JpdGVfZmxhZ3M7CiAJc3RydWN0IHdyaXRlU3RyZWFtR2x1ZVN0cnVjdCAq
c3RyZWFtR2x1ZTsKIH0gV3JpdGVEYXRhOwogCkBAIC0yNjksNiArMjcwLDggQEAKIHsKIAlpbnQg
aXNfcHVibGlzaGVyPSAod3JpdGVfZmxhZ3MgJiAoR19GSUxFX0NPTVBSRVNTIHwgR19GSUxFX0xP
Q0sgfCBHX0ZJTEVfU0lHTiB8IEdfRklMRV9QVUJMSVNIKSk7CiAJV3JpdGVEYXRhICp3ZD0gd3Jp
dGVkYXRhX25ldyhmaWxlLCBpc19wdWJsaXNoZXIpOworCisgCXdkLT53cml0ZV9mbGFncz13cml0
ZV9mbGFnczsJCiAJCiAJaWYgKGlzX3B1Ymxpc2hlcikgewogCQlteXdmaWxlPSBmaWxlOwpAQCAt
Mzk3LDYgKzQwMCw1OSBAQAogCiAvKiAqKioqKioqKioqIFdSSVRFIEZJTEUgKioqKioqKioqKioq
KioqKioqICovCiAKK3N0YXRpYyBpbnQgYXJyYXlzaXplKGNoYXIgKmFzdHIsIGludCBsZW4pCit7
CisgICAgICAgIGludCBhLCBtdWw9MTsKKyAgICAgICAgY2hhciBzdHJbMTAwXSwgKmNwPTA7CisK
KyAgICAgICAgbWVtY3B5KHN0ciwgYXN0ciwgbGVuKzEpOworCisgICAgICAgIGZvcihhPTA7IGE8
bGVuOyBhKyspIHsKKyAgICAgICAgICAgICAgICBpZiggc3RyW2FdPT0gJ1snICkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY3A9ICYoc3RyW2ErMV0pOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlIGlmKCBzdHJbYV09PSddJyAmJiBjcCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyW2FdPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgbXVsKj0gYXRv
aShjcCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHByaW50ZigiJWQ7
XG4iLG11bCk7CisgICAgICAgIHJldHVybiBtdWw7Cit9CisKK3N0YXRpYyBpbnQgZWxlbWVudHNp
emUoc3RydWN0IFNETkEgKnNkbmEsIHNob3J0IHR5cGUsIHNob3J0IG5hbWUpCisvKiBjYWxsIHdp
dGggbnVtYmVycyBmcm9tIHN0cnVjdC1hcnJheSAqLworeworICAgICAgICBwcmludGYoImJsZW5s
b2FkZXI6OmludGVybjo6Z2VuZmlsZTo6ZWxlbWVudHNpemUoJXAsJWQsJWQpPSIsc2RuYSx0eXBl
LG5hbWUpOworCisgICAgICAgIGludCBtdWwsIG5hbWVsZW4sIGxlbjsKKyAgICAgICAgY2hhciAq
Y3A7CisKKyAgICAgICAgY3A9IHNkbmEtPm5hbWVzW25hbWVdOworICAgICAgICBsZW49IDA7CisK
KyAgICAgICAgbmFtZWxlbj0gc3RybGVuKGNwKTsKKyAgICAgICAgLyogaXMgaXQgYSBwb2ludGVy
IG9yIGZ1bmN0aW9uIHBvaW50ZXI/ICovCisgICAgICAgIGlmKGNwWzBdPT0nKicgfHwgY3BbMV09
PScqJykgeworICAgICAgICAgICAgICAgIC8qIGhhcyB0aGUgbmFhbSBhbiBleHRyYSBsZW5ndGg/
IChhcnJheSkgKi8KKyAgICAgICAgICAgICAgICBtdWw9IDE7CisgICAgICAgICAgICAgICAgaWYo
IGNwW25hbWVsZW4tMV09PSddJykgbXVsPSBhcnJheXNpemUoY3AsIG5hbWVsZW4pOworCisgICAg
ICAgICAgICAgICAgbGVuPSBzZG5hLT5wb2ludGVybGVuKm11bDsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIGlmKCBzZG5hLT50eXBlbGVuc1t0eXBlXSApIHsKKyAgICAgICAgICAgICAgICAvKiBo
YXMgdGhlIG5hYW0gYW4gZXh0cmEgbGVuZ3RoPyAoYXJyYXkpICovCisgICAgICAgICAgICAgICAg
bXVsPSAxOworICAgICAgICAgICAgICAgIGlmKCBjcFtuYW1lbGVuLTFdPT0nXScpIG11bD0gYXJy
YXlzaXplKGNwLCBuYW1lbGVuKTsKKworICAgICAgICAgICAgICAgIGxlbj0gbXVsKnNkbmEtPnR5
cGVsZW5zW3R5cGVdOworCisgICAgICAgIH0KKyAgICAgICAgcHJpbnRmKCIlZFxuIixsZW4pOwor
ICAgICAgICByZXR1cm4gbGVuOworfQorCisKIHN0YXRpYyB2b2lkIHdyaXRlc3RydWN0KFdyaXRl
RGF0YSAqd2QsIGludCBmaWxlY29kZSwgY2hhciAqc3RydWN0bmFtZSwgaW50IG5yLCB2b2lkICph
ZHIpCiB7CiAJQkhlYWQgYmg7CkBAIC00MTksOSArNDc1LDEyNSBAQAogCWJoLmxlbj0gbnIqd2Qt
PnNkbmEtPnR5cGVsZW5zW3NwWzBdXTsKIAkKIAlpZihiaC5sZW49PTApIHJldHVybjsKLQkJCi0J
bXl3cml0ZSh3ZCwgJmJoLCBzaXplb2YoQkhlYWQpKTsKLQlteXdyaXRlKHdkLCBhZHIsIGJoLmxl
bik7CisKKwlpZiAod2QtPndyaXRlX2ZsYWdzICYgR19GSUxFX1hNTCkgCisJeworCSAgY2hhciBQ
dWZmZXJbMTAwXTsKKwkgIGludCBpOworCSAgdm9pZCAqbXlhZHI9YWRyOworCisKKwkgIGZvcihp
PTA7aTxucjtpKyspIAorCSAgeworCSAgICBteWFkcj1hZHIraSp3ZC0+c2RuYS0+dHlwZWxlbnNb
c3BbMF1dOworCSAgICBteXdyaXRlKHdkLCAiPHN0cnVjdCBjb2RlPVwiIiwxNCk7CisgICAgICAg
ICAgICBteXdyaXRlKHdkLCAmZmlsZWNvZGUsc2l6ZW9mKGZpbGVjb2RlKSk7CisJICAgIG15d3Jp
dGUod2QsICJcIiBuYW1lPVwiIiw4KTsKKwkgICAgbXl3cml0ZSh3ZCwgc3RydWN0bmFtZSwgc3Ry
bGVuKHN0cnVjdG5hbWUpKTsKKwkgICAgLy9teXdyaXRlKHdkLCAiXCIgbnI9XCIiLDYpOworCSAg
ICAvL3NwcmludGYoUHVmZmVyLCIlZCIsbnIpOworCSAgICAvL215d3JpdGUod2QsIFB1ZmZlciwg
c3RybGVuKFB1ZmZlcikpOworCSAgICAvL215d3JpdGUod2QsICJcIiBpPVwiIiw1KTsKKwkgICAg
Ly9zcHJpbnRmKFB1ZmZlciwiJWQiLGkpOworCSAgICAvL215d3JpdGUod2QsIFB1ZmZlciwgc3Ry
bGVuKFB1ZmZlcikpOworCSAgICBteXdyaXRlKHdkLCAiXCIgc2l6ZT1cIiIsOCk7CisgCSAgICBz
cHJpbnRmKFB1ZmZlciwiJWQiLHdkLT5zZG5hLT50eXBlbGVuc1tzcFswXV0pOworCSAgICBteXdy
aXRlKHdkLCBQdWZmZXIsIHN0cmxlbihQdWZmZXIpKTsKKwkgICAgLy9teXdyaXRlKHdkLCAiXCIg
bXlucj1cIiIsOCk7CisJICAgIC8vc3ByaW50ZihQdWZmZXIsIiVkIixzcFsxXSk7CisJICAgIC8v
bXl3cml0ZSh3ZCwgUHVmZmVyLCBzdHJsZW4oUHVmZmVyKSk7CisgCisJICAgIG15d3JpdGUod2Qs
ICJcIj4iLDIpOworCisJICAgIHNob3J0ICpteXNwPXNwOworCisJICAgIGludCBiLCBteW5yOwor
CSAgICBteW5yPSBteXNwWzFdOworCSAgICBwcmludGYoIm15bnI6ICVkXG4iLG15bnIpOworCSAg
ICBteXNwKz0gMjsKKwkgICAgdm9pZCAqbmV3YWRyPW15YWRyOworCSAgICBmb3IoYj0wOyBiPCBt
eW5yOyBiKyssIG15c3ArPSAyKSAKKwkgICAgeworCSAgICAgIGludCBzaXplPWVsZW1lbnRzaXpl
KHdkLT5zZG5hLCBteXNwWzBdLCBteXNwWzFdKTsKKwkgICAgICAvL3NwcmludGYoUHVmZmVyLCJi
OiAlZCwgdHlwZXNbMF06ICVzLCBuYW1lc1sxXTogJXMsIGxlblswXTogJWQsIGVsZW1lbnRzaXpl
KCk6ICVkXG4iLGIsd2QtPnNkbmEtPnR5cGVzW215c3BbMF1dLCB3ZC0+c2RuYS0+bmFtZXNbbXlz
cFsxXV0sIHdkLT5zZG5hLT50eXBlbGVuc1tteXNwWzBdXSwgc2l6ZSk7CisJICAgICAgLy9teXdy
aXRlKHdkLFB1ZmZlcixzdHJsZW4oUHVmZmVyKSk7CisJICAgICAgLy9teXdyaXRlKHdkLCI8ZGF0
YT4iLDYpOworIAorICAgICAgICAgICAgICBzcHJpbnRmKFB1ZmZlciwiPGRhdGEgdHlwZT1cIiVz
XCIgbmFtZT1cIiVzXCI+Iiwgd2QtPnNkbmEtPnR5cGVzW215c3BbMF1dLCB3ZC0+c2RuYS0+bmFt
ZXNbbXlzcFsxXV0pOworICAgICAgICAgICAgICBteXdyaXRlKHdkLFB1ZmZlcixzdHJsZW4oUHVm
ZmVyKSk7CisgICAgICAgICAgICAgIGlmKCFzdHJjbXAod2QtPnNkbmEtPnR5cGVzW215c3BbMF1d
LCJpbnQiKSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNwcmludGYoUHVmZmVy
LCIlZCIsKigoaW50KilteWFkcikpOworICAgICAgICAgICAgICAgIG15d3JpdGUod2QsUHVmZmVy
LHN0cmxlbihQdWZmZXIpKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIGlm
KHdkLT5zZG5hLT5uYW1lc1tteXNwWzFdXVswXT09JyonKQorICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgc3ByaW50ZihQdWZmZXIsIiVwIixteWFkcik7CisgICAgICAgICAgICAgICAg
bXl3cml0ZSh3ZCxQdWZmZXIsc3RybGVuKFB1ZmZlcikpOworCSAgICAgIH0KKyAgICAgICAgICAg
ICAgZWxzZSBpZighc3RyY21wKHdkLT5zZG5hLT50eXBlc1tteXNwWzBdXSwidWludCIpKQorICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3ByaW50ZihQdWZmZXIsIiVkIiwqKCh1bnNp
Z25lZCBpbnQqKW15YWRyKSk7CisgICAgICAgICAgICAgICAgbXl3cml0ZSh3ZCxQdWZmZXIsc3Ry
bGVuKFB1ZmZlcikpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgaWYoIXN0
cmNtcCh3ZC0+c2RuYS0+dHlwZXNbbXlzcFswXV0sInNob3J0IikpCisgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBzcHJpbnRmKFB1ZmZlciwiJWQiLCooKHNob3J0KilteWFkcikpOwor
ICAgICAgICAgICAgICAgIG15d3JpdGUod2QsUHVmZmVyLHN0cmxlbihQdWZmZXIpKTsKKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIGlmKCFzdHJjbXAod2QtPnNkbmEtPnR5cGVz
W215c3BbMF1dLCJ1c2hvcnQiKSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNw
cmludGYoUHVmZmVyLCIlZCIsKigodW5zaWduZWQgc2hvcnQqKW15YWRyKSk7CisgICAgICAgICAg
ICAgICAgbXl3cml0ZSh3ZCxQdWZmZXIsc3RybGVuKFB1ZmZlcikpOworICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgIGVsc2UgaWYoIXN0cmNtcCh3ZC0+c2RuYS0+dHlwZXNbbXlzcFswXV0s
ImNoYXIiKSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKHN0cmNocih3ZC0+
c2RuYS0+bmFtZXNbbXlzcFsxXV0sJ1snKSE9TlVMTCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICBteXdyaXRlKHdkLG5ld2FkcixzdHJsZW4obmV3YWRyKSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICBzcHJpbnRmKFB1ZmZlciwiJWMiLCooKGNoYXIqKW15YWRyKSk7CisgICAg
ICAgICAgICAgICAgICBteXdyaXRlKHdkLFB1ZmZlcixzdHJsZW4oUHVmZmVyKSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgaWYoIXN0cmNt
cCh3ZC0+c2RuYS0+dHlwZXNbbXlzcFswXV0sImZsb2F0IikpCisgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBzcHJpbnRmKFB1ZmZlciwiJWYiLCooKGZsb2F0KilteWFkcikpOworICAg
ICAgICAgICAgICAgIG15d3JpdGUod2QsUHVmZmVyLHN0cmxlbihQdWZmZXIpKTsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICBlbHNlIGlmKCFzdHJjbXAod2QtPnNkbmEtPnR5cGVzW215
c3BbMF1dLCJ2b2lkIikpCisgICAgICAgICAgICAgIHsgCisgICAgICAgICAgICAgICAgc3ByaW50
ZihQdWZmZXIsIiVwIiwqKChpbnQqKW15YWRyKSk7CisgICAgICAgICAgICAgICAgbXl3cml0ZSh3
ZCxQdWZmZXIsc3RybGVuKFB1ZmZlcikpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IGVsc2UgaWYoZG5hX2ZpbmRzdHJ1Y3RfbnIod2QtPnNkbmEsIHdkLT5zZG5hLT50eXBlc1tteXNw
WzBdXSk+MCkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHdyaXRlc3RydWN0KHdk
LGZpbGVjb2RlLHdkLT5zZG5hLT5uYW1lc1tteXNwWzFdXSwxLG5ld2Fkcik7CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgbXl3cml0ZSh3ZCxuZXdhZHIsc2l6ZSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgbmV3YWRyKz1zaXplOworICAgICAgICAgICAgICBteXdyaXRlKHdkLCI8L2RhdGE+Iiw3KTsK
KyAgICAgICAgICAgIH0KKworCSAgICAvL215d3JpdGUod2QsIG15YWRyLCB3ZC0+c2RuYS0+dHlw
ZWxlbnNbc3BbMF1dKTsKKwkgICAgLy9teXdyaXRlKHdkLCBhZHIsYmgubGVuKTsKKworCSAgICBt
eXdyaXRlKHdkLCAiPC9zdHJ1Y3Q+XG4iLDEwKTsKKwkgIH0KKworCisJfQorCWVsc2UKKwl7CisJ
ICBteXdyaXRlKHdkLCAmYmgsIHNpemVvZihCSGVhZCkpOworCSAgbXl3cml0ZSh3ZCwgYWRyLCBi
aC5sZW4pOworCX0KKwogfQogCiBzdGF0aWMgdm9pZCB3cml0ZWRhdGEoV3JpdGVEYXRhICp3ZCwg
aW50IGZpbGVjb2RlLCBpbnQgbGVuLCB2b2lkICphZHIpCS8qIGRvIG5vdCB1c2UgZm9yIHN0cnVj
dHMgKi8KQEAgLTQ0MCw5ICs2MTIsMjcgQEAKIAliaC5ucj0gMTsKIAliaC5TRE5BbnI9IDA7CQog
CWJoLmxlbj0gbGVuOwotCQotCW15d3JpdGUod2QsICZiaCwgc2l6ZW9mKEJIZWFkKSk7Ci0JaWYo
bGVuKSBteXdyaXRlKHdkLCBhZHIsIGxlbik7CisKKwlpZiAod2QtPndyaXRlX2ZsYWdzICYgR19G
SUxFX1hNTCkKKwl7CisJICAgICAgICBjaGFyIFB1ZmZlclsxMDBdOworCisJICAgICAgICBteXdy
aXRlKHdkLCAiPGJpbmFyeSBjb2RlPVwiIiwxNCk7CisJICAgICAgICBteXdyaXRlKHdkLCAmZmls
ZWNvZGUsc2l6ZW9mKGZpbGVjb2RlKSk7CisJICAgICAgICBteXdyaXRlKHdkLCAiXCIgbGVuPVwi
Iiw3KTsKKwkgICAgICAgIHNwcmludGYoUHVmZmVyLCIlZCIsbGVuKTsKKwkgICAgICAgIG15d3Jp
dGUod2QsIFB1ZmZlciwgc3RybGVuKFB1ZmZlcikpOworCSAgICAgICAgbXl3cml0ZSh3ZCwgIlwi
PiIsMik7CisJICAgICAgICAvL215d3JpdGUod2QsICZiaCwgc2l6ZW9mKEJIZWFkKSk7CisJICAg
ICAgICBteXdyaXRlKHdkLCBhZHIsIGJoLmxlbik7CisJICAgICAgICBteXdyaXRlKHdkLCAiPC9i
aW5hcnk+XG4iLDEwKTsKKwl9CisJZWxzZQorCXsKKwkJbXl3cml0ZSh3ZCwgJmJoLCBzaXplb2Yo
QkhlYWQpKTsKKwkJaWYobGVuKSBteXdyaXRlKHdkLCBhZHIsIGxlbik7CisJfQorCiB9CiAKIHN0
YXRpYyB2b2lkIHdyaXRlX3NjcmlwdGxpbmsoV3JpdGVEYXRhICp3ZCwgU2NyaXB0TGluayAqc2xp
bmspCg==

--------------Boundary-00=_ZKASGCV14AG9TOTQVI9J--