PostgreSQL Source Code: src/backend/tsearch/ts_utils.c Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

16

17#include <ctype.h>

18

19#include "catalog/pg_collation_d.h"

23

24

25

26

27

28

29

30

31

32

33char *

35 const char *extension)

36{

38 char *result;

39

40

41

42

43

44

45

46

47

48

49 if (strspn(basename, "abcdefghijklmnopqrstuvwxyz0123456789_") != strlen(basename))

51 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),

52 errmsg("invalid text search configuration file name \"%s\"",

53 basename)));

54

58 sharepath, basename, extension);

59

60 return result;

61}

62

63

64

65

66

67

68void

70{

71 char **stop = NULL;

72

73 s->len = 0;

74 if (fname && *fname)

75 {

78 char *line;

79 int reallen = 0;

80

83 (errcode(ERRCODE_CONFIG_FILE_ERROR),

84 errmsg("could not open stop-word file \"%s\": %m",

86

88 {

89 char *pbuf = line;

90

91

92 while (*pbuf && !isspace((unsigned char) *pbuf))

94 *pbuf = '\0';

95

96

97 if (*line == '\0')

98 {

100 continue;

101 }

102

103 if (s->len >= reallen)

104 {

105 if (reallen == 0)

106 {

107 reallen = 64;

108 stop = (char **) palloc(sizeof(char *) * reallen);

109 }

110 else

111 {

112 reallen *= 2;

113 stop = (char **) repalloc(stop, sizeof(char *) * reallen);

114 }

115 }

116

117 if (wordop)

118 {

119 stop[s->len] = wordop(line, strlen(line), DEFAULT_COLLATION_OID);

120 if (stop[s->len] != line)

122 }

123 else

124 stop[s->len] = line;

125

126 (s->len)++;

127 }

128

131 }

132

133 s->stop = stop;

134

135

136 if (s->stop && s->len > 0)

138}

139

140bool

142{

143 return (s->stop && s->len > 0 &&

146}

int errcode(int sqlerrcode)

int errmsg(const char *fmt,...)

#define ereport(elevel,...)

char my_exec_path[MAXPGPATH]

int pg_mblen(const char *mbstr)

void * repalloc(void *pointer, Size size)

void pfree(void *pointer)

void get_share_path(const char *my_exec_path, char *ret_path)

int pg_qsort_strcmp(const void *a, const void *b)

#define qsort(a, b, c, d)

bool tsearch_readline_begin(tsearch_readline_state *stp, const char *filename)

char * tsearch_readline(tsearch_readline_state *stp)

void tsearch_readline_end(tsearch_readline_state *stp)

void readstoplist(const char *fname, StopList *s, char *(*wordop)(const char *, size_t, Oid))

bool searchstoplist(StopList *s, char *key)

char * get_tsearch_config_filename(const char *basename, const char *extension)