summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/tsearch/spell.c58
-rw-r--r--src/include/tsearch/dicts/spell.h16
2 files changed, 39 insertions, 35 deletions
diff --git a/src/backend/tsearch/spell.c b/src/backend/tsearch/spell.c
index 9b1441fa1ad..1aef9ca1ef2 100644
--- a/src/backend/tsearch/spell.c
+++ b/src/backend/tsearch/spell.c
@@ -191,7 +191,7 @@ lowerstr_ctx(IspellDict *Conf, const char *src)
#define GETWCHAR(W,L,N,T) ( ((const uint8*)(W))[ ((T)==FF_PREFIX) ? (N) : ( (L) - 1 - (N) ) ] )
#define GETCHAR(A,N,T) GETWCHAR( (A)->repl, (A)->replen, N, T )
-static char *VoidString = "";
+static const char *VoidString = "";
static int
cmpspell(const void *s1, const void *s2)
@@ -346,11 +346,11 @@ cmpaffix(const void *s1, const void *s2)
* sflag: returns an affix flag from sflagset.
*/
static void
-getNextFlagFromString(IspellDict *Conf, char **sflagset, char *sflag)
+getNextFlagFromString(IspellDict *Conf, const char **sflagset, char *sflag)
{
int32 s;
- char *next,
- *sbuf = *sflagset;
+ char *next;
+ const char *sbuf = *sflagset;
int maxstep;
bool stop = false;
bool met_comma = false;
@@ -453,7 +453,7 @@ getNextFlagFromString(IspellDict *Conf, char **sflagset, char *sflag)
static bool
IsAffixFlagInUse(IspellDict *Conf, int affix, const char *affixflag)
{
- char *flagcur;
+ const char *flagcur;
char flag[BUFSIZ];
if (*affixflag == 0)
@@ -1120,13 +1120,13 @@ addCompoundAffixFlagValue(IspellDict *Conf, char *s, uint32 val)
* flags s.
*/
static int
-getCompoundAffixFlagValue(IspellDict *Conf, char *s)
+getCompoundAffixFlagValue(IspellDict *Conf, const char *s)
{
uint32 flag = 0;
CompoundAffixFlag *found,
key;
char sflag[BUFSIZ];
- char *flagcur;
+ const char *flagcur;
if (Conf->nCompoundAffixFlag == 0)
return 0;
@@ -1155,7 +1155,7 @@ getCompoundAffixFlagValue(IspellDict *Conf, char *s)
* Conf->AffixData array and function returns its entry.
* Else function returns the s parameter.
*/
-static char *
+static const char *
getAffixFlagSet(IspellDict *Conf, char *s)
{
if (Conf->useFlagAliases && *s != '\0')
@@ -1323,7 +1323,7 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename)
/* Also reserve place for empty flag set */
naffix++;
- Conf->AffixData = (char **) palloc0(naffix * sizeof(char *));
+ Conf->AffixData = (const char **) palloc0(naffix * sizeof(char *));
Conf->lenAffixData = Conf->nAffixData = naffix;
/* Add empty flag set into AffixData */
@@ -1571,7 +1571,7 @@ isnewformat:
static int
MergeAffix(IspellDict *Conf, int a1, int a2)
{
- char **ptr;
+ const char **ptr;
Assert(a1 < Conf->nAffixData && a2 < Conf->nAffixData);
@@ -1585,24 +1585,28 @@ MergeAffix(IspellDict *Conf, int a1, int a2)
if (Conf->nAffixData + 1 >= Conf->lenAffixData)
{
Conf->lenAffixData *= 2;
- Conf->AffixData = (char **) repalloc(Conf->AffixData,
- sizeof(char *) * Conf->lenAffixData);
+ Conf->AffixData = (const char **) repalloc(Conf->AffixData,
+ sizeof(char *) * Conf->lenAffixData);
}
ptr = Conf->AffixData + Conf->nAffixData;
if (Conf->flagMode == FM_NUM)
{
- *ptr = cpalloc(strlen(Conf->AffixData[a1]) +
- strlen(Conf->AffixData[a2]) +
- 1 /* comma */ + 1 /* \0 */ );
- sprintf(*ptr, "%s,%s", Conf->AffixData[a1], Conf->AffixData[a2]);
+ char *p = cpalloc(strlen(Conf->AffixData[a1]) +
+ strlen(Conf->AffixData[a2]) +
+ 1 /* comma */ + 1 /* \0 */ );
+
+ sprintf(p, "%s,%s", Conf->AffixData[a1], Conf->AffixData[a2]);
+ *ptr = p;
}
else
{
- *ptr = cpalloc(strlen(Conf->AffixData[a1]) +
- strlen(Conf->AffixData[a2]) +
- 1 /* \0 */ );
- sprintf(*ptr, "%s%s", Conf->AffixData[a1], Conf->AffixData[a2]);
+ char *p = cpalloc(strlen(Conf->AffixData[a1]) +
+ strlen(Conf->AffixData[a2]) +
+ 1 /* \0 */ );
+
+ sprintf(p, "%s%s", Conf->AffixData[a1], Conf->AffixData[a2]);
+ *ptr = p;
}
ptr++;
*ptr = NULL;
@@ -1785,7 +1789,7 @@ NISortDictionary(IspellDict *Conf)
* dictionary. Replace textual flag-field of Conf->Spell entries with
* indexes into Conf->AffixData array.
*/
- Conf->AffixData = (char **) palloc0(naffix * sizeof(char *));
+ Conf->AffixData = (const char **) palloc0(naffix * sizeof(const char *));
curaffix = -1;
for (i = 0; i < Conf->nspell; i++)
@@ -1954,7 +1958,7 @@ mkVoidAffix(IspellDict *Conf, bool issuffix, int startsuffix)
* returns false.
*/
static bool
-isAffixInUse(IspellDict *Conf, char *affixflag)
+isAffixInUse(IspellDict *Conf, const char *affixflag)
{
int i;
@@ -2169,7 +2173,7 @@ addToResult(char **forms, char **cur, char *word)
}
static char **
-NormalizeSubWord(IspellDict *Conf, char *word, int flag)
+NormalizeSubWord(IspellDict *Conf, const char *word, int flag)
{
AffixNodeData *suffix = NULL,
*prefix = NULL;
@@ -2255,7 +2259,7 @@ NormalizeSubWord(IspellDict *Conf, char *word, int flag)
if (CheckAffix(newword, swrdlen, prefix->aff[j], flag, pnewword, &baselen))
{
/* prefix success */
- char *ff = (prefix->aff[j]->flagflags & suffix->aff[i]->flagflags & FF_CROSSPRODUCT) ?
+ const char *ff = (prefix->aff[j]->flagflags & suffix->aff[i]->flagflags & FF_CROSSPRODUCT) ?
VoidString : prefix->aff[j]->flag;
if (FindWord(Conf, pnewword, ff, flag))
@@ -2287,7 +2291,7 @@ typedef struct SplitVar
} SplitVar;
static int
-CheckCompoundAffixes(CMPDAffix **ptr, char *word, int len, bool CheckInPlace)
+CheckCompoundAffixes(CMPDAffix **ptr, const char *word, int len, bool CheckInPlace)
{
bool issuffix;
@@ -2367,7 +2371,7 @@ AddStem(SplitVar *v, char *word)
}
static SplitVar *
-SplitToVariants(IspellDict *Conf, SPNode *snode, SplitVar *orig, char *word, int wordlen, int startpos, int minpos)
+SplitToVariants(IspellDict *Conf, SPNode *snode, SplitVar *orig, const char *word, int wordlen, int startpos, int minpos)
{
SplitVar *var = NULL;
SPNodeData *StopLow,
@@ -2533,7 +2537,7 @@ addNorm(TSLexeme **lres, TSLexeme **lcur, char *word, int flags, uint16 NVariant
}
TSLexeme *
-NINormalizeWord(IspellDict *Conf, char *word)
+NINormalizeWord(IspellDict *Conf, const char *word)
{
char **res;
TSLexeme *lcur = NULL,
diff --git a/src/include/tsearch/dicts/spell.h b/src/include/tsearch/dicts/spell.h
index 10c05769ac7..1b881b8320e 100644
--- a/src/include/tsearch/dicts/spell.h
+++ b/src/include/tsearch/dicts/spell.h
@@ -66,7 +66,7 @@ typedef struct spell_struct
* flag is filled in by NIImportDictionary(). After
* NISortDictionary(), d is used instead of flag.
*/
- char *flag;
+ const char *flag;
/* d is used in mkSPNode() */
struct
{
@@ -86,15 +86,15 @@ typedef struct spell_struct
*/
typedef struct aff_struct
{
- char *flag;
+ const char *flag;
/* FF_SUFFIX or FF_PREFIX */
uint32 type:1,
flagflags:7,
issimple:1,
isregis:1,
replen:14;
- char *find;
- char *repl;
+ const char *find;
+ const char *repl;
union
{
/*
@@ -146,7 +146,7 @@ typedef struct AffixNode
typedef struct
{
- char *affix;
+ const char *affix;
int len;
bool issuffix;
} CMPDAffix;
@@ -170,7 +170,7 @@ typedef struct CompoundAffixFlag
union
{
/* Flag name if flagMode is FM_CHAR or FM_LONG */
- char *s;
+ const char *s;
/* Flag name if flagMode is FM_NUM */
uint32 i;
} flag;
@@ -192,7 +192,7 @@ typedef struct
SPNode *Dictionary;
/* Array of sets of affixes */
- char **AffixData;
+ const char **AffixData;
int lenAffixData;
int nAffixData;
bool useFlagAliases;
@@ -229,7 +229,7 @@ typedef struct
size_t avail; /* free space remaining at firstfree */
} IspellDict;
-extern TSLexeme *NINormalizeWord(IspellDict *Conf, char *word);
+extern TSLexeme *NINormalizeWord(IspellDict *Conf, const char *word);
extern void NIStartBuild(IspellDict *Conf);
extern void NIImportAffixes(IspellDict *Conf, const char *filename);