/*$Id: logmsg.c,v 1.10 1999/11/10 04:08:27 lindberg Exp $*/ /*$Name: ezmlm-idx-040 $*/ #include "stralloc.h" #include "fmt.h" #include "subscribe.h" #include "errtxt.h" #include #include static stralloc logline = {0}; static char strnum[FMT_ULONG]; char *logmsg(dir,num,listno,subs,done) /* creates an entry for message num and the list listno and code "done". */ /* Returns NULL on success, "" if dir/sql was not found, and the error */ /* string on error. NOTE: This routine does nothing for non-sql lists! */ char *dir; unsigned long num; unsigned long listno; unsigned long subs; int done; { char *table = (char *) 0; char *ret; if ((ret = opensql(dir,&table))) { if (*ret) return ret; else return (char *) 0; /* no SQL => success */ } if (!stralloc_copys(&logline,"INSERT INTO ")) return ERR_NOMEM; if (!stralloc_cats(&logline,table)) return ERR_NOMEM; if (!stralloc_cats(&logline,"_mlog (msgnum,listno,subs,done) VALUES (")) return ERR_NOMEM; if (!stralloc_catb(&logline,strnum,fmt_ulong(strnum,num))) return ERR_NOMEM; if (!stralloc_cats(&logline,",")) return ERR_NOMEM; if (!stralloc_catb(&logline,strnum,fmt_ulong(strnum,listno))) return ERR_NOMEM; if (!stralloc_cats(&logline,",")) return ERR_NOMEM; if (!stralloc_catb(&logline,strnum,fmt_ulong(strnum,subs))) return ERR_NOMEM; if (!stralloc_cats(&logline,",")) return ERR_NOMEM; if (done < 0) { done = - done; if (!stralloc_append(&logline,"-")) return ERR_NOMEM; } if (!stralloc_catb(&logline,strnum,fmt_uint(strnum,done))) return ERR_NOMEM; if (!stralloc_append(&logline,")")) return ERR_NOMEM; if (mysql_real_query((MYSQL *) psql,logline.s,logline.len)) /* log query */ if (mysql_errno((MYSQL *) psql) != ER_DUP_ENTRY) /* ignore dups */ return mysql_error((MYSQL *) psql); return (char *) 0; }