|
Prev: Does anything dump per-database config settings? (was Re: ALTER DATABASE vs pg_dump)
Next: triggers on prepare, commit, rollback... ?
From: "David E. Wheeler" on 1 Jul 2008 13:33 Howdy, In my original implementation of citext, which I'm going to start using for an app I'm developing, I pull in the wstring_lower function from oracle_compat.c by simply declaring it at the top of citext.c, just as if it were in an include file: extern char * wstring_lower (char *str); After I ported it to CVS HEAD, however, and discovered the str_tolower() function in formatting.c, I wanted to try to make use of it in 8.3, as well. But when I tried to include it in citext.c, it simply didn't work. I put this at the top of citext.c: extern char * localized_str_tolower(char *buff); But when I try to use it, like so: lcstr = localized_str_tolower(VARDATA_ANY(left)); rcstr = localized_str_tolower(VARDATA_ANY(right)); I get a compile-time error: Undefined symbols: "_localized_str_tolower", referenced from: _citextcmp in citext.o _citextcmp in citext.o ld: symbol(s) not found collect2: ld returned 1 exit status make: *** [citext.so] Error 1 So, stupid C question, I'm sure: How can I use this function from my module? Oh, and on a side note, should I localized_str_tolower() or just str_tolower()? Thanks, David -- Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
From: Bruce Momjian on 1 Jul 2008 13:38 David E. Wheeler wrote: > Howdy, > > In my original implementation of citext, which I'm going to start > using for an app I'm developing, I pull in the wstring_lower function > from oracle_compat.c by simply declaring it at the top of citext.c, > just as if it were in an include file: > > extern char * wstring_lower (char *str); > > After I ported it to CVS HEAD, however, and discovered the > str_tolower() function in formatting.c, I wanted to try to make use of > it in 8.3, as well. But when I tried to include it in citext.c, it > simply didn't work. I put this at the top of citext.c: > > extern char * localized_str_tolower(char *buff); > > But when I try to use it, like so: > > lcstr = localized_str_tolower(VARDATA_ANY(left)); > rcstr = localized_str_tolower(VARDATA_ANY(right)); > > I get a compile-time error: > > Undefined symbols: > "_localized_str_tolower", referenced from: > _citextcmp in citext.o > _citextcmp in citext.o > ld: symbol(s) not found > collect2: ld returned 1 exit status > make: *** [citext.so] Error 1 > > So, stupid C question, I'm sure: How can I use this function from my > module? > > Oh, and on a side note, should I localized_str_tolower() or just > str_tolower()? I am not sure what localized_str_tolower() is but I think you should call str_tolower directly if you want to pass char*, and lower() if you want to pass 'text'. -- Bruce Momjian <bruce(a)momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + If your life is a hard drive, Christ can be your backup. + -- Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
From: "David E. Wheeler" on 1 Jul 2008 13:45 On Jul 1, 2008, at 10:38, Bruce Momjian wrote: >> Oh, and on a side note, should I localized_str_tolower() or just >> str_tolower()? > > I am not sure what localized_str_tolower() is but I think you should > call str_tolower directly if you want to pass char*, and lower() if > you > want to pass 'text'. From formatting.c in 8.3.1: #if defined(HAVE_WCSTOMBS) && defined(HAVE_TOWLOWER) #define USE_WIDE_UPPER_LOWER /* externs are in oracle_compat.c */ extern char *wstring_upper(char *str); extern char *wstring_lower(char *str); static char *localized_str_toupper(char *buff); static char *localized_str_tolower(char *buff); #else #define localized_str_toupper str_toupper #define localized_str_tolower str_tolower #endif So I assumed it was preferred. FWIW, str_tolower() doesn't work in 8.3, either (note that it is not declared in formatting.h the way it is in CVS HEAD). Best, -- Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
From: Bruce Momjian on 1 Jul 2008 14:11 David E. Wheeler wrote: > On Jul 1, 2008, at 10:38, Bruce Momjian wrote: > > >> Oh, and on a side note, should I localized_str_tolower() or just > >> str_tolower()? > > > > I am not sure what localized_str_tolower() is but I think you should > > call str_tolower directly if you want to pass char*, and lower() if > > you > > want to pass 'text'. > > From formatting.c in 8.3.1: > > #if defined(HAVE_WCSTOMBS) && defined(HAVE_TOWLOWER) > #define USE_WIDE_UPPER_LOWER > /* externs are in oracle_compat.c */ > extern char *wstring_upper(char *str); > extern char *wstring_lower(char *str); > > static char *localized_str_toupper(char *buff); > static char *localized_str_tolower(char *buff); > #else > #define localized_str_toupper str_toupper > #define localized_str_tolower str_tolower > #endif > > So I assumed it was preferred. FWIW, str_tolower() doesn't work in > 8.3, either (note that it is not declared in formatting.h the way it > is in CVS HEAD). That whole use of localized_* is gone in CVS HEAD --- we now have a cleaner API. -- Bruce Momjian <bruce(a)momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + If your life is a hard drive, Christ can be your backup. + -- Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
From: "David E. Wheeler" on 1 Jul 2008 14:25
On Jul 1, 2008, at 11:11, Bruce Momjian wrote: > That whole use of localized_* is gone in CVS HEAD --- we now have a > cleaner API. I know. The patch I sent in uses it. However, I still have a version I want to use on 8.3. So what would be the proper function to use in 8.3.x and how can I get at it? Thanks, David -- Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers |