This will not work if there is no EOS on the data portion of the string. Text fields are not usually stored with the EOS on them, are they?
elein [EMAIL PROTECTED] On Wednesday 09 October 2002 21:14, Joe Conway wrote: > Ruslan A Dautkhanov wrote: > > Btw, how I can convert TEXT field to a CString one? I had tried to use > > char *cnum = PG_GETARG_CSTRING(0) instead of > > text tnum = PG_GETARG_NAME(0), but it's not worked properly. Is any > > function to convert text object to a null-terminated string??? Thanks > > again. > > I like to use the following macros: > > /* convert C string to text pointer */ > #define GET_TEXT(cstrp) \ > DatumGetTextP(DirectFunctionCall1(textin, CStringGetDatum(cstrp))) > /* convert text pointer to C string */ > #define GET_STR(textp) \ > DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(textp))) > > then you can do, e.g. > char *cnum = GET_STR(PG_GETARG_TEXT_P(0)); > > BTW, there are lots of good examples of C functions in contrib. > > HTH, > > Joe > > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED] ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org