e18151212d
and new features. Don't believe me? Then see for yourself at http://www.gnome.org/start/2.12/notes/en/. DO NOT USE portupgrade by itself to upgrade to GNOME 2.12. Instead, use the gnome_upgrade.sh script from http://www.marcuscom.com/downloads/gnome_upgrade212.sh. This script will circumvent some potential pitfalls users can see if they use portupgrade by itself. In keeping with tradition, GNOME 2.12 for FreeBSD comes with a special splash screen. The winner of this release's contest is Dominique Goncalves <dominique.goncalves@gmail.com>. His splash screen was inspired by http://art.gnome.org/contests/2.12-splash/83. The FreeBSD GNOME Team would lank to thank the following users for their contributions to this release: Matthew Luckie <mjl@luckie.org.nz> ade sajd on #freebsd-gnome Caelian on #freebsd-gnome mnag Yasuda Keisuke <kysd@po.harenet.ne.jp> Mark Hobden <markhobden@gmail.com> Sergey Akifyev <asa@agava.com> Andreas Kohn For more information on GNOME on FreeBSD, checkout http://www.FreeBSD.org/gnome/. The 2.12 documentation will be posted shortly.
110 lines
2.2 KiB
C
110 lines
2.2 KiB
C
--- 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], STDERR_FILENO);
|
|
close (p[0]);
|
|
|
|
execv (args[0], args);
|
|
- exit (255);
|
|
+ _exit (255);
|
|
} else {
|
|
#ifndef __FreeBSD__
|
|
/* Linux's su works ok with echo disabling */
|