Thread: Changes to C interface from 7.0 to 7.1
I have a function like this: VARSIZE(result) = result_size - 1; sha1_init(C); sha1_write(C, VARDATA(arg), VARSIZE(arg)-VARHDRSZ); anyway, the problem is that VARSIZE is no longer defined in a way that I can make assignments to in 7.1. Does anyone have any sugestions? Also, if there is an SHA1 function built in, I might as well use that, but I still need to have my own user-defined C for other things. For instance, I have a challenge-response function that works with the CryptoCard token, linked directly into PG, which I need to recompile for 7.1. Thanks
"Dr. Evil" <drevil@sidereal.kz> writes: > anyway, the problem is that VARSIZE is no longer defined in a way that > I can make assignments to in 7.1. Does anyone have any sugestions? Use VARATT_SIZEP. src/backend/utils/adt/ is a rich source of examples to follow when you have questions like this ... regards, tom lane
> "Dr. Evil" <drevil@sidereal.kz> writes: > > anyway, the problem is that VARSIZE is no longer defined in a way that > > I can make assignments to in 7.1. Does anyone have any sugestions? > > Use VARATT_SIZEP. > > src/backend/utils/adt/ is a rich source of examples to follow when you > have questions like this ... Thanks for the tip on that. That helps, but the documentation is still incomplete. I was reading the docs, and those files in src/backend/utils/adt/, and they all include "postgres.h" and "fmgr.h", from src/include. Do I need to include anything from /usr/local/pgsql/include? If not, shouldn't the postgres.h and fmgr.h files be somewhere in /usr/local/pgsql/include? After I changed the macros I was using to the V1 style, and included postgres.h and fmgr.h, it worked, and now I can get my SHA1 hashes again, but I want to understand what I'm doing. Slightly confused by the new C interface... Now if only I could also link in gpg I would have everything...
"Dr. Evil" <drevil@sidereal.kz> writes: > ... shouldn't the postgres.h and fmgr.h > files be somewhere in /usr/local/pgsql/include? make install-all-headers is needed if you want to do backend-side code development using the installed headers. By default, only headers for client programming are installed. regards, tom lane