#include <h/tws.h>
#include <h/utils.h>
-#ifdef TIME_WITH_SYS_TIME
+#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef TM_IN_SYS_TIME
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
#endif
+#include <time.h>
int debugsw = 0; /* global */
int forwsw = 1;
int msgp = 0, nfiles = 0, distsw = 0, vecp = 1;
int msgnum, status;
int in, out;
+ int n;
char *cp, *maildir = NULL;
char buf[BUFSIZ], **ap, **argp, **arguments;
char *msgs[MAXARGS], *vec[MAXARGS];
st.st_ino = 0;
}
if (pushsw) {
- push();
+ /* push a fork into the background */
+ pid_t pid;
+
+ switch (pid = fork()) {
+ case -1:
+ /* fork error */
+ advise(NULL, "unable to fork, so can't push...");
+ break;
+
+ default:
+ /* parent, just exit */
+ done(0);
+
+ case 0:
+ /* child, block a few signals and continue */
+ SIGNAL(SIGHUP, SIG_IGN);
+ SIGNAL(SIGINT, SIG_IGN);
+ SIGNAL(SIGQUIT, SIG_IGN);
+ SIGNAL(SIGTERM, SIG_IGN);
+#ifdef SIGTSTP
+ SIGNAL(SIGTSTP, SIG_IGN);
+ SIGNAL(SIGTTIN, SIG_IGN);
+ SIGNAL(SIGTTOU, SIG_IGN);
+#endif
+ freopen("/dev/null", "r", stdin);
+ freopen("/dev/null", "w", stdout);
+ break;
+ }
}
status = 0;
vec[0] = "spost";
- closefds(3);
+ for (n=3; n<OPEN_MAX; n++) {
+ close(n);
+ }
for (msgnum = 0; msgnum < nfiles; msgnum++) {
switch (sendsbr(vec, vecp, files[msgnum], &st, 1)) {
adios(NULL, "unable to access file `%s'", file_name);
}
- fprintf(composition_file, "#%s; name=\"%s\" <>{attachment}",
- content_type,
- (!(cp = strrchr(file_name, '/'))) ? file_name : cp + 1);
+ cp = (!(cp = strrchr(file_name, '/'))) ? file_name : cp + 1;
+ fprintf(composition_file, "#%s; name=\"%s\" <> [%s] {attachment}",
+ content_type, cp, cp);
fprintf(composition_file, " %s\n", file_name);