Update selinux patch

This commit is contained in:
Cosimo Cecchi 2011-01-31 22:35:38 -05:00
parent eed8fe8b89
commit 314cb998f1
3 changed files with 236 additions and 1968 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,26 @@
diff -up nautilus-2.91.6/libnautilus-extension/nautilus-column.c.selinux nautilus-2.91.6/libnautilus-extension/nautilus-column.c From 0c1deabf5af07059ec2920f6c6222654479cc114 Mon Sep 17 00:00:00 2001
--- nautilus-2.91.6/libnautilus-extension/nautilus-column.c.selinux 2010-11-30 12:20:09.000000000 -0500 From: Cosimo Cecchi <cosimoc@gnome.org>
+++ nautilus-2.91.6/libnautilus-extension/nautilus-column.c 2011-01-07 16:43:53.859993002 -0500 Date: Mon, 31 Jan 2011 22:19:36 -0500
Subject: [PATCH] Updated selinux patch
---
libnautilus-extension/nautilus-column.c | 17 +
libnautilus-extension/nautilus-column.h | 1 +
libnautilus-private/nautilus-column-utilities.c | 1 +
libnautilus-private/nautilus-file-operations.c | 37 +-
libnautilus-private/nautilus-file-operations.h | 1 +
libnautilus-private/nautilus-file.c | 112 +++-
libnautilus-private/nautilus-file.h | 5 +
src/nautilus-error-reporting.c | 25 +
src/nautilus-error-reporting.h | 3 +
src/nautilus-list-view.c | 6 +-
src/nautilus-properties-window.c | 1159 +++++++++++++++++++++--
11 files changed, 1283 insertions(+), 84 deletions(-)
diff --git a/libnautilus-extension/nautilus-column.c b/libnautilus-extension/nautilus-column.c
index 646e64e..7ff3aec 100644
--- a/libnautilus-extension/nautilus-column.c
+++ b/libnautilus-extension/nautilus-column.c
@@ -34,6 +34,7 @@ enum { @@ -34,6 +34,7 @@ enum {
PROP_LABEL, PROP_LABEL,
PROP_DESCRIPTION, PROP_DESCRIPTION,
@ -17,7 +37,7 @@ diff -up nautilus-2.91.6/libnautilus-extension/nautilus-column.c.selinux nautilu
}; };
G_DEFINE_TYPE (NautilusColumn, nautilus_column, G_TYPE_OBJECT); G_DEFINE_TYPE (NautilusColumn, nautilus_column, G_TYPE_OBJECT);
@@ -110,6 +112,9 @@ nautilus_column_get_property (GObject *o @@ -110,6 +112,9 @@ nautilus_column_get_property (GObject *object,
case PROP_XALIGN : case PROP_XALIGN :
g_value_set_float (value, column->details->xalign); g_value_set_float (value, column->details->xalign);
break; break;
@ -27,7 +47,7 @@ diff -up nautilus-2.91.6/libnautilus-extension/nautilus-column.c.selinux nautilu
default : default :
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break; break;
@@ -151,6 +156,10 @@ nautilus_column_set_property (GObject *o @@ -151,6 +156,10 @@ nautilus_column_set_property (GObject *object,
column->details->xalign = g_value_get_float (value); column->details->xalign = g_value_get_float (value);
g_object_notify (object, "xalign"); g_object_notify (object, "xalign");
break; break;
@ -38,7 +58,7 @@ diff -up nautilus-2.91.6/libnautilus-extension/nautilus-column.c.selinux nautilu
default : default :
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break; break;
@@ -178,6 +187,7 @@ nautilus_column_init (NautilusColumn *co @@ -178,6 +187,7 @@ nautilus_column_init (NautilusColumn *column)
{ {
column->details = g_new0 (NautilusColumnDetails, 1); column->details = g_new0 (NautilusColumnDetails, 1);
column->details->xalign = 0.0; column->details->xalign = 0.0;
@ -46,7 +66,7 @@ diff -up nautilus-2.91.6/libnautilus-extension/nautilus-column.c.selinux nautilu
} }
static void static void
@@ -232,5 +242,12 @@ nautilus_column_class_init (NautilusColu @@ -232,5 +242,12 @@ nautilus_column_class_init (NautilusColumnClass *class)
1.0, 1.0,
0.0, 0.0,
G_PARAM_READWRITE)); G_PARAM_READWRITE));
@ -59,10 +79,11 @@ diff -up nautilus-2.91.6/libnautilus-extension/nautilus-column.c.selinux nautilu
+ G_PARAM_READWRITE)); + G_PARAM_READWRITE));
} }
diff -up nautilus-2.91.6/libnautilus-extension/nautilus-column.h.selinux nautilus-2.91.6/libnautilus-extension/nautilus-column.h diff --git a/libnautilus-extension/nautilus-column.h b/libnautilus-extension/nautilus-column.h
--- nautilus-2.91.6/libnautilus-extension/nautilus-column.h.selinux 2010-11-30 12:20:09.000000000 -0500 index 8ad627a..8a1184a 100644
+++ nautilus-2.91.6/libnautilus-extension/nautilus-column.h 2011-01-07 16:43:53.859993002 -0500 --- a/libnautilus-extension/nautilus-column.h
@@ -64,6 +64,7 @@ NautilusColumn * nautilus_column_new +++ b/libnautilus-extension/nautilus-column.h
@@ -64,6 +64,7 @@ NautilusColumn * nautilus_column_new (const char *name,
* label (string) - the user-visible label for the column * label (string) - the user-visible label for the column
* description (string) - a user-visible description of the column * description (string) - a user-visible description of the column
* xalign (float) - x-alignment of the column * xalign (float) - x-alignment of the column
@ -70,9 +91,10 @@ diff -up nautilus-2.91.6/libnautilus-extension/nautilus-column.h.selinux nautilu
*/ */
G_END_DECLS G_END_DECLS
diff -up nautilus-2.91.6/libnautilus-private/nautilus-column-utilities.c.selinux nautilus-2.91.6/libnautilus-private/nautilus-column-utilities.c diff --git a/libnautilus-private/nautilus-column-utilities.c b/libnautilus-private/nautilus-column-utilities.c
--- nautilus-2.91.6/libnautilus-private/nautilus-column-utilities.c.selinux 2010-11-30 12:20:09.000000000 -0500 index ed5142f..358b461 100644
+++ nautilus-2.91.6/libnautilus-private/nautilus-column-utilities.c 2011-01-07 16:43:53.860993002 -0500 --- a/libnautilus-private/nautilus-column-utilities.c
+++ b/libnautilus-private/nautilus-column-utilities.c
@@ -120,6 +120,7 @@ get_builtin_columns (void) @@ -120,6 +120,7 @@ get_builtin_columns (void)
"attribute", "selinux_context", "attribute", "selinux_context",
"label", _("SELinux Context"), "label", _("SELinux Context"),
@ -81,19 +103,106 @@ diff -up nautilus-2.91.6/libnautilus-private/nautilus-column-utilities.c.selinux
NULL)); NULL));
#endif #endif
columns = g_list_append (columns, columns = g_list_append (columns,
diff -up nautilus-2.91.6/libnautilus-private/nautilus-file.c.selinux nautilus-2.91.6/libnautilus-private/nautilus-file.c diff --git a/libnautilus-private/nautilus-file-operations.c b/libnautilus-private/nautilus-file-operations.c
--- nautilus-2.91.6/libnautilus-private/nautilus-file.c.selinux 2010-12-13 13:22:48.000000000 -0500 index 074ef75..310c15d 100644
+++ nautilus-2.91.6/libnautilus-private/nautilus-file.c 2011-01-07 16:43:53.864993002 -0500 --- a/libnautilus-private/nautilus-file-operations.c
@@ -2154,7 +2154,7 @@ update_info_internal (NautilusFile *file +++ b/libnautilus-private/nautilus-file-operations.c
} @@ -64,6 +64,10 @@
#include "nautilus-file-utilities.h"
#include "nautilus-file-conflict-dialog.h"
+#ifdef HAVE_SELINUX
+ #include <selinux/selinux.h>
+#endif
+
/* TODO: TESTING!!! */
typedef struct {
@@ -148,6 +152,7 @@ typedef struct {
guint32 file_mask;
guint32 dir_permissions;
guint32 dir_mask;
+ char *context;
} SetPermissionsJob;
typedef enum {
@@ -5453,6 +5458,10 @@ set_permissions_job_done (gpointer user_data)
job->done_callback (job->done_callback_data);
} }
- is_symlink = g_file_info_get_is_symlink (info); + if (job->context) {
+ is_symlink = g_file_info_get_is_symlink (info) || (g_file_info_get_file_type (info) == G_FILE_TYPE_SYMBOLIC_LINK); + g_free (job->context);
if (file->details->is_symlink != is_symlink) { + }
changed = TRUE; +
finalize_common ((CommonJob *)job);
return FALSE;
} }
@@ -2173,7 +2173,7 @@ update_info_internal (NautilusFile *file @@ -5508,6 +5517,14 @@ set_permissions_file (SetPermissionsJob *job,
current, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
common->cancellable, NULL);
}
+
+#ifdef HAVE_SELINUX
+ if (!job_aborted (common) && (job->context)) {
+ g_file_set_attribute_string (file, G_FILE_ATTRIBUTE_SELINUX_CONTEXT,
+ job->context, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
+ common->cancellable, NULL);
+ }
+#endif
if (!job_aborted (common) &&
g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) {
@@ -5571,6 +5588,7 @@ nautilus_file_set_permissions_recursive (const char *directory,
guint32 file_mask,
guint32 dir_permissions,
guint32 dir_mask,
+ const char *context,
NautilusOpCallback callback,
gpointer callback_data)
{
@@ -5584,7 +5602,24 @@ nautilus_file_set_permissions_recursive (const char *directory,
job->dir_mask = dir_mask;
job->done_callback = callback;
job->done_callback_data = callback_data;
-
+
+ if (context) {
+ char *rcontext;
+
+ rcontext = job->context = NULL;
+#ifdef HAVE_SELINUX
+ /* this is really const, but prototype is wrong, *sigh* */
+ if (selinux_trans_to_raw_context((char *)context, &rcontext)) {
+ g_error ("selinux_trans_to_raw_context: failed to allocate bytes");
+ return;
+ }
+ job->context = g_strdup (rcontext);
+ freecon (rcontext);
+#endif
+ } else {
+ job->context = NULL;
+ }
+
g_io_scheduler_push_job (set_permissions_job,
job,
NULL,
diff --git a/libnautilus-private/nautilus-file-operations.h b/libnautilus-private/nautilus-file-operations.h
index 96e908b..4a643a6 100644
--- a/libnautilus-private/nautilus-file-operations.h
+++ b/libnautilus-private/nautilus-file-operations.h
@@ -94,6 +94,7 @@ void nautilus_file_set_permissions_recursive (const char *di
guint32 file_mask,
guint32 folder_permissions,
guint32 folder_mask,
+ const char *context,
NautilusOpCallback callback,
gpointer callback_data);
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 3d14216..9c0a03b 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -2171,7 +2171,7 @@ update_info_internal (NautilusFile *file,
file->details->is_mountpoint = is_mountpoint; file->details->is_mountpoint = is_mountpoint;
has_permissions = g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_UNIX_MODE); has_permissions = g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_UNIX_MODE);
@ -102,7 +211,7 @@ diff -up nautilus-2.91.6/libnautilus-private/nautilus-file.c.selinux nautilus-2.
if (file->details->has_permissions != has_permissions || if (file->details->has_permissions != has_permissions ||
file->details->permissions != permissions) { file->details->permissions != permissions) {
changed = TRUE; changed = TRUE;
@@ -5087,7 +5087,7 @@ nautilus_file_can_get_selinux_context (N @@ -5077,7 +5077,7 @@ nautilus_file_can_get_selinux_context (NautilusFile *file)
* context * context
* @file: NautilusFile representing the file in question. * @file: NautilusFile representing the file in question.
* *
@ -111,7 +220,7 @@ diff -up nautilus-2.91.6/libnautilus-private/nautilus-file.c.selinux nautilus-2.
* *
**/ **/
char * char *
@@ -5120,6 +5120,114 @@ nautilus_file_get_selinux_context (Nauti @@ -5110,6 +5110,114 @@ nautilus_file_get_selinux_context (NautilusFile *file)
return translated; return translated;
} }
@ -226,10 +335,11 @@ diff -up nautilus-2.91.6/libnautilus-private/nautilus-file.c.selinux nautilus-2.
static char * static char *
get_real_name (const char *name, const char *gecos) get_real_name (const char *name, const char *gecos)
{ {
diff -up nautilus-2.91.6/libnautilus-private/nautilus-file.h.selinux nautilus-2.91.6/libnautilus-private/nautilus-file.h diff --git a/libnautilus-private/nautilus-file.h b/libnautilus-private/nautilus-file.h
--- nautilus-2.91.6/libnautilus-private/nautilus-file.h.selinux 2010-11-30 12:20:09.000000000 -0500 index f0f126c..9eef0dd 100644
+++ nautilus-2.91.6/libnautilus-private/nautilus-file.h 2011-01-07 16:43:53.867993002 -0500 --- a/libnautilus-private/nautilus-file.h
@@ -241,6 +241,7 @@ GList * nautilus_get_all +++ b/libnautilus-private/nautilus-file.h
@@ -240,6 +240,7 @@ GList * nautilus_get_all_group_names (void);
GList * nautilus_file_get_settable_group_names (NautilusFile *file); GList * nautilus_file_get_settable_group_names (NautilusFile *file);
gboolean nautilus_file_can_get_selinux_context (NautilusFile *file); gboolean nautilus_file_can_get_selinux_context (NautilusFile *file);
char * nautilus_file_get_selinux_context (NautilusFile *file); char * nautilus_file_get_selinux_context (NautilusFile *file);
@ -237,7 +347,7 @@ diff -up nautilus-2.91.6/libnautilus-private/nautilus-file.h.selinux nautilus-2.
/* "Capabilities". */ /* "Capabilities". */
gboolean nautilus_file_can_read (NautilusFile *file); gboolean nautilus_file_can_read (NautilusFile *file);
@@ -301,6 +302,10 @@ void nautilus_file_se @@ -300,6 +301,10 @@ void nautilus_file_set_permissions (Nautilu
guint32 permissions, guint32 permissions,
NautilusFileOperationCallback callback, NautilusFileOperationCallback callback,
gpointer callback_data); gpointer callback_data);
@ -248,108 +358,16 @@ diff -up nautilus-2.91.6/libnautilus-private/nautilus-file.h.selinux nautilus-2.
void nautilus_file_rename (NautilusFile *file, void nautilus_file_rename (NautilusFile *file,
const char *new_name, const char *new_name,
NautilusFileOperationCallback callback, NautilusFileOperationCallback callback,
diff -up nautilus-2.91.6/libnautilus-private/nautilus-file-operations.c.selinux nautilus-2.91.6/libnautilus-private/nautilus-file-operations.c diff --git a/src/nautilus-error-reporting.c b/src/nautilus-error-reporting.c
--- nautilus-2.91.6/libnautilus-private/nautilus-file-operations.c.selinux 2010-12-13 13:22:48.000000000 -0500 index db67dd6..7487997 100644
+++ nautilus-2.91.6/libnautilus-private/nautilus-file-operations.c 2011-01-07 16:43:53.870993002 -0500 --- a/src/nautilus-error-reporting.c
@@ -64,6 +64,10 @@ +++ b/src/nautilus-error-reporting.c
#include "nautilus-file-utilities.h" @@ -172,6 +172,31 @@ nautilus_report_error_setting_permissions (NautilusFile *file,
#include "nautilus-file-conflict-dialog.h"
+#ifdef HAVE_SELINUX
+ #include <selinux/selinux.h>
+#endif
+
/* TODO: TESTING!!! */
typedef struct {
@@ -148,6 +152,7 @@ typedef struct {
guint32 file_mask;
guint32 dir_permissions;
guint32 dir_mask;
+ char *context;
} SetPermissionsJob;
typedef enum {
@@ -5460,6 +5465,10 @@ set_permissions_job_done (gpointer user_
job->done_callback (job->done_callback_data);
}
+ if (job->context) {
+ g_free (job->context);
+ }
+
finalize_common ((CommonJob *)job);
return FALSE;
}
@@ -5515,6 +5524,14 @@ set_permissions_file (SetPermissionsJob
current, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
common->cancellable, NULL);
}
+
+#ifdef HAVE_SELINUX
+ if (!job_aborted (common) && (job->context)) {
+ g_file_set_attribute_string (file, G_FILE_ATTRIBUTE_SELINUX_CONTEXT,
+ job->context, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
+ common->cancellable, NULL);
+ }
+#endif
if (!job_aborted (common) &&
g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) {
@@ -5578,6 +5595,7 @@ nautilus_file_set_permissions_recursive
guint32 file_mask,
guint32 dir_permissions,
guint32 dir_mask,
+ const char *context,
NautilusOpCallback callback,
gpointer callback_data)
{
@@ -5591,7 +5609,24 @@ nautilus_file_set_permissions_recursive
job->dir_mask = dir_mask;
job->done_callback = callback;
job->done_callback_data = callback_data;
-
+
+ if (context) {
+ char *rcontext;
+
+ rcontext = job->context = NULL;
+#ifdef HAVE_SELINUX
+ /* this is really const, but prototype is wrong, *sigh* */
+ if (selinux_trans_to_raw_context((char *)context, &rcontext)) {
+ g_error ("selinux_trans_to_raw_context: failed to allocate bytes");
+ return;
+ }
+ job->context = g_strdup (rcontext);
+ freecon (rcontext);
+#endif
+ } else {
+ job->context = NULL;
+ }
+
g_io_scheduler_push_job (set_permissions_job,
job,
NULL,
diff -up nautilus-2.91.6/libnautilus-private/nautilus-file-operations.h.selinux nautilus-2.91.6/libnautilus-private/nautilus-file-operations.h
--- nautilus-2.91.6/libnautilus-private/nautilus-file-operations.h.selinux 2010-12-07 05:11:45.000000000 -0500
+++ nautilus-2.91.6/libnautilus-private/nautilus-file-operations.h 2011-01-07 16:43:53.872993001 -0500
@@ -94,6 +94,7 @@ void nautilus_file_set_permissions_recur
guint32 file_mask,
guint32 folder_permissions,
guint32 folder_mask,
+ const char *context,
NautilusOpCallback callback,
gpointer callback_data);
diff -up nautilus-2.91.6/src/file-manager/fm-error-reporting.c.selinux nautilus-2.91.6/src/file-manager/fm-error-reporting.c
--- nautilus-2.91.6/src/file-manager/fm-error-reporting.c.selinux 2010-12-17 20:59:41.000000000 -0500
+++ nautilus-2.91.6/src/file-manager/fm-error-reporting.c 2011-01-07 16:43:53.873993001 -0500
@@ -245,6 +245,31 @@ fm_report_error_setting_permissions (Nau
g_free (message); g_free (message);
} }
+void +void
+fm_report_error_setting_selinux (NautilusFile *file, +nautilus_report_error_setting_selinux (NautilusFile *file,
+ GError *error, + GError *error,
+ GtkWindow *parent_window) + GtkWindow *parent_window)
+{ +{
@ -373,29 +391,28 @@ diff -up nautilus-2.91.6/src/file-manager/fm-error-reporting.c.selinux nautilus-
+ g_free (message); + g_free (message);
+} +}
+ +
typedef struct _FMRenameData { typedef struct _NautilusRenameData {
char *name; char *name;
NautilusFileOperationCallback callback; NautilusFileOperationCallback callback;
diff -up nautilus-2.91.6/src/file-manager/fm-error-reporting.h.selinux nautilus-2.91.6/src/file-manager/fm-error-reporting.h diff --git a/src/nautilus-error-reporting.h b/src/nautilus-error-reporting.h
--- nautilus-2.91.6/src/file-manager/fm-error-reporting.h.selinux 2010-11-30 12:20:10.000000000 -0500 index 4272982..504a11e 100644
+++ nautilus-2.91.6/src/file-manager/fm-error-reporting.h 2011-01-07 16:43:53.874993001 -0500 --- a/src/nautilus-error-reporting.h
@@ -40,8 +40,11 @@ void fm_report_error_setting_permissions +++ b/src/nautilus-error-reporting.h
@@ -45,6 +45,9 @@ void nautilus_report_error_setting_owner (NautilusFile *file,
void nautilus_report_error_setting_group (NautilusFile *file,
GError *error, GError *error,
GtkWindow *parent_window); GtkWindow *parent_window);
void fm_report_error_setting_owner (NautilusFile *file, +void nautilus_report_error_setting_selinux (NautilusFile *file,
- GError *error,
+ GError *error,
GtkWindow *parent_window);
+void fm_report_error_setting_selinux (NautilusFile *file,
+ GError *error, + GError *error,
+ GtkWindow *parent_window); + GtkWindow *parent_window);
void fm_report_error_setting_group (NautilusFile *file,
GError *error, /* FIXME bugzilla.gnome.org 42394: Should this file be renamed or should this function be moved? */
GtkWindow *parent_window); void nautilus_rename_file (NautilusFile *file,
diff -up nautilus-2.91.6/src/file-manager/fm-list-view.c.selinux nautilus-2.91.6/src/file-manager/fm-list-view.c diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
--- nautilus-2.91.6/src/file-manager/fm-list-view.c.selinux 2010-12-22 11:00:53.000000000 -0500 index 4bb75bd..6cc192c 100644
+++ nautilus-2.91.6/src/file-manager/fm-list-view.c 2011-01-07 16:43:53.875993001 -0500 --- a/src/nautilus-list-view.c
@@ -1620,13 +1620,15 @@ create_and_set_up_tree_view (FMListView +++ b/src/nautilus-list-view.c
@@ -1628,13 +1628,15 @@ create_and_set_up_tree_view (NautilusListView *view)
char *name; char *name;
char *label; char *label;
float xalign; float xalign;
@ -410,9 +427,9 @@ diff -up nautilus-2.91.6/src/file-manager/fm-list-view.c.selinux nautilus-2.91.6
+ "xalign", &xalign, + "xalign", &xalign,
+ "ellipsize", &ellipsize, NULL); + "ellipsize", &ellipsize, NULL);
column_num = fm_list_model_add_column (view->details->model, column_num = nautilus_list_model_add_column (view->details->model,
nautilus_column); nautilus_column);
@@ -1671,6 +1673,8 @@ create_and_set_up_tree_view (FMListView @@ -1679,6 +1681,8 @@ create_and_set_up_tree_view (NautilusListView *view)
} else { } else {
cell = gtk_cell_renderer_text_new (); cell = gtk_cell_renderer_text_new ();
g_object_set (cell, "xalign", xalign, NULL); g_object_set (cell, "xalign", xalign, NULL);
@ -421,20 +438,22 @@ diff -up nautilus-2.91.6/src/file-manager/fm-list-view.c.selinux nautilus-2.91.6
view->details->cells = g_list_append (view->details->cells, view->details->cells = g_list_append (view->details->cells,
cell); cell);
column = gtk_tree_view_column_new_with_attributes (label, column = gtk_tree_view_column_new_with_attributes (label,
diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilus-2.91.6/src/file-manager/fm-properties-window.c diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
--- nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux 2010-12-22 11:00:53.000000000 -0500 index 13e5851..d409d25 100644
+++ nautilus-2.91.6/src/file-manager/fm-properties-window.c 2011-01-07 20:12:02.721992917 -0500 --- a/src/nautilus-properties-window.c
@@ -75,6 +75,9 @@ +++ b/src/nautilus-properties-window.c
#define FREE_FILL_G 0.623529412 @@ -79,6 +79,10 @@
#define FREE_FILL_B 0.811764706 #define FREE_FILL_B 0.811764706
+#ifdef HAVE_SELINUX +#ifdef HAVE_SELINUX
+# include <selinux/selinux.h> +# include <selinux/selinux.h>
+#endif +#endif
+
#define PREVIEW_IMAGE_WIDTH 96 #define PREVIEW_IMAGE_WIDTH 96
@@ -115,12 +118,15 @@ struct FMPropertiesWindowDetails { #define ROW_PAD 6
@@ -118,12 +122,15 @@ struct NautilusPropertiesWindowDetails {
unsigned int owner_change_timeout; unsigned int owner_change_timeout;
GList *permission_buttons; GList *permission_buttons;
@ -451,21 +470,21 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
GList *mime_list; GList *mime_list;
gboolean deep_count_finished; gboolean deep_count_finished;
@@ -203,6 +209,10 @@ static void permission_combo_update @@ -206,6 +213,10 @@ static void permission_combo_update (NautilusPropertiesWindow *win
GtkComboBox *combo); GtkComboBox *combo);
static void value_field_update (FMPropertiesWindow *window, static void value_field_update (NautilusPropertiesWindow *window,
GtkLabel *field); GtkLabel *field);
+static void edit_field_update (FMPropertiesWindow *window, +static void edit_field_update (NautilusPropertiesWindow *window,
+ GtkEntry *field); + GtkEntry *field);
+static void popup_field_update (FMPropertiesWindow *window, +static void popup_field_update (NautilusPropertiesWindow *window,
+ GtkComboBox *entry); + GtkComboBox *entry);
static void properties_window_update (FMPropertiesWindow *window, static void properties_window_update (NautilusPropertiesWindow *window,
GList *files); GList *files);
static void is_directory_ready_callback (NautilusFile *file, static void is_directory_ready_callback (NautilusFile *file,
@@ -232,10 +242,36 @@ static GtkLabel *attach_ellipsizing_valu @@ -235,10 +246,35 @@ static GtkLabel *attach_ellipsizing_value_label (GtkTable *table,
const char *initial_text); const char *initial_text);
static GtkWidget* create_pie_widget (FMPropertiesWindow *window); static GtkWidget* create_pie_widget (NautilusPropertiesWindow *window);
+ +
+static void attach_selinux_data_edit_field (GtkEntry *entry, +static void attach_selinux_data_edit_field (GtkEntry *entry,
+ char *attr_value, + char *attr_value,
@ -476,10 +495,9 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+ char *attr_val, + char *attr_val,
+ char *def_attr_val); + char *def_attr_val);
+#endif +#endif
+
G_DEFINE_TYPE (FMPropertiesWindow, fm_properties_window, GTK_TYPE_DIALOG); G_DEFINE_TYPE (NautilusPropertiesWindow, nautilus_properties_window, GTK_TYPE_DIALOG);
#define parent_class fm_properties_window_parent_class #define parent_class nautilus_properties_window_parent_class
+static void +static void
+maybe_gtk_entry_set_text (GtkEntry *entry, const char *val) +maybe_gtk_entry_set_text (GtkEntry *entry, const char *val)
@ -497,9 +515,9 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+} +}
+ +
static gboolean static gboolean
is_multi_file_window (FMPropertiesWindow *window) is_multi_file_window (NautilusPropertiesWindow *window)
{ {
@@ -256,6 +292,111 @@ is_multi_file_window (FMPropertiesWindow @@ -259,6 +295,111 @@ is_multi_file_window (NautilusPropertiesWindow *window)
return FALSE; return FALSE;
} }
@ -539,7 +557,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+ +
+#ifdef HAVE_SELINUX +#ifdef HAVE_SELINUX
+static gboolean +static gboolean
+multi_have_same_selinux_context (FMPropertiesWindow *window) +multi_have_same_selinux_context (NautilusPropertiesWindow *window)
+{ +{
+ GList *l; + GList *l;
+ char *cntx; + char *cntx;
@ -609,9 +627,9 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+} +}
+ +
static int static int
get_not_gone_original_file_count (FMPropertiesWindow *window) get_not_gone_original_file_count (NautilusPropertiesWindow *window)
{ {
@@ -631,11 +772,7 @@ set_name_field (FMPropertiesWindow *wind @@ -634,11 +775,7 @@ set_name_field (NautilusPropertiesWindow *window, const gchar *original_name,
* currently showing. This causes minimal ripples (e.g. * currently showing. This causes minimal ripples (e.g.
* selection change). * selection change).
*/ */
@ -624,7 +642,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
} }
} }
} }
@@ -715,7 +852,6 @@ static void @@ -718,7 +855,6 @@ static void
name_field_restore_original_name (NautilusEntry *name_field) name_field_restore_original_name (NautilusEntry *name_field)
{ {
const char *original_name; const char *original_name;
@ -632,7 +650,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
original_name = (const char *) g_object_get_data (G_OBJECT (name_field), original_name = (const char *) g_object_get_data (G_OBJECT (name_field),
"original_name"); "original_name");
@@ -724,14 +860,8 @@ name_field_restore_original_name (Nautil @@ -727,14 +863,8 @@ name_field_restore_original_name (NautilusEntry *name_field)
return; return;
} }
@ -648,7 +666,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
} }
static void static void
@@ -1027,6 +1157,14 @@ properties_window_update (FMPropertiesWi @@ -1028,6 +1158,14 @@ properties_window_update (NautilusPropertiesWindow *window,
for (l = window->details->value_fields; l != NULL; l = l->next) { for (l = window->details->value_fields; l != NULL; l = l->next) {
value_field_update (window, GTK_LABEL (l->data)); value_field_update (window, GTK_LABEL (l->data));
} }
@ -663,7 +681,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
} }
mime_list = get_mime_list (window); mime_list = get_mime_list (window);
@@ -1197,6 +1335,164 @@ value_field_update (FMPropertiesWindow * @@ -1198,6 +1336,161 @@ value_field_update (NautilusPropertiesWindow *window, GtkLabel *label)
window->details->target_files)); window->details->target_files));
} }
@ -702,7 +720,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+} +}
+ +
+static void +static void
+edit_field_update (FMPropertiesWindow *window, GtkEntry *entry) +edit_field_update (NautilusPropertiesWindow *window, GtkEntry *entry)
+{ +{
+ gboolean use_original; + gboolean use_original;
+ +
@ -755,7 +773,6 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+{ +{
+ const char *attr_name; + const char *attr_name;
+ char *attr_value; + char *attr_value;
+ char *def_attr_value;
+ char *inconsistent_string; + char *inconsistent_string;
+ char *cntx_type; + char *cntx_type;
+ const char *attr_u; + const char *attr_u;
@ -783,8 +800,6 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+ attr_name = g_object_get_data (G_OBJECT (combo), "file_attribute"); + attr_name = g_object_get_data (G_OBJECT (combo), "file_attribute");
+ inconsistent_string = g_object_get_data (G_OBJECT (combo), + inconsistent_string = g_object_get_data (G_OBJECT (combo),
+ "inconsistent_string"); + "inconsistent_string");
+ def_attr_value = g_object_get_data (G_OBJECT (combo),
+ "matchpathcon_cntx");
+ +
+ attr_value = file_list_get_string_attribute (file_list, attr_name, + attr_value = file_list_get_string_attribute (file_list, attr_name,
+ inconsistent_string); + inconsistent_string);
@ -809,7 +824,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+} +}
+ +
+static void +static void
+popup_field_update (FMPropertiesWindow *window, GtkComboBox *combo) +popup_field_update (NautilusPropertiesWindow *window, GtkComboBox *combo)
+{ +{
+ gboolean use_original; + gboolean use_original;
+ +
@ -828,7 +843,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
static GtkLabel * static GtkLabel *
attach_label (GtkTable *table, attach_label (GtkTable *table,
int row, int row,
@@ -1251,6 +1547,47 @@ attach_value_label (GtkTable *table, @@ -1252,6 +1545,47 @@ attach_value_label (GtkTable *table,
return attach_label (table, row, column, initial_text, FALSE, FALSE, FALSE, TRUE, FALSE); return attach_label (table, row, column, initial_text, FALSE, FALSE, FALSE, TRUE, FALSE);
} }
@ -876,12 +891,12 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
static GtkLabel * static GtkLabel *
attach_ellipsizing_value_label (GtkTable *table, attach_ellipsizing_value_label (GtkTable *table,
int row, int row,
@@ -1309,6 +1646,647 @@ attach_value_field (FMPropertiesWindow * @@ -1310,6 +1644,647 @@ attach_value_field (NautilusPropertiesWindow *window,
FALSE); FALSE);
} }
+static void +static void
+start_long_operation (FMPropertiesWindow *window) +start_long_operation (NautilusPropertiesWindow *window)
+{ +{
+ if (window->details->long_operation_underway == 0) { + if (window->details->long_operation_underway == 0) {
+ /* start long operation */ + /* start long operation */
@ -889,13 +904,13 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+ +
+ cursor = gdk_cursor_new (GDK_WATCH); + cursor = gdk_cursor_new (GDK_WATCH);
+ gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (window)), cursor); + gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (window)), cursor);
+ gdk_cursor_unref (cursor); + g_object_unref (cursor);
+ } + }
+ window->details->long_operation_underway ++; + window->details->long_operation_underway ++;
+} +}
+ +
+static void +static void
+end_long_operation (FMPropertiesWindow *window) +end_long_operation (NautilusPropertiesWindow *window)
+{ +{
+ if (gtk_widget_get_window (GTK_WIDGET (window)) != NULL && + if (gtk_widget_get_window (GTK_WIDGET (window)) != NULL &&
+ window->details->long_operation_underway == 1) { + window->details->long_operation_underway == 1) {
@ -912,20 +927,20 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+ GError *error, + GError *error,
+ gpointer callback_data) + gpointer callback_data)
+{ +{
+ FMPropertiesWindow *window; + NautilusPropertiesWindow *window;
+ g_assert (callback_data != NULL); + g_assert (callback_data != NULL);
+ +
+ window = FM_PROPERTIES_WINDOW (callback_data); + window = NAUTILUS_PROPERTIES_WINDOW (callback_data);
+ end_long_operation (window); + end_long_operation (window);
+ +
+ /* Report the error if it's an error. */ + /* Report the error if it's an error. */
+ fm_report_error_setting_selinux (file, error, NULL); + nautilus_report_error_setting_selinux (file, error, NULL);
+ +
+ g_object_unref (window); + g_object_unref (window);
+} +}
+ +
+static void +static void
+selinux_done_editing (FMPropertiesWindow *window, char *selinux_context) +selinux_done_editing (NautilusPropertiesWindow *window, char *selinux_context)
+{ +{
+ GList *l; + GList *l;
+ +
@ -947,13 +962,13 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+selinux_focus_out (NautilusEntry *entry, GdkEventFocus *event, gpointer cb_data) +selinux_focus_out (NautilusEntry *entry, GdkEventFocus *event, gpointer cb_data)
+{ +{
+ g_assert (NAUTILUS_IS_ENTRY (entry)); + g_assert (NAUTILUS_IS_ENTRY (entry));
+ g_assert (FM_IS_PROPERTIES_WINDOW (cb_data)); + g_assert (NAUTILUS_IS_PROPERTIES_WINDOW (cb_data));
+ +
+ if (gtk_widget_get_state (entry)) { + if (gtk_widget_get_state (GTK_WIDGET (entry))) {
+ char *tmp; + char *tmp;
+ +
+ tmp = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1); + tmp = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1);
+ selinux_done_editing (FM_PROPERTIES_WINDOW (cb_data), tmp); + selinux_done_editing (NAUTILUS_PROPERTIES_WINDOW (cb_data), tmp);
+ g_free (tmp); + g_free (tmp);
+ } + }
+ +
@ -966,10 +981,10 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+ char *tmp; + char *tmp;
+ +
+ g_assert (NAUTILUS_IS_ENTRY (entry)); + g_assert (NAUTILUS_IS_ENTRY (entry));
+ g_assert (FM_IS_PROPERTIES_WINDOW (cb_data)); + g_assert (NAUTILUS_IS_PROPERTIES_WINDOW (cb_data));
+ +
+ tmp = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1); + tmp = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1);
+ selinux_done_editing (FM_PROPERTIES_WINDOW (cb_data), tmp); + selinux_done_editing (NAUTILUS_PROPERTIES_WINDOW (cb_data), tmp);
+ g_free (tmp); + g_free (tmp);
+ +
+ nautilus_entry_select_all_at_idle (entry); + nautilus_entry_select_all_at_idle (entry);
@ -989,7 +1004,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+ GtkTreeModel *model; + GtkTreeModel *model;
+ +
+ g_assert (GTK_IS_COMBO_BOX (comb)); + g_assert (GTK_IS_COMBO_BOX (comb));
+ g_assert (FM_IS_PROPERTIES_WINDOW (cb_data)); + g_assert (NAUTILUS_IS_PROPERTIES_WINDOW (cb_data));
+ +
+ if (!gtk_combo_box_get_active_iter (comb, &iter)) { + if (!gtk_combo_box_get_active_iter (comb, &iter)) {
+ return; + return;
@ -1007,7 +1022,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+ tmp = g_strjoin (":", attr_u, attr_r, cntx_type, attr_s, NULL); + tmp = g_strjoin (":", attr_u, attr_r, cntx_type, attr_s, NULL);
+ g_free (orig_type); + g_free (orig_type);
+ +
+ selinux_done_editing (FM_PROPERTIES_WINDOW (cb_data), tmp); + selinux_done_editing (NAUTILUS_PROPERTIES_WINDOW (cb_data), tmp);
+ g_free (tmp); + g_free (tmp);
+} +}
+ +
@ -1147,7 +1162,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+ dattr_t = NULL; + dattr_t = NULL;
+ } + }
+ +
+ if (attr_t && gtk_widget_get_state (entry)) { + if (attr_t && gtk_widget_get_state (GTK_WIDGET (entry))) {
+ /* highlight just the type to the end, so we can easily change it + /* highlight just the type to the end, so we can easily change it
+ * FIXME: we also highlight any Sensitivity/MCS but completion will + * FIXME: we also highlight any Sensitivity/MCS but completion will
+ * let people put it back, and that's the only way we get completion + * let people put it back, and that's the only way we get completion
@ -1383,7 +1398,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+} +}
+ +
+static void +static void
+attach_selinux_edit_field (FMPropertiesWindow *window, +attach_selinux_edit_field (NautilusPropertiesWindow *window,
+ GtkTable *table, + GtkTable *table,
+ int row, + int row,
+ int column, + int column,
@ -1445,7 +1460,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+} +}
+ +
+static void +static void
+attach_selinux_popup_field (FMPropertiesWindow *window, +attach_selinux_popup_field (NautilusPropertiesWindow *window,
+ GtkTable *table, + GtkTable *table,
+ int row, + int row,
+ int column, + int column,
@ -1522,15 +1537,15 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+#endif +#endif
+ +
static GtkWidget* static GtkWidget*
attach_ellipsizing_value_field (FMPropertiesWindow *window, attach_ellipsizing_value_field (NautilusPropertiesWindow *window,
GtkTable *table, GtkTable *table,
@@ -2302,6 +3280,37 @@ append_title_value_pair (FMPropertiesWin @@ -2303,6 +3278,37 @@ append_title_value_pair (NautilusPropertiesWindow *window,
return last_row; return last_row;
} }
+#ifdef HAVE_SELINUX +#ifdef HAVE_SELINUX
+static guint +static guint
+append_title_selinux_edit_pair (FMPropertiesWindow *window, +append_title_selinux_edit_pair (NautilusPropertiesWindow *window,
+ GtkTable *table, + GtkTable *table,
+ const char *title, + const char *title,
+ const char *file_attribute_name, + const char *file_attribute_name,
@ -1560,13 +1575,13 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
+#endif +#endif
+ +
static guint static guint
append_title_and_ellipsizing_value (FMPropertiesWindow *window, append_title_and_ellipsizing_value (NautilusPropertiesWindow *window,
GtkTable *table, GtkTable *table,
@@ -3227,31 +4236,6 @@ files_has_file (FMPropertiesWindow *wind @@ -3228,31 +4234,6 @@ files_has_file (NautilusPropertiesWindow *window)
} }
static void static void
-start_long_operation (FMPropertiesWindow *window) -start_long_operation (NautilusPropertiesWindow *window)
-{ -{
- if (window->details->long_operation_underway == 0) { - if (window->details->long_operation_underway == 0) {
- /* start long operation */ - /* start long operation */
@ -1580,7 +1595,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
-} -}
- -
-static void -static void
-end_long_operation (FMPropertiesWindow *window) -end_long_operation (NautilusPropertiesWindow *window)
-{ -{
- if (gtk_widget_get_window (GTK_WIDGET (window)) != NULL && - if (gtk_widget_get_window (GTK_WIDGET (window)) != NULL &&
- window->details->long_operation_underway == 1) { - window->details->long_operation_underway == 1) {
@ -1594,7 +1609,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
permission_change_callback (NautilusFile *file, permission_change_callback (NautilusFile *file,
GFile *res_loc, GFile *res_loc,
GError *error, GError *error,
@@ -4034,39 +5018,6 @@ append_special_execution_flags (FMProper @@ -4035,39 +5016,6 @@ append_special_execution_flags (NautilusPropertiesWindow *window, GtkTable *tabl
gtk_table_set_row_spacing (table, nrows - 1, 18); gtk_table_set_row_spacing (table, nrows - 1, 18);
} }
@ -1634,7 +1649,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
static GHashTable * static GHashTable *
get_initial_permissions (GList *file_list) get_initial_permissions (GList *file_list)
@@ -4414,7 +5365,9 @@ apply_recursive_clicked (GtkWidget *recu @@ -4415,7 +5363,9 @@ apply_recursive_clicked (GtkWidget *recursive_button,
guint32 file_permission, file_permission_mask; guint32 file_permission, file_permission_mask;
guint32 dir_permission, dir_permission_mask; guint32 dir_permission, dir_permission_mask;
guint32 vfs_mask, vfs_new_perm, p; guint32 vfs_mask, vfs_new_perm, p;
@ -1645,7 +1660,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
gboolean active, is_folder, is_special, use_original; gboolean active, is_folder, is_special, use_original;
GList *l; GList *l;
GtkTreeModel *model; GtkTreeModel *model;
@@ -4458,9 +5411,9 @@ apply_recursive_clicked (GtkWidget *recu @@ -4459,9 +5409,9 @@ apply_recursive_clicked (GtkWidget *recursive_button,
} }
/* Simple mode, minus exec checkbox */ /* Simple mode, minus exec checkbox */
for (l = window->details->permission_combos; l != NULL; l = l->next) { for (l = window->details->permission_combos; l != NULL; l = l->next) {
@ -1657,7 +1672,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
continue; continue;
} }
@@ -4468,7 +5421,7 @@ apply_recursive_clicked (GtkWidget *recu @@ -4469,7 +5419,7 @@ apply_recursive_clicked (GtkWidget *recursive_button,
is_folder = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (combo), is_folder = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (combo),
"is-folder")); "is-folder"));
@ -1666,7 +1681,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
gtk_tree_model_get (model, &iter, 1, &new_perm, 2, &use_original, -1); gtk_tree_model_get (model, &iter, 1, &new_perm, 2, &use_original, -1);
if (use_original) { if (use_original) {
continue; continue;
@@ -4491,12 +5444,53 @@ apply_recursive_clicked (GtkWidget *recu @@ -4492,12 +5442,53 @@ apply_recursive_clicked (GtkWidget *recursive_button,
} }
} }
@ -1720,7 +1735,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
if (nautilus_file_is_directory (file) && if (nautilus_file_is_directory (file) &&
nautilus_file_can_set_permissions (file)) { nautilus_file_can_set_permissions (file)) {
uri = nautilus_file_get_uri (file); uri = nautilus_file_get_uri (file);
@@ -4507,11 +5501,13 @@ apply_recursive_clicked (GtkWidget *recu @@ -4508,11 +5499,13 @@ apply_recursive_clicked (GtkWidget *recursive_button,
file_permission_mask, file_permission_mask,
dir_permission, dir_permission,
dir_permission_mask, dir_permission_mask,
@ -1734,7 +1749,7 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
} }
static void static void
@@ -4562,10 +5558,16 @@ create_permissions_page (FMPropertiesWin @@ -4563,10 +5556,16 @@ create_permissions_page (NautilusPropertiesWindow *window)
gtk_table_set_row_spacing (page_table, nrows - 1, 18); gtk_table_set_row_spacing (page_table, nrows - 1, 18);
#ifdef HAVE_SELINUX #ifdef HAVE_SELINUX
@ -1755,3 +1770,6 @@ diff -up nautilus-2.91.6/src/file-manager/fm-properties-window.c.selinux nautilu
#endif #endif
append_title_value_pair append_title_value_pair
(window, page_table, _("Last changed:"), (window, page_table, _("Last changed:"),
--
1.7.3.5

View File

@ -59,7 +59,7 @@ Obsoletes: eel2 < 2.26.0-3
Provides: eel2 = 2.26.0-3 Provides: eel2 = 2.26.0-3
# Some changes to default config # Some changes to default config
Patch4: nautilus-selinux.patch Patch4: nautilus-2.91.8-selinux.patch
Patch7: rtl-fix.patch Patch7: rtl-fix.patch
#Patch8: nautilus-2.22.1-hide-white-screen.patch #Patch8: nautilus-2.22.1-hide-white-screen.patch