diff options
Diffstat (limited to 'mail/vpopmail/files/patch-vpgsql.c')
-rw-r--r-- | mail/vpopmail/files/patch-vpgsql.c | 90 |
1 files changed, 86 insertions, 4 deletions
diff --git a/mail/vpopmail/files/patch-vpgsql.c b/mail/vpopmail/files/patch-vpgsql.c index 7b78640d576b..4df66e130519 100644 --- a/mail/vpopmail/files/patch-vpgsql.c +++ b/mail/vpopmail/files/patch-vpgsql.c @@ -1,6 +1,6 @@ diff -urN -x .svn ../../vendor/vpopmail/vpgsql.c ./vpgsql.c ---- ../../vendor/vpopmail/vpgsql.c Fri Jan 26 15:59:16 2007 -+++ ./vpgsql.c Fri Jan 26 17:01:33 2007 +--- ../../vendor/vpopmail/vpgsql.c 2007-10-07 23:44:14.000000000 +0300 ++++ vpgsql.c 2007-12-25 03:47:54.000000000 +0200 @@ -390,13 +390,15 @@ #endif @@ -19,7 +19,7 @@ diff -urN -x .svn ../../vendor/vpopmail/vpgsql.c ./vpgsql.c return(0); } -@@ -443,13 +445,15 @@ +@@ -443,14 +445,16 @@ #endif #ifdef ENABLE_SQL_LOGGING @@ -33,7 +33,89 @@ diff -urN -x .svn ../../vendor/vpopmail/vpgsql.c ./vpgsql.c + if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK) { err = -1; } -+#endif #endif ++#endif return(err); + } +@@ -1553,6 +1557,80 @@ + return valias_current->data; + } + } ++ ++/************************************************************************ ++ * ++ * valias_select_names ++ */ ++ ++char *valias_select_names( char *domain ) ++{ ++ PGresult *pgres; ++ int err; ++ unsigned ntuples, ctuple; ++ struct linklist *temp_entry = NULL; ++ ++ ++ /* remove old entries as necessary */ ++ while (valias_current != NULL) ++ valias_current = linklist_del (valias_current); ++ ++ if ( (err=vauth_open(0)) != 0 ) return(NULL); ++ ++ qnprintf( SqlBufRead, SQL_BUF_SIZE, ++ "select distinct alias from valias where domain = '%s' order by alias", domain ); ++ ++ if ( ! (pgres=PQexec(pgc, SqlBufRead)) ++ || PQresultStatus(pgres) != PGRES_TUPLES_OK ) { ++ if(pgres) PQclear(pgres); ++ vcreate_valias_table(); ++ if ( ! (pgres=PQexec(pgc, SqlBufRead)) ++ || PQresultStatus(pgres) != PGRES_TUPLES_OK ) { ++ fprintf(stderr,"vpgsql: sql error[o]: %s\n", ++ PQerrorMessage(pgc)); ++ if (pgres) PQclear (pgres); ++ return(NULL); ++ } ++ } ++ ++ ntuples = PQntuples (pgres); ++ for (ctuple = 0; ctuple < ntuples; ctuple++) { ++ temp_entry = linklist_add (temp_entry, PQgetvalue (pgres, ctuple, 0), ""); ++ if (valias_current == NULL) valias_current = temp_entry; ++ } ++ PQclear (pgres); ++ pgres = NULL; ++ ++ if (valias_current == NULL) return NULL; /* no results */ ++ else return(valias_current->data); ++} ++ ++/************************************************************************ ++ * ++ * valias_select_names_next ++ */ ++ ++char *valias_select_names_next() ++{ ++ if (valias_current == NULL) return NULL; ++ valias_current = linklist_del (valias_current); ++ ++ if (valias_current == NULL) return NULL; /* no results */ ++ else return(valias_current->data); ++} ++ ++ ++/************************************************************************ ++ * ++ * valias_select_names_end ++ */ ++ ++void valias_select_names_end() { ++ ++// not needed by pgsql ++ ++} ++ + #endif + + #ifdef ENABLE_SQL_LOGGING |