aboutsummaryrefslogtreecommitdiff
path: root/mail/vpopmail/files/patch-vpgsql.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/vpopmail/files/patch-vpgsql.c')
-rw-r--r--mail/vpopmail/files/patch-vpgsql.c90
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