summaryrefslogtreecommitdiff
path: root/contrib/tsearch2/dict_syn.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/tsearch2/dict_syn.c')
-rw-r--r--contrib/tsearch2/dict_syn.c179
1 files changed, 97 insertions, 82 deletions
diff --git a/contrib/tsearch2/dict_syn.c b/contrib/tsearch2/dict_syn.c
index 34f74cf0ff7..8364223be40 100644
--- a/contrib/tsearch2/dict_syn.c
+++ b/contrib/tsearch2/dict_syn.c
@@ -1,4 +1,4 @@
-/*
+/*
* ISpell interface
* Teodor Sigaev <[email protected]>
*/
@@ -13,93 +13,106 @@
#include "common.h"
#define SYNBUFLEN 4096
-typedef struct {
- char *in;
- char *out;
-} Syn;
-
-typedef struct {
- int len;
- Syn *syn;
-} DictSyn;
+typedef struct
+{
+ char *in;
+ char *out;
+} Syn;
+
+typedef struct
+{
+ int len;
+ Syn *syn;
+} DictSyn;
PG_FUNCTION_INFO_V1(syn_init);
-Datum syn_init(PG_FUNCTION_ARGS);
+Datum syn_init(PG_FUNCTION_ARGS);
+
PG_FUNCTION_INFO_V1(syn_lexize);
-Datum syn_lexize(PG_FUNCTION_ARGS);
+Datum syn_lexize(PG_FUNCTION_ARGS);
static char *
-findwrd(char *in, char **end) {
- char *start;
+findwrd(char *in, char **end)
+{
+ char *start;
- *end=NULL;
- while(*in && isspace(*in))
+ *end = NULL;
+ while (*in && isspace(*in))
in++;
- if ( !in )
+ if (!in)
return NULL;
- start=in;
+ start = in;
- while(*in && !isspace(*in))
+ while (*in && !isspace(*in))
in++;
- *end=in;
+ *end = in;
return start;
}
static int
-compareSyn(const void *a, const void *b) {
- return strcmp( ((Syn*)a)->in, ((Syn*)b)->in );
+compareSyn(const void *a, const void *b)
+{
+ return strcmp(((Syn *) a)->in, ((Syn *) b)->in);
}
-Datum
-syn_init(PG_FUNCTION_ARGS) {
- text *in;
- DictSyn *d;
- int cur=0;
- FILE *fin;
- char *filename;
- char buf[SYNBUFLEN];
- char *starti,*starto,*end=NULL;
- int slen;
-
- if ( PG_ARGISNULL(0) || PG_GETARG_POINTER(0)==NULL )
+Datum
+syn_init(PG_FUNCTION_ARGS)
+{
+ text *in;
+ DictSyn *d;
+ int cur = 0;
+ FILE *fin;
+ char *filename;
+ char buf[SYNBUFLEN];
+ char *starti,
+ *starto,
+ *end = NULL;
+ int slen;
+
+ if (PG_ARGISNULL(0) || PG_GETARG_POINTER(0) == NULL)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("NULL config")));
in = PG_GETARG_TEXT_P(0);
- if ( VARSIZE(in) - VARHDRSZ == 0 )
+ if (VARSIZE(in) - VARHDRSZ == 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("VOID config")));
- filename=text2char(in);
+ filename = text2char(in);
PG_FREE_IF_COPY(in, 0);
- if ( (fin=fopen(filename,"r")) == NULL )
+ if ((fin = fopen(filename, "r")) == NULL)
ereport(ERROR,
(errcode_for_file_access(),
errmsg("could not open file \"%s\": %m",
- filename)));
+ filename)));
- d = (DictSyn*)malloc( sizeof(DictSyn) );
- if ( !d ) {
+ d = (DictSyn *) malloc(sizeof(DictSyn));
+ if (!d)
+ {
fclose(fin);
ereport(ERROR,
(errcode(ERRCODE_OUT_OF_MEMORY),
errmsg("out of memory")));
}
- memset(d,0,sizeof(DictSyn));
+ memset(d, 0, sizeof(DictSyn));
- while( fgets(buf,SYNBUFLEN,fin) ) {
- slen = strlen(buf)-1;
+ while (fgets(buf, SYNBUFLEN, fin))
+ {
+ slen = strlen(buf) - 1;
buf[slen] = '\0';
- if ( *buf=='\0' ) continue;
- if (cur==d->len) {
- d->len = (d->len) ? 2*d->len : 16;
- d->syn=(Syn*)realloc( d->syn, sizeof(Syn)*d->len );
- if ( !d->syn ) {
+ if (*buf == '\0')
+ continue;
+ if (cur == d->len)
+ {
+ d->len = (d->len) ? 2 * d->len : 16;
+ d->syn = (Syn *) realloc(d->syn, sizeof(Syn) * d->len);
+ if (!d->syn)
+ {
fclose(fin);
ereport(ERROR,
(errcode(ERRCODE_OUT_OF_MEMORY),
@@ -107,64 +120,66 @@ syn_init(PG_FUNCTION_ARGS) {
}
}
- starti=findwrd(buf,&end);
- if ( !starti )
+ starti = findwrd(buf, &end);
+ if (!starti)
continue;
- *end='\0';
- if ( end >= buf+slen )
+ *end = '\0';
+ if (end >= buf + slen)
continue;
- starto= findwrd(end+1, &end);
- if ( !starto )
+ starto = findwrd(end + 1, &end);
+ if (!starto)
continue;
- *end='\0';
+ *end = '\0';
- d->syn[cur].in=strdup(lowerstr(starti));
- d->syn[cur].out=strdup(lowerstr(starto));
- if ( !(d->syn[cur].in && d->syn[cur].out) ) {
+ d->syn[cur].in = strdup(lowerstr(starti));
+ d->syn[cur].out = strdup(lowerstr(starto));
+ if (!(d->syn[cur].in && d->syn[cur].out))
+ {
fclose(fin);
ereport(ERROR,
(errcode(ERRCODE_OUT_OF_MEMORY),
errmsg("out of memory")));
}
- cur++;
+ cur++;
}
-
- fclose(fin);
-
- d->len=cur;
- if ( cur>1 )
- qsort(d->syn, d->len, sizeof(Syn), compareSyn);
+
+ fclose(fin);
+
+ d->len = cur;
+ if (cur > 1)
+ qsort(d->syn, d->len, sizeof(Syn), compareSyn);
pfree(filename);
- PG_RETURN_POINTER(d);
+ PG_RETURN_POINTER(d);
}
Datum
-syn_lexize(PG_FUNCTION_ARGS) {
- DictSyn *d = (DictSyn*)PG_GETARG_POINTER(0);
- char *in = (char*)PG_GETARG_POINTER(1);
- Syn key,*found;
- char **res=NULL;
-
- if ( !PG_GETARG_INT32(2) )
+syn_lexize(PG_FUNCTION_ARGS)
+{
+ DictSyn *d = (DictSyn *) PG_GETARG_POINTER(0);
+ char *in = (char *) PG_GETARG_POINTER(1);
+ Syn key,
+ *found;
+ char **res = NULL;
+
+ if (!PG_GETARG_INT32(2))
PG_RETURN_POINTER(NULL);
- key.out=NULL;
- key.in=lowerstr(pnstrdup(in, PG_GETARG_INT32(2)));
+ key.out = NULL;
+ key.in = lowerstr(pnstrdup(in, PG_GETARG_INT32(2)));
- found=(Syn*)bsearch(&key, d->syn, d->len, sizeof(Syn), compareSyn);
+ found = (Syn *) bsearch(&key, d->syn, d->len, sizeof(Syn), compareSyn);
pfree(key.in);
- if ( !found )
+ if (!found)
PG_RETURN_POINTER(NULL);
- res=palloc(sizeof(char*)*2);
+ res = palloc(sizeof(char *) * 2);
- res[0]=pstrdup(found->out);
- res[1]=NULL;
+ res[0] = pstrdup(found->out);
+ res[1] = NULL;
- PG_RETURN_POINTER(res);
+ PG_RETURN_POINTER(res);
}
-