patches/nautilus-09-trusted-extensions.diff
author rohinis
Tue, 29 Nov 2011 17:32:55 +0000
branchs11express-2010-11
changeset 22234 c23e64da3e06
parent 17505 ed8b5d260e6a
child 22009 848b8d27a814
permissions -rw-r--r--
2011-11-29 Rohini S <[email protected]> * patches/Python26-22-audio.diff: Fixes CVE-2010-1634 * specs/SUNWPython26.spec: Fixes CR 7085446
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
     1
diff -urN -x '*.orig' -x '*.rej' naut.orig/libnautilus-private/Makefile.am naut.new/libnautilus-private/Makefile.am
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
     2
--- naut.orig/libnautilus-private/Makefile.am	2009-03-25 15:48:56.404881573 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
     3
+++ naut.new/libnautilus-private/Makefile.am	2009-03-25 15:50:31.163076538 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
     4
@@ -174,6 +174,8 @@
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
     5
 	nautilus-trash-monitor.h \
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
     6
 	nautilus-tree-view-drag-dest.c \
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
     7
 	nautilus-tree-view-drag-dest.h \
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
     8
+	nautilus-tsol-extensions.c \
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
     9
+	nautilus-tsol-extensions.h \
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    10
 	nautilus-ui-utilities.c \
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    11
 	nautilus-ui-utilities.h \
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    12
 	nautilus-undo-manager.c \
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    13
diff -urN -x '*.orig' -x '*.rej' naut.orig/libnautilus-private/nautilus-module.c naut.new/libnautilus-private/nautilus-module.c
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    14
--- naut.orig/libnautilus-private/nautilus-module.c	2009-03-25 15:48:56.426647854 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    15
+++ naut.new/libnautilus-private/nautilus-module.c	2009-03-31 11:05:33.382333482 +0100
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    16
@@ -23,6 +23,7 @@
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    17
 
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    18
 #include <config.h>
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    19
 #include "nautilus-module.h"
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    20
+#include "nautilus-tsol-extensions.h"
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    21
 
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    22
 #include <eel/eel-gtk-macros.h>
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    23
 #include <eel/eel-debug.h>
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    24
@@ -191,6 +192,15 @@
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    25
 		const char *name;
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    26
 		
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    27
 		while ((name = g_dir_read_name (dir))) {
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    28
+			/* Brasero extension does not currently work with 
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    29
+			   labeled zones (no dbus system bus)*/
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    30
+			if (nautilus_tsol_multi_label_session () &&
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    31
+			    getzoneid () != 0) {
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    32
+				if (g_str_has_prefix (name, 
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    33
+						      "libnautilus-brasero")) {
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    34
+					continue;
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    35
+				}
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    36
+			}
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    37
 			if (g_str_has_suffix (name, "." G_MODULE_SUFFIX)) {
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    38
 				char *filename;
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    39
 
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    40
diff -urN -x '*.orig' -x '*.rej' naut.orig/libnautilus-private/nautilus-tsol-extensions.c naut.new/libnautilus-private/nautilus-tsol-extensions.c
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    41
--- naut.orig/libnautilus-private/nautilus-tsol-extensions.c	1970-01-01 01:00:00.000000000 +0100
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
    42
+++ naut.new/libnautilus-private/nautilus-tsol-extensions.c	2009-03-25 15:50:31.163916608 +0000
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    43
@@ -0,0 +1,303 @@
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    44
+/*
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    45
+ * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    46
+ * Use is subject to license terms.
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    47
+ */
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    48
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    49
+#include <config.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    50
+#include <X11/Xatom.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    51
+#include <gdk/gdkx.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    52
+#include <gtk/gtk.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    53
+#include <strings.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    54
+#include <zone.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    55
+#include <sys/types.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    56
+#include <unistd.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    57
+#include <tsol/label.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    58
+#include <stdlib.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    59
+#include <dlfcn.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    60
+#include <link.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    61
+#include <libgnomevfs/gnome-vfs-utils.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    62
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    63
+#include "nautilus-tsol-extensions.h"
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    64
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    65
+typedef int (*tsol_getlabel) (const char*, m_label_t*);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    66
+typedef int (*tsol_getplabel) (m_label_t*);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    67
+typedef m_label_t* (*tsol_blabel_alloc) (void);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    68
+typedef void (*tsol_blabel_free) (m_label_t*);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    69
+typedef int (*tsol_blequal) (m_label_t*, m_label_t*);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    70
+typedef int (*tsol_label_to_str) (const m_label_t*, char**,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    71
+		 		  const m_label_str_t, uint_t);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    72
+typedef int (*tsol_str_to_label) (const char*, m_label_t**, 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    73
+				  const m_label_type_t, uint_t, int*);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    74
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    75
+static tsol_getlabel  libtsol_getlabel = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    76
+static tsol_getplabel  libtsol_getplabel = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    77
+static tsol_label_to_str libtsol_label_to_str = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    78
+static tsol_str_to_label libtsol_str_to_label = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    79
+static tsol_blabel_alloc libtsol_blabel_alloc = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    80
+static tsol_blabel_free libtsol_blabel_free = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    81
+static tsol_blequal libtsol_blequal = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    82
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    83
+static gboolean
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    84
+init_tsol () 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    85
+{
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    86
+	static gboolean tsol_init = FALSE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    87
+	gpointer handle = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    88
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    89
+	if (!tsol_init) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    90
+		if (handle = dlopen ("/usr/lib/libtsol.so.2", RTLD_LAZY)) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    91
+			libtsol_getlabel = (tsol_getlabel) dlsym (handle,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    92
+							"getlabel");
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    93
+			libtsol_getplabel = (tsol_getplabel) dlsym (handle,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    94
+							"getplabel");
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    95
+			libtsol_label_to_str = (tsol_label_to_str)dlsym (handle,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    96
+							"label_to_str");
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    97
+			libtsol_str_to_label = (tsol_str_to_label)dlsym (handle,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    98
+							"str_to_label");
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
    99
+			libtsol_blabel_alloc = (tsol_blabel_alloc)dlsym (handle,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   100
+							"blabel_alloc");
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   101
+			libtsol_blabel_free = (tsol_blabel_free)dlsym (handle,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   102
+							"blabel_free");
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   103
+			libtsol_blequal = (tsol_blequal) dlsym (handle, 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   104
+							"blequal");
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   105
+		}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   106
+		tsol_init = TRUE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   107
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   108
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   109
+	if (!libtsol_getlabel || !libtsol_getplabel || !libtsol_blabel_alloc ||
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   110
+	    !libtsol_blabel_free || !libtsol_label_to_str || !libtsol_blequal ||
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   111
+	    !libtsol_str_to_label) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   112
+		return FALSE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   113
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   114
+	
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   115
+	return TRUE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   116
+}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   117
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   118
+char*
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   119
+nautilus_tsol_get_process_label (void)
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   120
+{
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   121
+	char *label_str;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   122
+	m_label_t *label = NULL; 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   123
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   124
+	if (init_tsol ()) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   125
+		label = libtsol_blabel_alloc ();
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   126
+		if (libtsol_getplabel (label) == -1) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   127
+			label_str = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   128
+		} else if (libtsol_label_to_str (label, &label_str, M_LABEL, 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   129
+					 	DEF_NAMES)) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   130
+			label_str = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   131
+		}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   132
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   133
+		libtsol_blabel_free (label);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   134
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   135
+		return label_str;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   136
+	} else {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   137
+		return NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   138
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   139
+}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   140
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   141
+char*
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   142
+nautilus_tsol_get_file_label (const char *uri)
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   143
+{
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   144
+	char *label_str;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   145
+	m_label_t *label;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   146
+	char *path;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   147
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   148
+	if (init_tsol () && strncmp (uri, "file://", 7) == 0) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   149
+		label = libtsol_blabel_alloc ();
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   150
+		path = gnome_vfs_get_local_path_from_uri (uri);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   151
+		if (libtsol_getlabel (path, label) == -1) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   152
+			label_str =  NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   153
+		} else if (libtsol_label_to_str (label, &label_str, M_LABEL, 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   154
+					 	 LONG_NAMES)) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   155
+			label_str = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   156
+		}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   157
+		g_free (path);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   158
+	
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   159
+		libtsol_blabel_free (label);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   160
+	
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   161
+		return label_str;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   162
+	} else {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   163
+		return g_strdup ("ADMIN_LOW");
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   164
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   165
+}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   166
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   167
+gboolean 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   168
+nautilus_tsol_label_equal_to_process_label (char *label_str) 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   169
+{
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   170
+	gboolean ret = TRUE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   171
+	m_label_t *plabel = NULL, *label = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   172
+	int error;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   173
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   174
+	if (init_tsol ()) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   175
+		plabel = libtsol_blabel_alloc ();
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   176
+		label =  libtsol_blabel_alloc ();
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   177
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   178
+		if (libtsol_getplabel (plabel) == -1) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   179
+			ret = TRUE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   180
+		} else if (libtsol_str_to_label (label_str, &label, MAC_LABEL,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   181
+						 L_NO_CORRECTION, &error) ==-1){
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   182
+			ret = TRUE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   183
+		} else if (libtsol_blequal (plabel, label)) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   184
+			ret = TRUE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   185
+		} else {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   186
+			ret = FALSE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   187
+		}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   188
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   189
+		libtsol_blabel_free (plabel);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   190
+		libtsol_blabel_free (label);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   191
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   192
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   193
+	return ret;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   194
+}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   195
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   196
+gboolean
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   197
+nautilus_tsol_multi_label_session (void) 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   198
+{
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   199
+	static int trusted = -1;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   200
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   201
+	if (trusted < 0) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   202
+		if (getenv ("TRUSTED_SESSION")) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   203
+			trusted = 1;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   204
+		} else {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   205
+			trusted = 0;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   206
+		}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   207
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   208
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   209
+	return trusted ? TRUE : FALSE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   210
+}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   211
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   212
+static char*
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   213
+nautilus_tsol_get_active_desktop_id (void) 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   214
+{
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   215
+	static char *dwid = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   216
+	uid_t uid;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   217
+	zoneid_t zid;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   218
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   219
+	if (!dwid) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   220
+		uid = getuid();
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   221
+		zid = getzoneid();
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   222
+		dwid = g_strdup_printf ("%d_%d", uid, zid);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   223
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   224
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   225
+	return dwid;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   226
+}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   227
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   228
+gboolean
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   229
+nautilus_tsol_show_desktop_window (GdkScreen *screen)
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   230
+{
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   231
+	char *dwid;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   232
+	int format;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   233
+	unsigned long nitems;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   234
+	unsigned long bytesafter;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   235
+	unsigned char *prop_data = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   236
+	char *p;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   237
+	int i, n_strings;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   238
+	Atom atom, utf8_string;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   239
+	Atom type = None;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   240
+	Window root_win;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   241
+	char **contents;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   242
+	GdkDisplay *gdk_dpy = gdk_display_get_default ();
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   243
+	Display *x_dpy = GDK_DISPLAY_XDISPLAY (gdk_dpy);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   244
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   245
+	root_win = GDK_WINDOW_XWINDOW (gdk_screen_get_root_window (screen));
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   246
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   247
+	utf8_string = XInternAtom (x_dpy, "UTF8_STRING", FALSE);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   248
+	dwid = nautilus_tsol_get_active_desktop_id ();
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   249
+	atom = XInternAtom (x_dpy, "NAUTILUS_ACTIVE_DESKTOP_ID", FALSE);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   250
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   251
+	if (XGetWindowProperty (x_dpy, root_win, atom, 0L, (long)1024, False,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   252
+				utf8_string, &type, &format, &nitems, 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   253
+				&bytesafter, (unsigned char **)&prop_data) 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   254
+				!= Success) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   255
+		return FALSE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   256
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   257
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   258
+	if (type != utf8_string || format != 8 || nitems == 0) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   259
+		if (prop_data) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   260
+			XFree (prop_data);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   261
+		}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   262
+		return FALSE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   263
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   264
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   265
+	i = 0;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   266
+	n_strings = 0;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   267
+	while (i < nitems) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   268
+		if (prop_data[i] == '\0') {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   269
+			++n_strings;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   270
+		}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   271
+		++i;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   272
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   273
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   274
+	if (prop_data[nitems -1] != '/0') {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   275
+		++n_strings;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   276
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   277
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   278
+	contents = g_new0 (char *, n_strings+1);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   279
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   280
+	p = prop_data;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   281
+	i = 0;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   282
+	while (i < n_strings) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   283
+		if (!g_utf8_validate ((const gchar *)p, -1, NULL)) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   284
+			g_warning ("Property contained invalid utf8\n");
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   285
+			XFree (prop_data);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   286
+			g_strfreev (contents);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   287
+			return FALSE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   288
+		}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   289
+		contents[i] = g_strdup (p);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   290
+		p = p + strlen (p) +1;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   291
+		++i;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   292
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   293
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   294
+	if (prop_data) XFree (prop_data);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   295
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   296
+	if (strcmp (contents[0], dwid) == 0) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   297
+		return TRUE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   298
+	} else {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   299
+		return FALSE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   300
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   301
+}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   302
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   303
+GdkFilterReturn
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   304
+nautilus_tsol_filter_func (GdkXEvent *gdkxevent, GdkEvent *event, gpointer data)
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   305
+{
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   306
+	Atom atom;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   307
+	XEvent *xevent = gdkxevent;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   308
+	GtkWidget *widget = (GtkWidget *)data;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   309
+	GdkScreen *screen = gtk_widget_get_screen (widget);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   310
+	GdkDisplay *gdk_dpy = gdk_display_get_default ();
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   311
+	Display *x_dpy = GDK_DISPLAY_XDISPLAY (gdk_dpy);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   312
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   313
+	if (xevent->type != PropertyNotify) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   314
+		return GDK_FILTER_CONTINUE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   315
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   316
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   317
+	atom = XInternAtom (x_dpy, "NAUTILUS_ACTIVE_DESKTOP_ID", FALSE);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   318
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   319
+	if (xevent->xproperty.atom != atom) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   320
+		return GDK_FILTER_CONTINUE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   321
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   322
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   323
+	if (nautilus_tsol_show_desktop_window (screen)) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   324
+		gtk_widget_show (widget);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   325
+	} else {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   326
+		gtk_widget_hide (widget);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   327
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   328
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   329
+	return GDK_FILTER_CONTINUE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   330
+}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   331
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   332
+void
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   333
+nautilus_tsol_update_paste_location_property (GtkClipboard *cb, char *dir)
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   334
+{
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   335
+	GtkWidget *widget = g_object_get_data (gtk_clipboard_get_display (cb),
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   336
+					       "gtk-clipboard-widget");
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   337
+	Display *x_dpy = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (widget));
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   338
+	Atom atom = XInternAtom (x_dpy, "_NAUTILUS_TARGET_DIR", FALSE);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   339
+	Atom utf8 = XInternAtom (x_dpy, "UTF8_STRING", FALSE);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   340
+	Window win = GDK_WINDOW_XWINDOW (widget->window);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   341
+	
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   342
+	XChangeProperty (x_dpy, win, atom, utf8, 8, PropModeReplace, dir, 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   343
+			 strlen (dir));
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   344
+	
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   345
+	XSync (x_dpy, FALSE);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   346
+}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   347
diff -urN -x '*.orig' -x '*.rej' naut.orig/libnautilus-private/nautilus-tsol-extensions.h naut.new/libnautilus-private/nautilus-tsol-extensions.h
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   348
--- naut.orig/libnautilus-private/nautilus-tsol-extensions.h	1970-01-01 01:00:00.000000000 +0100
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   349
+++ naut.new/libnautilus-private/nautilus-tsol-extensions.h	2009-03-25 15:50:31.164171360 +0000
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   350
@@ -0,0 +1,20 @@
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   351
+/*
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   352
+ * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   353
+ * Use is subject to license terms.
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   354
+ */
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   355
+#ifndef NAUTILUS_TSOL_EXTENSIONS_H
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   356
+#define NAUTILUS_TSOL_EXTENSIONS_H
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   357
+#include <config.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   358
+#include <gdk/gdk.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   359
+#include <gtk/gtkclipboard.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   360
+#include <glib/glist.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   361
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   362
+gboolean nautilus_tsol_multi_label_session (void);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   363
+gboolean nautilus_tsol_show_desktop_window (GdkScreen *screen);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   364
+gboolean nautilus_tsol_label_equal_to_process_label (char *label);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   365
+GdkFilterReturn nautilus_tsol_filter_func (GdkXEvent *gdkxevent, GdkEvent *event, gpointer data);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   366
+char *nautilus_tsol_get_file_label (const char *filename);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   367
+char *nautilus_tsol_get_process_label ();
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   368
+void nautilus_tsol_update_paste_location_property (GtkClipboard *cb, char *dir);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   369
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   370
+#endif
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   371
diff -urN -x '*.orig' -x '*.rej' naut.orig/src/file-manager/fm-directory-view.c naut.new/src/file-manager/fm-directory-view.c
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   372
--- naut.orig/src/file-manager/fm-directory-view.c	2009-03-25 15:48:56.555869222 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   373
+++ naut.new/src/file-manager/fm-directory-view.c	2009-03-25 15:50:31.168489932 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   374
@@ -79,6 +79,7 @@
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   375
 #include <libnautilus-private/nautilus-trash-monitor.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   376
 #include <libnautilus-private/nautilus-ui-utilities.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   377
 #include <libnautilus-private/nautilus-signaller.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   378
+#include <libnautilus-private/nautilus-tsol-extensions.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   379
 #include <libnautilus-private/nautilus-autorun.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   380
 #include <libnautilus-private/nautilus-icon-names.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   381
 
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   382
@@ -5566,7 +5567,7 @@
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   383
                              gsize *len)
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   384
 {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   385
 	GString *uris;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   386
-	char *uri, *tmp;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   387
+	char *uri, *tmp, *label;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   388
 	GFile *f;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   389
         guint i;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   390
 
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   391
@@ -5574,6 +5575,12 @@
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   392
 		uris = g_string_new (NULL);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   393
 	} else {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   394
 		uris = g_string_new (info->cut ? "cut" : "copy");
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   395
+		if (nautilus_tsol_multi_label_session ()) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   396
+                        label = nautilus_tsol_get_process_label ();
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   397
+                        g_string_append_c (uris, '\n');
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   398
+                        g_string_append (uris, label);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   399
+                        g_free (label);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   400
+                }
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   401
 	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   402
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   403
         for (i = 0; i < info->n_file_uris; ++i) {
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   404
@@ -5763,6 +5770,7 @@
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   405
 {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   406
 	gboolean cut;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   407
 	GList *item_uris;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   408
+	char *label = NULL;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   409
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   410
 	cut = FALSE;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   411
 	item_uris = nautilus_clipboard_get_uri_list_from_selection_data (selection_data, &cut,
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   412
@@ -5772,10 +5780,12 @@
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   413
 		nautilus_window_slot_info_set_status (view->details->slot,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   414
 						      _("There is nothing on the clipboard to paste."));
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   415
 	} else {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   416
-		fm_directory_view_move_copy_items (item_uris, NULL, destination_uri,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   417
+		if (!label || nautilus_tsol_label_equal_to_process_label (label)){
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   418
+			fm_directory_view_move_copy_items (item_uris, NULL, destination_uri,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   419
 						   cut ? GDK_ACTION_MOVE : GDK_ACTION_COPY,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   420
 						   0, 0,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   421
 						   view);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   422
+		}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   423
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   424
 		/* If items are cut then remove from clipboard */
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   425
 		if (cut) {
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   426
diff -urN -x '*.orig' -x '*.rej' naut.orig/src/file-manager/fm-properties-window.c naut.new/src/file-manager/fm-properties-window.c
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   427
--- naut.orig/src/file-manager/fm-properties-window.c	2009-03-25 15:48:56.554763663 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   428
+++ naut.new/src/file-manager/fm-properties-window.c	2009-03-25 15:50:31.171186528 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   429
@@ -4784,7 +4786,9 @@
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   430
 {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   431
 	GtkWidget *vbox, *button, *hbox;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   432
 	GtkTable *page_table;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   433
+	GtkLabel *label_label;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   434
 	char *file_name, *prompt_text;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   435
+	char *label_str, *uri;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   436
 	GList *file_list;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   437
 	guint last_row;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   438
 
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   439
@@ -4830,6 +4834,17 @@
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   440
 			 "selinux_context", INCONSISTENT_STATE_STRING,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   441
 			 FALSE);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   442
 #endif
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   443
+		if (nautilus_tsol_multi_label_session ()) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   444
+			last_row = append_title_field (page_table,
14930
6d4ce2628aa1 2009-01-19 Takao Fujiwara <[email protected]>
fujiwara
parents: 14836
diff changeset
   445
+				/* SUN_BRANDING TJDS */
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   446
+				_("File Label:"), &label_label);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   447
+			uri = nautilus_file_get_uri (get_target_file (window));
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   448
+			label_str = nautilus_tsol_get_file_label (uri);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   449
+			attach_value_label (page_table, last_row, VALUE_COLUMN,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   450
+				label_str);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   451
+			g_free (label_str);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   452
+		}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   453
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   454
 		append_title_value_pair
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   455
 			(window, page_table, _("Last changed:"), 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   456
 			 "date_permissions", INCONSISTENT_STATE_STRING,
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   457
diff -urN -x '*.orig' -x '*.rej' naut.orig/src/nautilus-application.c naut.new/src/nautilus-application.c
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   458
--- naut.orig/src/nautilus-application.c	2009-03-25 15:48:56.565159696 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   459
+++ naut.new/src/nautilus-application.c	2009-03-25 15:50:31.172417300 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   460
@@ -897,12 +900,12 @@
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   461
 static GtkWidget *
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   462
 get_desktop_manager_selection (GdkDisplay *display, int screen)
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   463
 {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   464
-	char selection_name[32];
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   465
+	char selection_name[52];
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   466
 	GdkAtom selection_atom;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   467
 	Window selection_owner;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   468
 	GtkWidget *selection_widget;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   469
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   470
-	g_snprintf (selection_name, sizeof (selection_name), "_NET_DESKTOP_MANAGER_S%d", screen);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   471
+	g_snprintf (selection_name, sizeof (selection_name), "_NET_DESKTOP_MANAGER_S%d_%d_%d", screen, getuid(), getzoneid());
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   472
 	selection_atom = gdk_atom_intern (selection_name, FALSE);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   473
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   474
 	selection_owner = XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display),
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   475
diff -urN -x '*.orig' -x '*.rej' naut.orig/src/nautilus-desktop-window.c naut.new/src/nautilus-desktop-window.c
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   476
--- naut.orig/src/nautilus-desktop-window.c	2009-03-25 15:48:56.559673968 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   477
+++ naut.new/src/nautilus-desktop-window.c	2009-03-25 15:50:31.172816870 +0000
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   478
@@ -36,6 +36,10 @@
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   479
 #include <libnautilus-private/nautilus-icon-names.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   480
 #include <gio/gio.h>
14836
bc662659c4ff 2009-01-02 Padraig O'Briain <[email protected]>
padraig
parents: 13439
diff changeset
   481
 #include <glib/gi18n.h>
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   482
+#include <libnautilus-private/nautilus-tsol-extensions.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   483
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   484
+#include <strings.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   485
+#include <zone.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   486
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   487
 struct NautilusDesktopWindowDetails {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   488
 	int dummy;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   489
@@ -112,6 +116,7 @@
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   490
 nautilus_desktop_window_new (NautilusApplication *application,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   491
 			     GdkScreen           *screen)
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   492
 {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   493
+	GdkWindow *root_window;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   494
 	NautilusDesktopWindow *window;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   495
 	int width_request, height_request;
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   496
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   497
@@ -131,6 +136,12 @@
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   498
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   499
 	g_signal_connect (window, "delete_event", G_CALLBACK (nautilus_desktop_window_delete_event), NULL);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   500
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   501
+	if (nautilus_tsol_multi_label_session ()) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   502
+		root_window = gdk_screen_get_root_window (screen);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   503
+		gdk_window_add_filter (root_window, nautilus_tsol_filter_func,
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   504
+				       window);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   505
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   506
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   507
 	/* Point window at the desktop folder.
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   508
 	 * Note that nautilus_desktop_window_init is too early to do this.
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   509
 	 */
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   510
diff -urN -x '*.orig' -x '*.rej' naut.orig/src/nautilus-window-manage-views.c naut.new/src/nautilus-window-manage-views.c
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   511
--- naut.orig/src/nautilus-window-manage-views.c	2009-03-25 15:48:56.570198528 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   512
+++ naut.new/src/nautilus-window-manage-views.c	2009-03-25 15:50:31.173977404 +0000
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   513
@@ -66,6 +66,7 @@
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   514
 #include <libnautilus-private/nautilus-window-info.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   515
 #include <libnautilus-private/nautilus-window-slot-info.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   516
 #include <libnautilus-private/nautilus-autorun.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   517
+#include <libnautilus-private/nautilus-tsol-extensions.h>
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   518
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   519
 /* FIXME bugzilla.gnome.org 41243: 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   520
  * We should use inheritance instead of these special cases
15579
d26c3d31b0bd 2009-04-07 Stephen Browne <[email protected]>
stephen
parents: 14930
diff changeset
   521
@@ -1405,6 +1406,12 @@
13439
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   522
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   523
 		g_object_unref (location_copy);
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   524
 	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   525
+
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   526
+	if (nautilus_tsol_multi_label_session () &&
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   527
+	    NAUTILUS_IS_DESKTOP_WINDOW (window) &&
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   528
+	    !nautilus_tsol_show_desktop_window (gtk_widget_get_screen (GTK_WIDGET (window)))) {
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   529
+		gtk_widget_hide (GTK_WIDGET (window));
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   530
+	}
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   531
 }
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   532
 
9fda05be38db 2008-09-08 Erwann Chenede - <[email protected]>
erwannc
parents:
diff changeset
   533
 static void
15621
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   534
--- nautilus-2.26.2/libnautilus-private/nautilus-column-utilities.c.ori	2009-04-15 06:40:35.671068662 +0100
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   535
+++ nautilus-2.26.2/libnautilus-private/nautilus-column-utilities.c	2009-04-15 06:42:17.453055378 +0100
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   536
@@ -113,6 +113,7 @@
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   537
 					       "label", _("MIME Type"),
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   538
 					       "description", _("The mime type of the file."),
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   539
 					       NULL));
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   540
+#ifdef HAVE_SELINUX
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   541
 	columns = g_list_append (columns,
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   542
 				 g_object_new (NAUTILUS_TYPE_COLUMN,
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   543
 					       "name", "selinux_context",
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   544
@@ -120,6 +121,7 @@
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   545
 					       "label", _("SELinux Context"),
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   546
 					       "description", _("The SELinux security context of the file."),
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   547
 					       NULL));
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   548
+#endif
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   549
 	columns = g_list_append (columns,
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   550
 				 g_object_new (NAUTILUS_TYPE_COLUMN,
b447de05cc21 Bump to 2.26.1
davelam
parents: 15579
diff changeset
   551
 					       "name", "where",
16101
727cd929058f 2009-07-23 Christian Kelly <[email protected]>
chrisk
parents: 15621
diff changeset
   552
diff -ruN nautilus-2.27.4.orig/src/file-manager/fm-properties-window.c nautilus-2.27.4/src/file-manager/fm-properties-window.c
727cd929058f 2009-07-23 Christian Kelly <[email protected]>
chrisk
parents: 15621
diff changeset
   553
--- nautilus-2.27.4.orig/src/file-manager/fm-properties-window.c	2009-07-23 15:50:33.904002666 +0100
727cd929058f 2009-07-23 Christian Kelly <[email protected]>
chrisk
parents: 15621
diff changeset
   554
+++ nautilus-2.27.4/src/file-manager/fm-properties-window.c	2009-07-23 15:51:09.501841762 +0100
727cd929058f 2009-07-23 Christian Kelly <[email protected]>
chrisk
parents: 15621
diff changeset
   555
@@ -61,6 +61,7 @@
727cd929058f 2009-07-23 Christian Kelly <[email protected]>
chrisk
parents: 15621
diff changeset
   556
 #include <string.h>
727cd929058f 2009-07-23 Christian Kelly <[email protected]>
chrisk
parents: 15621
diff changeset
   557
 #include <sys/stat.h>
727cd929058f 2009-07-23 Christian Kelly <[email protected]>
chrisk
parents: 15621
diff changeset
   558
 #include <cairo.h>
727cd929058f 2009-07-23 Christian Kelly <[email protected]>
chrisk
parents: 15621
diff changeset
   559
+#include <libnautilus-private/nautilus-tsol-extensions.h>
727cd929058f 2009-07-23 Christian Kelly <[email protected]>
chrisk
parents: 15621
diff changeset
   560
 
727cd929058f 2009-07-23 Christian Kelly <[email protected]>
chrisk
parents: 15621
diff changeset
   561
 #if HAVE_SYS_VFS_H
727cd929058f 2009-07-23 Christian Kelly <[email protected]>
chrisk
parents: 15621
diff changeset
   562
 #include <sys/vfs.h>
17505
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   563
diff -ruN nautilus-2.29.2.orig/src/file-manager/fm-directory-view.c nautilus-2.29.2/src/file-manager/fm-directory-view.c
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   564
--- nautilus-2.29.2.orig/src/file-manager/fm-directory-view.c	2010-02-01 23:04:48.447298960 +0000
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   565
+++ nautilus-2.29.2/src/file-manager/fm-directory-view.c	2010-02-01 23:06:16.476314358 +0000
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   566
@@ -6139,7 +6139,11 @@
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   567
 	FMDirectoryView *view;
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   568
 
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   569
 	view = FM_DIRECTORY_VIEW (callback_data);
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   570
-
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   571
+        if (nautilus_tsol_multi_label_session ()) {
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   572
+                char *target_dir = fm_directory_view_get_backing_uri (view);
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   573
+                nautilus_tsol_update_paste_location_property (nautilus_clipboard_get (view), target_dir);
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   574
+                g_free (target_dir);
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   575
+        }
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   576
 	g_object_ref (view);
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   577
 	gtk_clipboard_request_contents (nautilus_clipboard_get (GTK_WIDGET (view)),
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   578
 					copied_files_atom,
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   579
diff -ruN nautilus-2.29.2.orig/src/nautilus-application.c nautilus-2.29.2/src/nautilus-application.c
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   580
--- nautilus-2.29.2.orig/src/nautilus-application.c	2010-02-01 23:04:48.455841660 +0000
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   581
+++ nautilus-2.29.2/src/nautilus-application.c	2010-02-01 23:07:28.282513703 +0000
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   582
@@ -76,6 +76,8 @@
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   583
 #include <libnautilus-private/nautilus-signaller.h>
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   584
 #include <libnautilus-extension/nautilus-menu-provider.h>
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   585
 #include <libnautilus-private/nautilus-autorun.h>
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   586
+#include <zone.h>
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   587
+#include <unistd.h>
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   588
 
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   589
 enum
ed8b5d260e6a 2010-02-07 Christian Kelly <[email protected]>
chrisk
parents: 16101
diff changeset
   590
 {