os2 patches, popen and spawnlp
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
Mon May 17 14:25:11 1999 ape@lrdpf.spacetec.no (Asbjorn Pettersen)
|
||||||
|
|
||||||
|
* plug-ins/mail/mail.c (save_image): Add OS/2 patches. popen(),spawnl,,
|
||||||
|
|
||||||
1999-05-17 Jay Cox <jaycox@earthlink.net>
|
1999-05-17 Jay Cox <jaycox@earthlink.net>
|
||||||
|
|
||||||
* app/xcf.c: fixed bogus computation of the maximum size
|
* app/xcf.c: fixed bogus computation of the maximum size
|
||||||
|
|||||||
@ -104,12 +104,17 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <sys/types.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#ifdef __EMX__
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <process.h>
|
||||||
|
#endif
|
||||||
#include "gtk/gtk.h"
|
#include "gtk/gtk.h"
|
||||||
#include "libgimp/gimp.h"
|
#include "libgimp/gimp.h"
|
||||||
|
|
||||||
@ -320,7 +325,11 @@ save_image (char *filename,
|
|||||||
strcat (mailcmdline, mail_info.receipt);
|
strcat (mailcmdline, mail_info.receipt);
|
||||||
|
|
||||||
/* create a pipe to sendmail */
|
/* create a pipe to sendmail */
|
||||||
|
#ifndef __EMX__
|
||||||
mailpipe = popen (mailcmdline, "w");
|
mailpipe = popen (mailcmdline, "w");
|
||||||
|
#else
|
||||||
|
mailpipe = popen (mailcmdline, "wb");
|
||||||
|
#endif
|
||||||
create_headers (mailpipe);
|
create_headers (mailpipe);
|
||||||
|
|
||||||
/* This is necessary to make the comments and headers work correctly. Not real sure why */
|
/* This is necessary to make the comments and headers work correctly. Not real sure why */
|
||||||
@ -347,6 +356,7 @@ save_image (char *filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( mail_info.encapsulation == ENCAPSULATION_UUENCODE ) {
|
if( mail_info.encapsulation == ENCAPSULATION_UUENCODE ) {
|
||||||
|
#ifndef __EMX__
|
||||||
/* fork off a uuencode process */
|
/* fork off a uuencode process */
|
||||||
if ((pid = fork ()) < 0)
|
if ((pid = fork ()) < 0)
|
||||||
{
|
{
|
||||||
@ -370,6 +380,27 @@ save_image (char *filename,
|
|||||||
_exit (127);
|
_exit (127);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
#else /* __EMX__ */
|
||||||
|
int tfd;
|
||||||
|
/* save fileno(stdout) */
|
||||||
|
tfd = dup (fileno (stdout));
|
||||||
|
if (dup2 (fileno (mailpipe), fileno (stdout)) == -1)
|
||||||
|
{
|
||||||
|
g_message ("mail: dup2 failed: %s\n", g_strerror (errno));
|
||||||
|
close(tfd);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
fcntl(tfd, F_SETFD, FD_CLOEXEC);
|
||||||
|
pid = spawnlp (P_NOWAIT, UUENCODE, UUENCODE, tmpname, filename, NULL);
|
||||||
|
/* restore fileno(stdout) */
|
||||||
|
dup2 (tfd, fileno (stdout));
|
||||||
|
close(tfd);
|
||||||
|
if (pid == -1)
|
||||||
|
{
|
||||||
|
g_message ("mail: spawn failed: %s\n", g_strerror (errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
waitpid (pid, &status, 0);
|
waitpid (pid, &status, 0);
|
||||||
|
|
||||||
|
|||||||
@ -104,12 +104,17 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <sys/types.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#ifdef __EMX__
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <process.h>
|
||||||
|
#endif
|
||||||
#include "gtk/gtk.h"
|
#include "gtk/gtk.h"
|
||||||
#include "libgimp/gimp.h"
|
#include "libgimp/gimp.h"
|
||||||
|
|
||||||
@ -320,7 +325,11 @@ save_image (char *filename,
|
|||||||
strcat (mailcmdline, mail_info.receipt);
|
strcat (mailcmdline, mail_info.receipt);
|
||||||
|
|
||||||
/* create a pipe to sendmail */
|
/* create a pipe to sendmail */
|
||||||
|
#ifndef __EMX__
|
||||||
mailpipe = popen (mailcmdline, "w");
|
mailpipe = popen (mailcmdline, "w");
|
||||||
|
#else
|
||||||
|
mailpipe = popen (mailcmdline, "wb");
|
||||||
|
#endif
|
||||||
create_headers (mailpipe);
|
create_headers (mailpipe);
|
||||||
|
|
||||||
/* This is necessary to make the comments and headers work correctly. Not real sure why */
|
/* This is necessary to make the comments and headers work correctly. Not real sure why */
|
||||||
@ -347,6 +356,7 @@ save_image (char *filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( mail_info.encapsulation == ENCAPSULATION_UUENCODE ) {
|
if( mail_info.encapsulation == ENCAPSULATION_UUENCODE ) {
|
||||||
|
#ifndef __EMX__
|
||||||
/* fork off a uuencode process */
|
/* fork off a uuencode process */
|
||||||
if ((pid = fork ()) < 0)
|
if ((pid = fork ()) < 0)
|
||||||
{
|
{
|
||||||
@ -370,6 +380,27 @@ save_image (char *filename,
|
|||||||
_exit (127);
|
_exit (127);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
#else /* __EMX__ */
|
||||||
|
int tfd;
|
||||||
|
/* save fileno(stdout) */
|
||||||
|
tfd = dup (fileno (stdout));
|
||||||
|
if (dup2 (fileno (mailpipe), fileno (stdout)) == -1)
|
||||||
|
{
|
||||||
|
g_message ("mail: dup2 failed: %s\n", g_strerror (errno));
|
||||||
|
close(tfd);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
fcntl(tfd, F_SETFD, FD_CLOEXEC);
|
||||||
|
pid = spawnlp (P_NOWAIT, UUENCODE, UUENCODE, tmpname, filename, NULL);
|
||||||
|
/* restore fileno(stdout) */
|
||||||
|
dup2 (tfd, fileno (stdout));
|
||||||
|
close(tfd);
|
||||||
|
if (pid == -1)
|
||||||
|
{
|
||||||
|
g_message ("mail: spawn failed: %s\n", g_strerror (errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
waitpid (pid, &status, 0);
|
waitpid (pid, &status, 0);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user