Author: stephan
Date: 2008-06-29 21:29:20 +0000 (Sun, 29 Jun 2008)
New Revision: 27186

Modified:
   xfconf/trunk/common/xfconf-types.c
   xfconf/trunk/xfconf-query/main.c
   xfconf/trunk/xfconf/xfconf-channel.c
   xfconf/trunk/xfconf/xfconf.c
   xfconf/trunk/xfconfd/main.c
   xfconf/trunk/xfconfd/xfconf-backend-perchannel-xml.c
   xfconf/trunk/xfsettingsd/registry.c
Log:
Applied patch from Nick (Bug #4184)
Fixes compiler-warnings
Fixes XCursor Xrdb issue



Modified: xfconf/trunk/common/xfconf-types.c
===================================================================
--- xfconf/trunk/common/xfconf-types.c  2008-06-29 21:13:45 UTC (rev 27185)
+++ xfconf/trunk/common/xfconf-types.c  2008-06-29 21:29:20 UTC (rev 27186)
@@ -86,7 +86,7 @@
         }
         xfconf_g_value_set_uint16(dest_value, (guint16)dest);
     } else if(G_VALUE_TYPE(dest_value) == XFCONF_TYPE_INT16) {
-        if(dest > SHRT_MAX || dest < SHRT_MIN) {
+        if(dest > (guint64) SHRT_MAX || dest < (guint64) SHRT_MIN) {
             g_warning("Converting type \"%s\" to \"%s\" results in overflow",
                       G_VALUE_TYPE_NAME(src_value),
                       G_VALUE_TYPE_NAME(dest_value));

Modified: xfconf/trunk/xfconf/xfconf-channel.c
===================================================================
--- xfconf/trunk/xfconf/xfconf-channel.c        2008-06-29 21:13:45 UTC (rev 
27185)
+++ xfconf/trunk/xfconf/xfconf-channel.c        2008-06-29 21:29:20 UTC (rev 
27186)
@@ -309,7 +309,7 @@
 xfconf_fixup_16bit_ints(GPtrArray *arr)
 {
     GPtrArray *arr_new = NULL;
-    gint i;
+    guint i;
 
     for(i = 0; i < arr->len; ++i) {
         GValue *v = g_ptr_array_index(arr, i);
@@ -494,7 +494,7 @@
 {
     gchar **values = NULL;
     GPtrArray *arr;
-    gint i;
+    guint i;
 
     g_return_val_if_fail(XFCONF_IS_CHANNEL(channel) && property, NULL);
 
@@ -1073,7 +1073,7 @@
     GPtrArray *arr = NULL;
     GType cur_value_type;
     GValue *val;
-    gint i;
+    guint i;
 
     arr = xfconf_channel_get_arrayv(channel, property);
     if(!arr)
@@ -1528,7 +1528,7 @@
 {
     GType cur_member_type;
     GType *member_types;
-    gint n_members;
+    guint n_members;
     gsize cur_size = 5;  /* FIXME: arbitrary... */
     gboolean ret;
 
@@ -1772,7 +1772,7 @@
 {
     GType cur_member_type;
     GType *member_types;
-    gint n_members;
+    guint n_members;
     gsize cur_size = 5;  /* FIXME: arbitrary... */
     gboolean ret;
 

Modified: xfconf/trunk/xfconf/xfconf.c
===================================================================
--- xfconf/trunk/xfconf/xfconf.c        2008-06-29 21:13:45 UTC (rev 27185)
+++ xfconf/trunk/xfconf/xfconf.c        2008-06-29 21:29:20 UTC (rev 27186)
@@ -238,7 +238,7 @@
 void
 xfconf_array_free(GPtrArray *arr)
 {
-    gint i;
+    guint i;
     
     if(!arr)
         return;

Modified: xfconf/trunk/xfconf-query/main.c
===================================================================
--- xfconf/trunk/xfconf-query/main.c    2008-06-29 21:13:45 UTC (rev 27185)
+++ xfconf/trunk/xfconf-query/main.c    2008-06-29 21:29:20 UTC (rev 27186)
@@ -59,7 +59,7 @@
     gint *size = user_data;
     gchar *property_name = (gchar *)key;
 
-    if (strlen(property_name) > *size)
+    if ((gint) strlen(property_name) > *size)
         *size = strlen(property_name);
 
 }
@@ -208,7 +208,7 @@
             else
             {
                 GPtrArray *arr = g_value_get_boxed(&value);
-                gint i;
+                guint i;
 
                 g_print(_("Value is an array with %d items:\n\n"), arr->len);
 

Modified: xfconf/trunk/xfconfd/main.c
===================================================================
--- xfconf/trunk/xfconfd/main.c 2008-06-29 21:13:45 UTC (rev 27185)
+++ xfconf/trunk/xfconfd/main.c 2008-06-29 21:29:20 UTC (rev 27186)
@@ -62,6 +62,7 @@
 sighandler(int sig)
 {
     guint32 sigstate;
+    gint avoid_gcc_warning;
     
     switch(sig) {
         case SIGUSR1:
@@ -73,7 +74,7 @@
             break;
     }
     
-    write(signal_pipe[1], &sigstate, sizeof(sigstate));
+    avoid_gcc_warning = write(signal_pipe[1], &sigstate, sizeof(sigstate));
 }
 
 static gboolean

Modified: xfconf/trunk/xfconfd/xfconf-backend-perchannel-xml.c
===================================================================
--- xfconf/trunk/xfconfd/xfconf-backend-perchannel-xml.c        2008-06-29 
21:13:45 UTC (rev 27185)
+++ xfconf/trunk/xfconfd/xfconf-backend-perchannel-xml.c        2008-06-29 
21:29:20 UTC (rev 27186)
@@ -882,7 +882,7 @@
                 
                 /* compare versions */
                 p = strstr(version, ".");
-                maj_ver_len = p ? p - version : strlen(version);
+                maj_ver_len = p ? p - version : (gint) strlen(version);
                 if(maj_ver_len != strlen(FILE_VERSION_MAJOR)
                    || strncmp(version, FILE_VERSION_MAJOR, maj_ver_len))
                 {
@@ -1478,7 +1478,7 @@
                 *is_array = TRUE;
             } else if(XFCONF_TYPE_G_VALUE_ARRAY == G_VALUE_TYPE(value)) {
                 GPtrArray *arr;
-                gint i;
+                guint i;
                 
                 if(is_array_value)
                     return FALSE;
@@ -1533,7 +1533,7 @@
     GNode *child;
     gboolean is_array = FALSE;
     
-    if(depth * 2 > sizeof(spaces) + 1)
+    if(depth * 2 > (gint) sizeof(spaces) + 1)
         depth = sizeof(spaces) / 2 - 1;
     
     memset(spaces, ' ', depth * 2);

Modified: xfconf/trunk/xfsettingsd/registry.c
===================================================================
--- xfconf/trunk/xfsettingsd/registry.c 2008-06-29 21:13:45 UTC (rev 27185)
+++ xfconf/trunk/xfsettingsd/registry.c 2008-06-29 21:29:20 UTC (rev 27186)
@@ -263,75 +263,115 @@
         }
     }
     xsettings_registry_notify(registry);
-    if (!strncmp(name, "/Xft", 4))
+    if (!strncmp(name, "/Xft", 4) || !strncmp(name, "/Gtk/CursorTheme", 16))
         xsettings_registry_store_xrdb(registry);
 }
 
 void
 xsettings_registry_store_xrdb(XSettingsRegistry *registry)
 {
-    gchar *cmd;
-    FILE *fp;
-    gchar *path = xfce_resource_save_location(XFCE_RESOURCE_CONFIG,
-                                       "xfce4" G_DIR_SEPARATOR_S "Xft.xrdb",
-                                       TRUE);
+    gchar    *filename;
+    GError   *error = NULL;
+    GString  *string;
+    gchar    *command, *contents;
+    gboolean  result = TRUE;
 
-    if (G_LIKELY (path != NULL))
+    /* store the xft properties */
+    filename = xfce_resource_save_location(XFCE_RESOURCE_CONFIG, "xfce4" 
G_DIR_SEPARATOR_S "Xft.xrdb", TRUE);
+    if (G_LIKELY (filename))
     {
-    
-        if(!g_file_test(path, G_FILE_TEST_IS_REGULAR))
-        {
-        }
+        /* create file contents */
+        string = g_string_sized_new (80);
+        g_string_append_printf (string, "Xft.antialias: %d\n"
+                                        "Xft.hinting: %d\n"
+                                        "Xft.rgba: %s\n",
+                                        g_value_get_int 
(&properties[XSETTING_ENTRY_XFT_ANTIALIAS].value),
+                                        g_value_get_int 
(&properties[XSETTING_ENTRY_XFT_HINTING].value),
+                                        g_value_get_string 
(&properties[XSETTING_ENTRY_XFT_RGBA].value));
+        
+        if (g_value_get_int (&properties[XSETTING_ENTRY_XFT_HINTING].value))
+            g_string_append_printf (string, "Xft.hintstyle: %s\n", 
g_value_get_string (&properties[XSETTING_ENTRY_XFT_HINTSTYLE].value));
+        else
+            string = g_string_append (string, "Xft.hintstyle: hintnone\n");
+            
+        if (g_value_get_int (&properties[XSETTING_ENTRY_XFT_DPI].value) > 0)
+            g_string_append_printf (string, "Xft.dpi: %d\n", g_value_get_int 
(&properties[XSETTING_ENTRY_XFT_DPI].value));
 
-        fp = fopen(path, "w");
-        if(fp != NULL)
+        /* try to write the file contents */
+        if (G_LIKELY (g_file_set_contents (filename, string->str, -1, &error)))
         {
-            fprintf(fp, "Xft.antialias: %d\n", 
g_value_get_int(&properties[XSETTING_ENTRY_XFT_ANTIALIAS].value));
-            fprintf(fp, "Xft.hinting: %d\n", 
g_value_get_int(&properties[XSETTING_ENTRY_XFT_HINTING].value));
-            if(g_value_get_int(&properties[XSETTING_ENTRY_XFT_HINTING].value))
-                fprintf(fp, "Xft.hintstyle: %s\n", 
g_value_get_string(&properties[XSETTING_ENTRY_XFT_HINTSTYLE].value));
-            else
-                fprintf(fp, "Xft.hintstyle: hintnone\n");
-            fprintf(fp, "Xft.rgba: %s\n", 
g_value_get_string(&properties[XSETTING_ENTRY_XFT_RGBA].value));
-            if(g_value_get_int (&properties[XSETTING_ENTRY_XFT_DPI].value) > 0)
-                fprintf(fp, "Xft.dpi: %d\n", 
g_value_get_int(&properties[XSETTING_ENTRY_XFT_DPI].value));
-            fclose(fp);
-
-            /* run xrdb to merge the new settings */
-            cmd = g_strdup_printf("xrdb -nocpp -merge \"%s\"", path);
-            g_spawn_command_line_async(cmd, NULL);
-            g_free(cmd);
+            /* create command to merge with the x resource database */
+            command = g_strdup_printf ("xrdb -nocpp -merge \"%s\"", filename);
+            result = g_spawn_command_line_async (command, &error);
+            g_free (command);
             
-            if(!g_value_get_int(&properties[XSETTING_ENTRY_XFT_DPI].value)) {
-                /* filter out Xft.dpi from xrdb */
-                g_spawn_command_line_async("sh -c \"xrdb -query | grep -i -v 
'^Xft.dpi:' | xrdb\"",
-                                           NULL);
+            /* remove dpi from the database if not set */
+            if (result && g_value_get_int 
(&properties[XSETTING_ENTRY_XFT_DPI].value) == 0)
+            {
+                command = g_strdup ("sh -c \"xrdb -query | grep -i -v 
'^Xft.dpi:' | xrdb\"");
+                result = g_spawn_command_line_async (command, &error);
+                g_free (command);
             }
         }
-        g_free(path);
+        else
+        {
+            /* print error */
+            g_critical ("Failed to write to '%s': %s", filename, 
error->message);
+            g_error_free (error);
+        }
+        
+        /* cleanup */
+        g_free (filename);
+        g_string_free (string, TRUE);
+        
+        /* leave when there where spawn problems */
+        if (result == FALSE)
+            goto spawn_error;
     }
-    path = xfce_resource_save_location(XFCE_RESOURCE_CONFIG,
-                                       "xfce4" G_DIR_SEPARATOR_S 
"Xcursor.xrdb",
-                                       TRUE);
-    if (G_LIKELY (path != NULL))
+    
+    /* store cursor settings */
+    filename = xfce_resource_save_location(XFCE_RESOURCE_CONFIG, "xfce4" 
G_DIR_SEPARATOR_S "Xcursor.xrdb", TRUE);
+    if (G_LIKELY (filename))
     {
-    
-        if(!g_file_test(path, G_FILE_TEST_IS_REGULAR))
+        /* build file contents */
+        contents = g_strdup_printf ("Xcursor.theme: %s\n"
+                                    "Xcursor.theme_core: true\n"
+                                    "Xcursor.size: %d\n",
+                                    g_value_get_string 
(&properties[XSETTING_ENTRY_GTK_CURSORTHEMENAME].value),
+                                    g_value_get_int 
(&properties[XSETTING_ENTRY_GTK_CURSORTHEMESIZE].value));
+        
+        /* write the contents to the file */
+        if (G_LIKELY (g_file_set_contents (filename, contents, -1, &error)))
         {
+            /* create command to merge with the x resource database */
+            command = g_strdup_printf ("xrdb -nocpp -merge \"%s\"", filename);
+            result = g_spawn_command_line_async (command, &error);
+            g_free (command);
         }
-
-        fp = fopen(path, "w");
-        if(fp != NULL)
+        else
         {
-            fprintf(fp, "Xcursor.theme: %s\n"
-                        "Xcursor.theme_core: true\n"
-                        "Xcursor.size: %d\n",
-                        g_value_get_string 
(&properties[XSETTING_ENTRY_GTK_CURSORTHEMENAME].value),
-                        g_value_get_int 
(&properties[XSETTING_ENTRY_GTK_CURSORTHEMESIZE].value));
-            fclose(fp);
+            /* print error */
+            g_critical ("Failed to write to '%s': %s", filename, 
error->message);
+            g_error_free (error);
         }
-        g_free(path);
+        
+        /* cleanup */
+        g_free (filename);
+        g_free (contents);
+        
+        /* leave when there where spawn problems */
+        if (result == FALSE)
+            goto spawn_error;
     }
+    
+    /* leave */
+    return;
+    
+    spawn_error:
+    
+    /* print warning */
+    g_critical ("Failed to spawn xrdb: %s", error->message);
+    g_free (error);
 }
 
 void

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to