[cc-devel] liblicense help: libexempi not reading back some predicates?
asheesh at creativecommons.org
Wed Dec 24 13:04:37 EST 2008
Howdy Hub (and hello cc-devel, CC:d),
First of all, happy post-Solstice, and merry Christmas! I hope this email
finds everyone well.
I'm trying to verify liblicense's support for storing and retrieving
predicates in non-CC namespaces, such as dc:creator. I'm having some
problems with Exempi that, now that I've spent a fair bit of time looking
at alone, I am kind of clueless as to why it doesn't work the way I
expect. I wondered if you might be able to help.
To grab the liblicense code I'm confused by, do this:
$ git clone git://code.creativecommons.org/liblicense
$ cd liblicense
$ git branch asheesh-experimental-two origin/asheesh-experimental-two
$ git checkout asheesh-experimental-two
$ git submodule init && git submodule update
$ ./autogen.sh && make check
You'll see one test fails, the predicate read/write test. The specific
line that fails is exempi reading back dc:creator. The code path is
pretty simple; modules/io/exempi.c's exempi_write() writes the predicate,
and exempi_read() in the same file reads it. Exempi prefers to see
predicates as a pair of (namespace, name), whereas we prefer to see
predicates as atomic URIs; the result is that in modules/io/shared_xmp.c,
I have a silly function (which yes, should not return a struct) that
splits up a uri into a namespace and a "rest" (a qualified name).
In the test that fails, we attempt to write and read dc:creator.
Note that if you employ this *horrendous hack*, exempi seems to
successfully read and write the result. Specifically, if you try to write
the invalid predicate of dc:morePermissions instead of dc:creator, it
reads back fine. To see this, simply change the ret.rest on line 31 of
shared_xmp.c to "_ll_shared_xmp_morepermissions" and re-run "make check".
I'm quite spooked by this and wanted to check in with you, Hubert, to see
what you make of it.
P.S. My deepest thanks to you already, Hubert, for your help with other
liblicense issues, especially the test suite!
Avoid reality at all costs.
More information about the cc-devel