ph10 2006/02/14 10:26:27 GMT
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src child.c local_scan.h
Log:
Add enabling function child_open_exim2() with extra arguments.
Revision Changes Path
1.296 +5 -0 exim/exim-doc/doc-txt/ChangeLog
1.9 +27 -4 exim/exim-src/src/child.c
1.7 +1 -0 exim/exim-src/src/local_scan.h
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.295
retrieving revision 1.296
diff -u -r1.295 -r1.296
--- ChangeLog 13 Feb 2006 16:23:57 -0000 1.295
+++ ChangeLog 14 Feb 2006 10:26:26 -0000 1.296
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.295 2006/02/13 16:23:57 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.296 2006/02/14 10:26:26 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -148,6 +148,11 @@
that did not have a forward lookup, an error message of the form "no IP
address found for host xxx.xxx.xxx (during SMTP connection from NULL)"
could be logged. Now it outputs the IP address instead of "NULL".
+
+PH/28 An enabling patch from MH: add new function child_open_exim2() which
+ allows the sender and the authenticated sender to be set when
+ submitting a message from within Exim. Since child_open_exim() is
+ documented for local_scan(), the new function should be too.
Exim version 4.60
Index: child.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/child.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- child.c 7 Feb 2006 14:05:17 -0000 1.8
+++ child.c 14 Feb 2006 10:26:27 -0000 1.9
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/child.c,v 1.8 2006/02/07 14:05:17 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/child.c,v 1.9 2006/02/14 10:26:27 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -174,6 +174,11 @@
the pid of the new process, or -1 if things go wrong. If debug_fd is
non-negative, it is passed as stderr.
+This interface is now a just wrapper for the more complicated function
+child_open_exim2(), which has additional arguments. The wrapper must continue
+to exist, even if all calls from within Exim are changed, because it is
+documented for use from local_scan().
+
Argument: fdptr pointer to int for the stdin fd
Returns: pid of the created process or -1 if anything has gone wrong
*/
@@ -181,6 +186,24 @@
pid_t
child_open_exim(int *fdptr)
{
+return child_open_exim2(fdptr, US"<>", bounce_sender_authentication);
+}
+
+
+/* This is a more complicated function for creating a child Exim process, with
+more arguments.
+
+Arguments:
+ fdptr pointer to int for the stdin fd
+ sender for a sender address (data for -f)
+ sender_authentication authenticated sender address or NULL
+
+Returns: pid of the created process or -1 if anything has gone wrong
+*/
+
+pid_t
+child_open_exim2(int *fdptr, uschar *sender, uschar *sender_authentication)
+{
int pfd[2];
int save_errno;
pid_t pid;
@@ -203,13 +226,13 @@
force_fd(pfd[pipe_read], 0);
(void)close(pfd[pipe_write]);
if (debug_fd > 0) force_fd(debug_fd, 2);
- if (bounce_sender_authentication != NULL)
+ if (sender_authentication != NULL)
child_exec_exim(CEE_EXEC_EXIT, FALSE, NULL, FALSE, 8,
- US"-t", US"-oem", US"-oi", US"-f", US"<>", US"-oMas",
- bounce_sender_authentication, message_id_option);
+ US"-t", US"-oem", US"-oi", US"-f", sender, US"-oMas",
+ sender_authentication, message_id_option);
else
child_exec_exim(CEE_EXEC_EXIT, FALSE, NULL, FALSE, 6,
- US"-t", US"-oem", US"-oi", US"-f", US"<>", message_id_option);
+ US"-t", US"-oem", US"-oi", US"-f", sender, message_id_option);
/* Control does not return here. */
}
Index: local_scan.h
===================================================================
RCS file: /home/cvs/exim/exim-src/src/local_scan.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- local_scan.h 7 Feb 2006 11:19:00 -0000 1.6
+++ local_scan.h 14 Feb 2006 10:26:27 -0000 1.7
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/local_scan.h,v 1.6 2006/02/07 11:19:00 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/local_scan.h,v 1.7 2006/02/14 10:26:27 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -162,6 +162,7 @@
extern int child_close(pid_t, int);
extern pid_t child_open(uschar **, uschar **, int, int *, int *, BOOL);
extern pid_t child_open_exim(int *);
+extern pid_t child_open_exim2(int *, uschar *, uschar *);
extern void debug_printf(char *, ...) PRINTF_FUNCTION;
extern uschar *expand_string(uschar *);
extern void header_add(int, char *, ...);