diff options
Diffstat (limited to 'network/NetworkManager/patches/keyfile-ignore-temporary-files-bgo-602868.patch')
-rw-r--r-- | network/NetworkManager/patches/keyfile-ignore-temporary-files-bgo-602868.patch | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/network/NetworkManager/patches/keyfile-ignore-temporary-files-bgo-602868.patch b/network/NetworkManager/patches/keyfile-ignore-temporary-files-bgo-602868.patch deleted file mode 100644 index c3bc95d11d..0000000000 --- a/network/NetworkManager/patches/keyfile-ignore-temporary-files-bgo-602868.patch +++ /dev/null @@ -1,208 +0,0 @@ -From 0376f6b1ceda64e279e64bfb37ab67f0c36478b6 Mon Sep 17 00:00:00 2001 -From: Jiří Klimeš <jklimes@redhat.com> -Date: Wed, 10 Nov 2010 15:21:25 +0000 -Subject: keyfile: ignore temporary files (bgo #602868) - -Ignore temporary files created by vim editor and temporary files created -internally by g_file_set_contents() (mkstemp()) when writing connections. ---- -diff --git a/system-settings/plugins/keyfile/Makefile.am b/system-settings/plugins/keyfile/Makefile.am -index c519adc..128775e 100644 ---- a/system-settings/plugins/keyfile/Makefile.am -+++ b/system-settings/plugins/keyfile/Makefile.am -@@ -16,6 +16,8 @@ libkeyfile_io_la_SOURCES = \ - writer.c \ - writer.h \ - errors.c \ -+ utils.c \ -+ utils.h \ - common.h - - libkeyfile_io_la_CPPFLAGS = \ -diff --git a/system-settings/plugins/keyfile/common.h b/system-settings/plugins/keyfile/common.h -index 7d94a70..6c8f9ce 100644 ---- a/system-settings/plugins/keyfile/common.h -+++ b/system-settings/plugins/keyfile/common.h -@@ -23,6 +23,9 @@ - - #include <glib.h> - -+#define SWP_TAG ".swp" -+#define SWPX_TAG ".swpx" -+ - #define KEYFILE_PLUGIN_NAME "keyfile" - #define KEYFILE_PLUGIN_INFO "(c) 2007 - 2010 Red Hat, Inc. To report bugs please use the NetworkManager mailing list." - -diff --git a/system-settings/plugins/keyfile/plugin.c b/system-settings/plugins/keyfile/plugin.c -index f57a4b6..5a927ce 100644 ---- a/system-settings/plugins/keyfile/plugin.c -+++ b/system-settings/plugins/keyfile/plugin.c -@@ -39,6 +39,7 @@ - #include "nm-keyfile-connection.h" - #include "writer.h" - #include "common.h" -+#include "utils.h" - - #define CONF_FILE SYSCONFDIR "/NetworkManager/NetworkManager.conf" - #define OLD_CONF_FILE SYSCONFDIR "/NetworkManager/nm-system-settings.conf" -@@ -89,6 +90,9 @@ read_connections (NMSystemConfigInterface *config) - NMKeyfileConnection *connection; - char *full_path; - -+ if (utils_should_ignore_file (item)) -+ continue; -+ - full_path = g_build_filename (KEYFILE_DIR, item, NULL); - PLUGIN_PRINT (KEYFILE_PLUGIN_NAME, "parsing %s ... ", item); - connection = nm_keyfile_connection_new (full_path, &error); -@@ -192,6 +196,11 @@ dir_changed (GFileMonitor *monitor, - GError *error = NULL; - - name = g_file_get_path (file); -+ if (utils_should_ignore_file (name)) { -+ g_free (name); -+ return; -+ } -+ - connection = g_hash_table_lookup (priv->hash, name); - - switch (event_type) { -diff --git a/system-settings/plugins/keyfile/utils.c b/system-settings/plugins/keyfile/utils.c -new file mode 100644 -index 0000000..de64f79 ---- a/dev/null -+++ b/system-settings/plugins/keyfile/utils.c -@@ -0,0 +1,97 @@ -+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -+/* NetworkManager system settings service -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License along -+ * with this program; if not, write to the Free Software Foundation, Inc., -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * (C) Copyright 2010 Red Hat, Inc. -+ */ -+ -+#include <glib.h> -+#include <stdlib.h> -+#include <string.h> -+#include "utils.h" -+ -+ -+static const char temp_letters[] = -+"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -+ -+/* -+ * Check '.[a-zA-Z0-9]{6}' file suffix used for temporary files by g_file_set_contents() (mkstemp()). -+ */ -+static gboolean -+check_mkstemp_suffix (const char *path) -+{ -+ const char *ptr; -+ -+ g_return_val_if_fail (path != NULL, FALSE); -+ -+ /* Matches *.[a-zA-Z0-9]{6} suffix of mkstemp()'s temporary files */ -+ ptr = strrchr (path, '.'); -+ if (ptr && (strspn (ptr + 1, temp_letters) == 6) && (! ptr[7])) -+ return TRUE; -+ return FALSE; -+} -+ -+static gboolean -+check_prefix (const char *base, const char *tag) -+{ -+ int len, tag_len; -+ -+ g_return_val_if_fail (base != NULL, TRUE); -+ g_return_val_if_fail (tag != NULL, TRUE); -+ -+ len = strlen (base); -+ tag_len = strlen (tag); -+ if ((len > tag_len) && !strncasecmp (base, tag, tag_len)) -+ return TRUE; -+ return FALSE; -+} -+ -+static gboolean -+check_suffix (const char *base, const char *tag) -+{ -+ int len, tag_len; -+ -+ g_return_val_if_fail (base != NULL, TRUE); -+ g_return_val_if_fail (tag != NULL, TRUE); -+ -+ len = strlen (base); -+ tag_len = strlen (tag); -+ if ((len > tag_len) && !strcasecmp (base + len - tag_len, tag)) -+ return TRUE; -+ return FALSE; -+} -+ -+gboolean -+utils_should_ignore_file (const char *filename) -+{ -+ char *base; -+ gboolean ignore = FALSE; -+ -+ g_return_val_if_fail (filename != NULL, TRUE); -+ -+ base = g_path_get_basename (filename); -+ g_return_val_if_fail (base != NULL, TRUE); -+ -+ /* Ignore files with certain patterns */ -+ if ( (check_prefix (base, ".") && check_suffix (base, SWP_TAG)) /* vim temporary files: .filename.swp */ -+ || (check_prefix (base, ".") && check_suffix (base, SWPX_TAG)) /* vim temporary files: .filename.swpx */ -+ || check_mkstemp_suffix (base)) /* temporary files created by mkstemp() */ -+ ignore = TRUE; -+ -+ g_free (base); -+ return ignore; -+} -+ -diff --git a/system-settings/plugins/keyfile/utils.h b/system-settings/plugins/keyfile/utils.h -new file mode 100644 -index 0000000..3c1a610 ---- a/dev/null -+++ b/system-settings/plugins/keyfile/utils.h -@@ -0,0 +1,30 @@ -+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -+/* NetworkManager system settings service -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License along -+ * with this program; if not, write to the Free Software Foundation, Inc., -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * (C) Copyright 2010 Red Hat, Inc. -+ */ -+ -+#ifndef _UTILS_H_ -+#define _UTILS_H_ -+ -+#include <glib.h> -+#include "common.h" -+ -+gboolean utils_should_ignore_file (const char *filename); -+ -+#endif /* _UTILS_H_ */ -+ |