diff options
Diffstat (limited to 'x11/mate-terminal/files')
-rw-r--r-- | x11/mate-terminal/files/patch-configure.ac | 13 | ||||
-rw-r--r-- | x11/mate-terminal/files/patch-src_terminal-screen.c | 98 | ||||
-rw-r--r-- | x11/mate-terminal/files/patch-src_terminal.c | 11 |
3 files changed, 122 insertions, 0 deletions
diff --git a/x11/mate-terminal/files/patch-configure.ac b/x11/mate-terminal/files/patch-configure.ac new file mode 100644 index 000000000000..131e4c85b69d --- /dev/null +++ b/x11/mate-terminal/files/patch-configure.ac @@ -0,0 +1,13 @@ +--- configure.ac.orig 2009-05-03 15:25:26.000000000 -0400 ++++ configure.ac 2009-05-03 15:26:34.000000000 -0400 +@@ -96,6 +96,10 @@ AC_SUBST([GLIB_GENMARSHAL]) + GLIB_MKENUMS="$($PKG_CONFIG --variable=glib_mkenums glib-2.0)" + AC_SUBST([GLIB_MKENUMS]) + ++AC_CHECK_LIB(util, kinfo_getfile, ++ [LIBS="${LIBS} -lutil" ++ AC_DEFINE(HAVE_KINFO_GETFILE, 1, [Define if you have the kinfo_getfile function])], [:]) ++ + AC_PATH_PROG([GTK_BUILDER_CONVERT],[gtk-builder-convert],[false]) + if test "$GTK_BUILDER_CONVERT" = "false"; then + AC_MSG_ERROR([gtk-builder-convert not found]) diff --git a/x11/mate-terminal/files/patch-src_terminal-screen.c b/x11/mate-terminal/files/patch-src_terminal-screen.c new file mode 100644 index 000000000000..7a078c72fe06 --- /dev/null +++ b/x11/mate-terminal/files/patch-src_terminal-screen.c @@ -0,0 +1,98 @@ +--- src/terminal-screen.c.orig 2012-07-27 16:58:59.000000000 -0500 ++++ src/terminal-screen.c 2012-07-27 17:03:08.000000000 -0500 +@@ -18,6 +18,15 @@ + + #include <config.h> + ++#ifdef __FreeBSD__ ++#include <sys/types.h> ++#include <sys/sysctl.h> ++#include <sys/param.h> ++#include <sys/user.h> ++#ifdef HAVE_KINFO_GETFILE ++#include <libutil.h> ++#endif ++#endif + #include <string.h> + #include <stdlib.h> + #include <unistd.h> +@@ -190,16 +199,29 @@ + static char * + cwd_of_pid (int pid) + { ++#ifndef __FreeBSD__ + static const char patterns[][18] = + { + "/proc/%d/cwd", /* Linux */ + "/proc/%d/path/cwd", /* Solaris >= 10 */ + }; ++#else ++#if __FreeBSD_version > 800018 || (__FreeBSD_version < 800000 && __FreeBSD_version >= 700104) ++ struct kinfo_file *freep, *kif; ++#ifndef HAVE_KINFO_GETFILE ++ size_t len; ++ int name[4]; ++#else ++ int cnt; ++#endif /* HAVE_KINFO_GETFILE */ ++#endif /* __FreeBSD_version > 800018 || (__FreeBSD_version < 800000 && __FreeBSD_version >= 700104) */ ++#endif /* __FreeBSD__ */ + guint i; + + if (pid == -1) + return NULL; + ++#ifndef __FreeBSD__ + /* Try to get the working directory using various OS-specific mechanisms */ + for (i = 0; i < G_N_ELEMENTS (patterns); ++i) + { +@@ -237,6 +259,49 @@ + return working_dir; + } + } ++#else ++ int fgpid = pid; ++#if __FreeBSD_version > 800018 || (__FreeBSD_version < 800000 && __FreeBSD_version >= 700104) ++#ifndef HAVE_KINFO_GETFILE ++ name[0] = CTL_KERN; ++ name[1] = KERN_PROC; ++ name[2] = KERN_PROC_FILEDESC; ++ name[3] = fgpid; ++ ++ if (sysctl (name, 4, NULL, &len, NULL, 0) < 0) ++ return NULL; ++ freep = kif = g_malloc (len); ++ if (sysctl (name, 4, kif, &len, NULL, 0) < 0) ++ { ++ g_free (freep); ++ return NULL; ++ } ++#else ++ freep = kinfo_getfile (fgpid, &cnt); ++#endif /* HAVE_KINFO_GETFILE */ ++ ++#ifndef HAVE_KINFO_GETFILE ++ for (i = 0; i < len / sizeof (*kif); i++, kif++) ++ { ++ if (kif->kf_structsize != sizeof (*kif)) ++ continue; ++#else ++ for (i = 0; i < cnt; i++) ++ { ++ kif = &freep[i]; ++#endif /* HAVE_KINFO_GETFILE */ ++ if (kif->kf_fd == KF_FD_TYPE_CWD) ++ { ++ char *working_dir; ++ ++ working_dir = g_strdup (kif->kf_path); ++ g_free (freep); ++ return working_dir; ++ } ++ } ++ g_free (freep); ++#endif /* __FreeBSD_version > 800018 || (__FreeBSD_version < 800000 && __FreeBSD_version >= 700104) */ ++#endif /* __FreeBSD__ */ + + return NULL; + } diff --git a/x11/mate-terminal/files/patch-src_terminal.c b/x11/mate-terminal/files/patch-src_terminal.c new file mode 100644 index 000000000000..ee7241e30ca0 --- /dev/null +++ b/x11/mate-terminal/files/patch-src_terminal.c @@ -0,0 +1,11 @@ +--- src/terminal.c.orig 2012-07-27 16:57:04.000000000 -0500 ++++ src/terminal.c 2012-07-27 16:57:20.000000000 -0500 +@@ -598,7 +598,7 @@ + data = g_new (OwnData, 1); + data->factory_name = get_factory_name_for_display (display_name); + data->options = options; +- data->exit_code = -1; ++ data->exit_code = EXIT_SUCCESS; + data->argv = argv_copy; + data->argc = argc_copy; + |