File libfm-1.2.3-Fix-SF937.patch of Package libfm

From cc4782b9ae28c7aa77997662b4efa02c1cdebc44 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
Date: Sat, 9 May 2015 16:27:32 +0300
Subject: [PATCH] [SF#937] Fix wrong treating files like ".purple" as having
 extension "purple".

---
 NEWS                      |  2 ++
 src/gtk/fm-folder-model.c | 20 +++++++++++++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/NEWS b/NEWS
index 822628b..a8ee441 100644
--- a/NEWS
+++ b/NEWS
@@ -16,6 +16,8 @@
 * Returned back the workaround on thumbnailers which don't save any of
     Thumb::MTime or Thumb::URI in the thumbnail.
 
+* Fixed wrong treating files like ".purple" as having extension "purple".
+
 
 Changes on 1.2.3 since 1.2.2:
 
diff --git a/src/gtk/fm-folder-model.c b/src/gtk/fm-folder-model.c
index 14ea780..b97b0a7 100644
--- a/src/gtk/fm-folder-model.c
+++ b/src/gtk/fm-folder-model.c
@@ -2,7 +2,7 @@
  *      fm-folder-model.c
  *
  *      Copyright 2009 - 2012 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
- *      Copyright 2012-2014 Andriy Grytsenko (LStranger) <andrej@rep.kiev.ua>
+ *      Copyright 2012-2015 Andriy Grytsenko (LStranger) <andrej@rep.kiev.ua>
  *
  *      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
@@ -827,8 +827,11 @@ static void fm_folder_model_get_value(GtkTreeModel *tree_model,
         }
     case FM_FOLDER_MODEL_COL_EXT:
         {
-            const char *str = strrchr(fm_file_info_get_disp_name(info), '.');
-            if (str)
+            const char *name = fm_file_info_get_disp_name(info);
+            const char *str = strrchr(name, '.');
+            if (str == name)
+                str = NULL;
+            else if (str)
                 str++;
             g_value_set_string(value, str);
         }
@@ -999,6 +1002,7 @@ static gint fm_folder_model_compare(gconstpointer item1,
     FmFileInfo* file2 = ((FmFolderItem*)item2)->inf;
     const char* key1;
     const char* key2;
+    const char *name;
     goffset diff;
     int ret = 0;
 
@@ -1082,8 +1086,14 @@ _main_sort:
         }
         break;
     case FM_FOLDER_MODEL_COL_EXT:
-        key1 = strrchr(fm_file_info_get_disp_name(file1), '.');
-        key2 = strrchr(fm_file_info_get_disp_name(file2), '.');
+        name = fm_file_info_get_disp_name(file1);
+        key1 = strrchr(name, '.');
+        if (key1 == name)
+            key1 = NULL;
+        name = fm_file_info_get_disp_name(file2);
+        key2 = strrchr(name, '.');
+        if (key2 == name)
+            key2 = NULL;
         ret = g_strcmp0(key1, key2);
         if (ret == 0)
             goto _sort_by_name;
-- 
2.1.4

openSUSE Build Service is sponsored by