mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-04 17:59:37 +00:00
os2 patches, popen and spawnlp
This commit is contained in:
parent
5fa5aa706f
commit
a0dba18433
3 changed files with 66 additions and 0 deletions
|
@ -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);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue