diff options
Diffstat (limited to 'sysutils/gnome-system-tools/files/patch-src_common_gst-auth.c')
-rw-r--r-- | sysutils/gnome-system-tools/files/patch-src_common_gst-auth.c | 100 |
1 files changed, 96 insertions, 4 deletions
diff --git a/sysutils/gnome-system-tools/files/patch-src_common_gst-auth.c b/sysutils/gnome-system-tools/files/patch-src_common_gst-auth.c index 9272d91..f73b28a 100644 --- a/sysutils/gnome-system-tools/files/patch-src_common_gst-auth.c +++ b/sysutils/gnome-system-tools/files/patch-src_common_gst-auth.c @@ -1,13 +1,105 @@ ---- src/common/gst-auth.c.orig Thu Mar 10 14:39:18 2005 -+++ src/common/gst-auth.c Thu Mar 10 14:39:50 2005 -@@ -142,12 +142,12 @@ gst_auth_run_term (GstTool *tool, gchar +--- src/common/gst-auth.c.orig Mon Aug 8 15:00:01 2005 ++++ src/common/gst-auth.c Sat Sep 10 01:47:35 2005 +@@ -55,6 +55,82 @@ + static int root; /* if we are root, no password is + required */ + ++#ifdef __FreeBSD__ ++static int ++_forkpty (int *amaster, char *name, ++ struct termios *termp, struct winsize *winp) ++{ ++ int master, slave; ++ char *line; ++ pid_t pid; ++ ++ master = posix_openpt (O_RDWR); ++ if (master == -1) ++ return (-1); ++ ++ if (grantpt (master) == -1) ++ { ++ (void) close (master); ++ return (-1); ++ } ++ ++ if (unlockpt (master) == -1) ++ { ++ (void) close (master); ++ return (-1); ++ } ++ ++ line = ptsname (master); ++ if (line == NULL) ++ { ++ (void) close (master); ++ return (-1); ++ } ++ ++ slave = open (line, O_RDWR); ++ if (slave < 0) ++ { ++ (void) close (master); ++ return (-1); ++ } ++ ++ if (amaster) ++ *amaster = master; ++ ++ if (name) ++ strcpy (name, line); ++ ++ if (termp) ++ (void) tcsetattr(slave, TCSAFLUSH, termp); ++ ++ if (winp) ++ (void) ioctl(slave, TIOCSWINSZ, (char *) winp); ++ ++ pid = fork (); ++ switch (pid) ++ { ++ case -1: ++ (void) close (slave); ++ (void) close (master); ++ return (-1); ++ case 0: ++ (void) close (master); ++ dup2 (slave, STDIN_FILENO); ++ dup2 (slave, STDOUT_FILENO); ++ dup2 (slave, STDERR_FILENO); ++ return (0); ++ default: ++ (void) close (slave); ++ return (pid); ++ } ++ ++ (void) close (master); ++ return (-1); ++} ++#else ++#define _forkpty forkpty ++#endif ++ + static void + gst_auth_display_error_message (GstTool *tool, gchar *primary_text, gchar *secondary_text) + { +@@ -125,7 +201,7 @@ gst_auth_run_term (GstTool *tool, gchar + int p[2]; + + pipe (p); +- tool->backend_pid = forkpty (&tool->write_fd, NULL, NULL, NULL); ++ tool->backend_pid = _forkpty (&tool->write_fd, NULL, NULL, NULL); + + if (tool->backend_pid < 0) { + gst_auth_display_error_message (tool, +@@ -142,12 +218,12 @@ gst_auth_run_term (GstTool *tool, gchar unsetenv("LANG"); unsetenv("LANGUAGE"); - dup2 (p[1], 1); - dup2 (p[1], 2); + dup2 (p[1], STDOUT_FILENO); -+ /*dup2 (p[1], 2);*/ ++ dup2 (p[1], STDERR_FILENO); close (p[0]); execv (args[0], args); |