32const char *
logmsg(
const char *
dir,
unsigned long num,
unsigned long listno,
unsigned long subs,
int done)
34 const char *table = (
char *) 0;
46 if (!stralloc_copys(&logline,
"INSERT INTO "))
return ERR_NOMEM;
47 if (!stralloc_cats(&logline,table))
return ERR_NOMEM;
48 if (!stralloc_cats(&logline,
"_mlog (msgnum,listno,subs,done) VALUES ("))
return ERR_NOMEM;
49 if (!stralloc_catb(&logline,strnum,fmt_ulong(strnum,
num)))
return ERR_NOMEM;
50 if (!stralloc_cats(&logline,
","))
return ERR_NOMEM;
51 if (!stralloc_catb(&logline,strnum,fmt_ulong(strnum,
listno)))
return ERR_NOMEM;
52 if (!stralloc_cats(&logline,
","))
return ERR_NOMEM;
53 if (!stralloc_catb(&logline,strnum,fmt_ulong(strnum,subs)))
return ERR_NOMEM;
54 if (!stralloc_cats(&logline,
","))
return ERR_NOMEM;
58 if (!stralloc_append(&logline,
"-"))
return ERR_NOMEM;
60 if (!stralloc_catb(&logline,strnum,fmt_uint(strnum,done)))
return ERR_NOMEM;
61 if (!stralloc_append(&logline,
")"))
return ERR_NOMEM;
63 if (!stralloc_0(&logline))
return ERR_NOMEM;
64 result = PQexec(
pgsql,logline.s);
66 return (PQerrorMessage(
pgsql));
67 if (PQresultStatus(result) != PGRES_COMMAND_OK) {
68 if (!stralloc_copys(&logline,
"SELECT msgnum FROM "))
return ERR_NOMEM;
69 if (!stralloc_cats(&logline,table))
return ERR_NOMEM;
70 if (!stralloc_cats(&logline,
"_mlog WHERE msgnum = "))
return ERR_NOMEM;
71 if (!stralloc_catb(&logline,strnum,fmt_ulong(strnum,
num)))
return ERR_NOMEM;
72 if (!stralloc_cats(&logline,
" AND listno = "))
return ERR_NOMEM;
73 if (!stralloc_catb(&logline,strnum,fmt_ulong(strnum,
listno)))
return ERR_NOMEM;
74 if (!stralloc_cats(&logline,
" AND done = "))
return ERR_NOMEM;
75 if (!stralloc_catb(&logline,strnum,fmt_ulong(strnum,done)))
return ERR_NOMEM;
76 if (!stralloc_0(&logline))
return ERR_NOMEM;
80 result2 = PQexec(
pgsql,logline.s);
82 return (PQerrorMessage(
pgsql));
83 if (PQresultStatus(result2) != PGRES_TUPLES_OK)
84 return (
char *) (PQresultErrorMessage(result2));
88 if (PQntuples(result2)<1)
89 return (
char *) (PQresultErrorMessage(result));
const char * logmsg(const char *dir, unsigned long num, unsigned long listno, unsigned long subs, int done)