From d3e36da7894385f243d0e780a8f6d6db5fd38c71 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 17 Oct 2004 23:09:31 +0000 Subject: [PATCH] Make the standard stopword files be sought relative to share_dir, so that a tsearch2 installation can be relocatable. --- contrib/tsearch2/Makefile | 5 ++--- contrib/tsearch2/stopword.c | 23 ++++++++++++++++++----- contrib/tsearch2/tsearch.sql.in | 4 ++-- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/contrib/tsearch2/Makefile b/contrib/tsearch2/Makefile index 928266daa5..15983db428 100644 --- a/contrib/tsearch2/Makefile +++ b/contrib/tsearch2/Makefile @@ -1,4 +1,4 @@ -# $PostgreSQL: pgsql/contrib/tsearch2/Makefile,v 1.7 2004/08/20 20:13:09 momjian Exp $ +# $PostgreSQL: pgsql/contrib/tsearch2/Makefile,v 1.8 2004/10/17 23:09:31 tgl Exp $ MODULE_big = tsearch2 OBJS = dict_ex.o dict.o snmap.o stopword.o common.o prs_dcfg.o \ @@ -39,8 +39,7 @@ $(SUBDIRS:%=%-recursive): $(MAKE) -C $(subst -recursive,,$@) SUBSYS.o tsearch2.sql: tsearch.sql.in - sed -e 's,MODULE_PATHNAME,$$libdir/$(MODULE_big),g' \ - -e 's,DATA_PATH,$(datadir)/contrib,g' $< >$@ + sed -e 's,MODULE_PATHNAME,$$libdir/$(MODULE_big),g' $< >$@ untsearch2.sql: untsearch.sql.in cp $< $@ diff --git a/contrib/tsearch2/stopword.c b/contrib/tsearch2/stopword.c index f91abeb460..185d085de1 100644 --- a/contrib/tsearch2/stopword.c +++ b/contrib/tsearch2/stopword.c @@ -2,12 +2,12 @@ * stopword library * Teodor Sigaev */ -#include -#include -#include +#include "postgres.h" + #include -#include "postgres.h" +#include "miscadmin.h" + #include "common.h" #include "dict.h" @@ -51,10 +51,23 @@ readstoplist(text *in, StopList * s) if (in && VARSIZE(in) - VARHDRSZ > 0) { char *filename = text2char(in); - FILE *hin = NULL; + FILE *hin; char buf[STOPBUFLEN]; int reallen = 0; + /* if path is relative, take it as relative to share dir */ + if (!is_absolute_path(filename)) + { + char sharepath[MAXPGPATH]; + char *absfn; + + get_share_path(my_exec_path, sharepath); + absfn = palloc(strlen(sharepath) + strlen(filename) + 2); + sprintf(absfn, "%s/%s", sharepath, filename); + pfree(filename); + filename = absfn; + } + if ((hin = fopen(filename, "r")) == NULL) ereport(ERROR, (errcode(ERRCODE_CONFIG_FILE_ERROR), diff --git a/contrib/tsearch2/tsearch.sql.in b/contrib/tsearch2/tsearch.sql.in index 1345b64f15..35f96cd5cd 100644 --- a/contrib/tsearch2/tsearch.sql.in +++ b/contrib/tsearch2/tsearch.sql.in @@ -77,7 +77,7 @@ CREATE FUNCTION snb_lexize(internal,internal,int4) insert into pg_ts_dict select 'en_stem', 'snb_en_init(text)', - 'DATA_PATH/english.stop', + 'contrib/english.stop', 'snb_lexize(internal,internal,int4)', 'English Stemmer. Snowball.' ; @@ -90,7 +90,7 @@ CREATE FUNCTION snb_ru_init(text) insert into pg_ts_dict select 'ru_stem', 'snb_ru_init(text)', - 'DATA_PATH/russian.stop', + 'contrib/russian.stop', 'snb_lexize(internal,internal,int4)', 'Russian Stemmer. Snowball.' ;