66 unsigned char *cpsearch;
69 unsigned char *cplast, *cpline;
70 unsigned int searchlen;
79 const char *table = (
char *) 0;
81 if (!search) search = (
char *)
"";
82 searchlen = str_len(search);
83 case_lowerb(search,searchlen);
84 cps = (
unsigned char *) search;
86 while ((ch = *(cps++))) {
87 if (ch >=
'a' && ch <=
'z')
continue;
88 if (ch >=
'0' && ch <=
'9')
continue;
89 if (ch ==
'.' || ch ==
'_')
continue;
99 if (!stralloc_cats(&line,
"/Log"))
die_nomem();
101 fd = open_read(line.s);
104 logmsg(
WHO,111,FATAL,B(
"ERR_OPEN :",line.s));
106 logmsg(
WHO,100,FATAL,B(line.s,
" ERR_NOEXIST"));
111 if (getln(&
bi,&line,&
match,
'\n') == -1)
117 cpline = (
unsigned char *) line.s - 1;
118 cplast = cpline + line.len - searchlen;
119 while ((
cp = ++cpline) <= cplast) {
120 cpsearch = (
unsigned char *) search;
125 if (y <= (
unsigned char) (
'Z' -
'A')) y +=
'a';
else y +=
'A';
126 if (x != y && x !=
'_')
break;
144 if (!stralloc_cats(&line,
"SELECT tai::datetime||': '||tai::int8||' '"
145 "||address||' '||edir||etype||' '||fromline FROM "))
die_nomem();
147 if (!stralloc_cats(&line,table))
die_nomem();
148 if (!stralloc_cats(&line,
"_slog "))
die_nomem();
151 if (!stralloc_cats(&line,
"WHERE fromline LIKE '%"))
die_nomem();
152 if (!stralloc_cats(&line,search))
die_nomem();
153 if (!stralloc_cats(&line,
"%' OR address LIKE '%"))
die_nomem();
154 if (!stralloc_cats(&line,search))
die_nomem();
155 if (!stralloc_cats(&line,
"%'"))
die_nomem();
157 if (!stralloc_cats(&line,
" ORDER by tai"))
die_nomem();
160 result = PQexec(
pgsql,line.s);
164 if (PQresultStatus(result) != PGRES_TUPLES_OK)
165 logmsg(
WHO,111,FATAL,PQresultErrorMessage(result));
167 for (row_nr = 0; row_nr < PQntuples(result); row_nr++) {
168 row = PQgetvalue(result,row_nr,0);
169 length = PQgetlength(result,row_nr,0);
const char * logmsg(const char *dir, unsigned long num, unsigned long listno, unsigned long subs, int done)