SOURCES: gnome-vfs-obexftp-free-space.patch (NEW) - gnome-vfs-obex...
qrczak
qrczak at pld-linux.org
Fri Jun 15 11:11:08 CEST 2007
Author: qrczak Date: Fri Jun 15 09:11:08 2007 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- gnome-vfs-obexftp-free-space.patch: Unknown free space is no longer
reported as 0 free space; affects SE phones;
https://bugs.launchpad.net/gnome-vfs-obexftp/+bug/120214
- Release 2
---- Files affected:
SOURCES:
gnome-vfs-obexftp-free-space.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/gnome-vfs-obexftp-free-space.patch
diff -u /dev/null SOURCES/gnome-vfs-obexftp-free-space.patch:1.1
--- /dev/null Fri Jun 15 11:11:08 2007
+++ SOURCES/gnome-vfs-obexftp-free-space.patch Fri Jun 15 11:11:03 2007
@@ -0,0 +1,376 @@
+# Bazaar revision bundle v0.9
+#
+# message:
+# In the OBEX capabilities parser, record whether we've actually seen the
+# <Used> and <Free> values for each memory type, and store that in the
+# resulting OvuCapsMemory objext.
+#
+# Update the tests to handle the new API and fix the output samples to
+# match the now correct data.
+#
+# This should fix bug #120214 (Faulty reporting of free space with Sony
+# Ericsson z710).
+#
+# committer: James Henstridge <james at jamesh.id.au>
+# date: Fri 2007-06-15 14:30:15.776999950 +0800
+
+=== modified file src/obex-method.c
+--- src/obex-method.c
++++ src/obex-method.c
+@@ -1738,7 +1738,7 @@
+ caps = ovu_caps_parser_parse (caps_str, len, &gerror);
+
+ memory = ovu_caps_get_memory_type (caps, mem_type);
+- if (memory != NULL) {
++ if (memory != NULL && ovu_caps_memory_has_free (memory)) {
+ *free_space = ovu_caps_memory_get_free (memory);
+ } else {
+ result = GNOME_VFS_ERROR_NOT_SUPPORTED;
+
+=== modified file src/ovu-cap-parser.c
+--- src/ovu-cap-parser.c
++++ src/ovu-cap-parser.c
+@@ -59,7 +59,7 @@
+
+ PARSER_STATE_INBOX,
+ PARSER_STATE_SERVICE,
+-
++
+ PARSER_STATE_SKIP
+ } ParserState;
+
+@@ -72,12 +72,14 @@
+ gchar *memory_type;
+ GnomeVFSFileSize memory_free;
+ GnomeVFSFileSize memory_used;
++ gboolean memory_has_free;
++ gboolean memory_has_used;
+ gboolean memory_case_sensitive;
+
+ GError **error;
+ } ParserData;
+
+-static void cap_parser_start_node_cb (void *user_data,
++static void cap_parser_start_node_cb (void *user_data,
+ const char *node_name,
+ const char **attr);
+
+@@ -95,22 +97,22 @@
+ {
+ data->state = g_list_prepend (data->state,
+ GINT_TO_POINTER (state));
+-}
++}
+
+ static ParserState
+ cap_parser_pop_state (ParserData *data)
+ {
+ ParserState state;
+-
++
+ if (!data->state) {
+ return PARSER_STATE_INVALID;
+ }
+-
++
+ state = GPOINTER_TO_INT (data->state->data);
+ data->state = g_list_delete_link (data->state, data->state);
+
+ return state;
+-}
++}
+
+ static ParserState
+ cap_parser_peek_state (ParserData *data)
+@@ -118,7 +120,7 @@
+ if (!data->state) {
+ return PARSER_STATE_START;
+ }
+-
++
+ return GPOINTER_TO_INT (data->state->data);
+ }
+
+@@ -126,30 +128,30 @@
+ cap_parser_get_attribute_value (const char *name, const char **attr)
+ {
+ gint i = 0;
+-
++
+ while (attr[i]) {
+ if (strcmp (name, attr[i]) == 0) {
+ return attr[i + 1];
+ }
+ i += 2;
+ }
+-
++
+ return "";
+ }
+
+ static void
+-cap_parser_start_node_cb (void *user_data,
++cap_parser_start_node_cb (void *user_data,
+ const char *node_name,
+ const char **attr)
+ {
+ ParserData *data;
+ ParserState state;
+ const gchar *version;
+-
++
+ data = (ParserData *) user_data;
+-
++
+ state = cap_parser_peek_state (data);
+-
++
+ switch (state) {
+ case PARSER_STATE_START:
+ if (strcmp (node_name, "Capability") != 0) {
+@@ -188,7 +190,7 @@
+ return;
+ }
+ break;
+-
++
+ case PARSER_STATE_GENERAL:
+ if (strcmp (node_name, "Memory") == 0) {
+ cap_parser_push_state (data, PARSER_STATE_MEMORY);
+@@ -213,7 +215,7 @@
+ node_name);
+ return;
+ }
+-
++
+ break;
+
+ case PARSER_STATE_MEMORY:
+@@ -259,13 +261,13 @@
+ return;
+ }
+ break;
+-
++
+ case PARSER_STATE_INBOX:
+ case PARSER_STATE_SERVICE:
+ /* Skip these for now. */
+ cap_parser_push_state (data, PARSER_STATE_SKIP);
+ break;
+-
++
+ case PARSER_STATE_SKIP:
+ cap_parser_push_state (data, PARSER_STATE_SKIP);
+ break;
+@@ -284,6 +286,8 @@
+ data->memory_type = NULL;
+ data->memory_free = 0;
+ data->memory_used = 0;
++ data->memory_has_free = FALSE;
++ data->memory_has_used = FALSE;
+ data->memory_case_sensitive = FALSE;
+ }
+
+@@ -301,14 +305,16 @@
+ switch (state) {
+ case PARSER_STATE_INVALID:
+ return;
+-
++
+ case PARSER_STATE_MEMORY:
+ memory = ovu_caps_memory_new (data->memory_type,
+ data->memory_free,
+ data->memory_used,
++ data->memory_has_free,
++ data->memory_has_used,
+ data->memory_case_sensitive);
+-
+- data->memory_entries = g_list_prepend (data->memory_entries,
++
++ data->memory_entries = g_list_prepend (data->memory_entries,
+ memory);
+ cap_parser_reset_memory (data);
+ break;
+@@ -323,21 +329,25 @@
+ }
+
+ /* Parse a long, return -1 if input is not strictly valid or null. */
+-static glong
+-parse_long (const gchar *str)
++static GnomeVFSFileSize
++parse_long (const gchar *str, gboolean *success)
+ {
+ gchar *endptr;
+ glong l;
+
++ *success = TRUE;
++
+ if (!str) {
+- return -1;
++ *success = FALSE;
++ return 0;
+ }
+-
++
+ l = strtol (str, &endptr, 10);
+- if (endptr[0] != '\0') {
+- l = -1;
+- }
+-
++ if (endptr[0] != '\0' || l < 0) {
++ *success = FALSE;
++ l = 0;
++ }
++
+ return l;
+ }
+
+@@ -362,10 +372,10 @@
+ data->memory_type = g_strdup (tmp);
+ break;
+ case PARSER_STATE_MEMORY_FREE:
+- data->memory_free = parse_long (tmp);
++ data->memory_free = parse_long (tmp, &data->memory_has_free);
+ break;
+ case PARSER_STATE_MEMORY_USED:
+- data->memory_used = parse_long (tmp);
++ data->memory_used = parse_long (tmp, &data->memory_has_used);
+ break;
+
+ default:
+@@ -385,7 +395,7 @@
+ XML_SetElementHandler (parser,
+ cap_parser_start_node_cb,
+ cap_parser_end_node_cb);
+-
++
+ XML_SetCharacterDataHandler (parser, cap_parser_text_cb);
+
+ XML_SetUserData (parser, data);
+@@ -397,12 +407,12 @@
+ cap_parser_free (ParserData *data, gboolean free_data)
+ {
+ cap_parser_reset_memory (data);
+-
++
+ if (free_data) {
+ g_list_foreach (data->memory_entries,
+ (GFunc) ovu_caps_memory_free, NULL);
+ }
+-
++
+ g_free (data);
+ }
+
+
+=== modified file src/ovu-caps.c
+--- src/ovu-caps.c
++++ src/ovu-caps.c
+@@ -37,9 +37,11 @@
+
+ struct _OvuCapsMemory {
+ gchar *type;
++ GnomeVFSFileSize free;
+ GnomeVFSFileSize used;
+- GnomeVFSFileSize free;
+- gboolean case_sensitive;
++ guint has_free : 1;
++ guint has_used : 1;
++ guint case_sensitive : 1;
+ };
+
+
+@@ -47,15 +49,19 @@
+ ovu_caps_memory_new (const gchar *type,
+ GnomeVFSFileSize free,
+ GnomeVFSFileSize used,
++ gboolean has_free,
++ gboolean has_used,
+ gboolean case_sensitive)
+ {
+ OvuCapsMemory *memory;
+-
++
+ memory = g_new0 (OvuCapsMemory, 1);
+
+ memory->type = g_strdup (type);
+ memory->free = free;
+ memory->used = used;
++ memory->has_free = has_free;
++ memory->has_used = has_used;
+ memory->case_sensitive = case_sensitive;
+
+ return memory;
+@@ -104,7 +110,7 @@
+ {
+ g_list_foreach (caps->memory_entries,
+ (GFunc) ovu_caps_memory_free, NULL);
+-
++
+ g_list_free (caps->memory_entries);
+
+ g_free (caps);
+@@ -156,6 +162,18 @@
+ }
+
+ gboolean
++ovu_caps_memory_has_used (OvuCapsMemory *memory)
++{
++ return memory->has_used;
++}
++
++gboolean
++ovu_caps_memory_has_free (OvuCapsMemory *memory)
++{
++ return memory->has_free;
++}
++
++gboolean
+ ovu_caps_memory_get_case_sensitive (OvuCapsMemory *memory)
+ {
+ return memory->case_sensitive;
+
+=== modified file src/ovu-caps.h
+--- src/ovu-caps.h
++++ src/ovu-caps.h
+@@ -27,21 +27,25 @@
+ typedef struct _OvuCaps OvuCaps;
+ typedef struct _OvuCapsMemory OvuCapsMemory;
+
+-GList * ovu_caps_get_memory_entries (OvuCaps *caps);
+-OvuCapsMemory *ovu_caps_get_memory_type (OvuCaps *caps,
+- const gchar *mem_type);
+-void ovu_caps_free (OvuCaps *caps);
+-OvuCapsMemory * ovu_caps_memory_new (const gchar *type,
+- GnomeVFSFileSize free,
+- GnomeVFSFileSize used,
+- gboolean case_sensitive);
+-void ovu_caps_memory_free (OvuCapsMemory *memory);
+-gboolean ovu_caps_memory_equal (OvuCapsMemory *m1,
+- OvuCapsMemory *m2);
+-const gchar * ovu_caps_memory_get_type (OvuCapsMemory *memory);
+-GnomeVFSFileSize ovu_caps_memory_get_used (OvuCapsMemory *memory);
+-GnomeVFSFileSize ovu_caps_memory_get_free (OvuCapsMemory *memory);
+-gboolean ovu_caps_memory_get_case_sensitive (OvuCapsMemory *memory);
++GList * ovu_caps_get_memory_entries (OvuCaps *caps);
++OvuCapsMemory *ovu_caps_get_memory_type (OvuCaps *caps,
++ const gchar *mem_type);
++void ovu_caps_free (OvuCaps *caps);
++OvuCapsMemory * ovu_caps_memory_new (const gchar *type,
++ GnomeVFSFileSize free,
++ GnomeVFSFileSize used,
++ gboolean has_free,
++ gboolean has_used,
++ gboolean case_sensitive);
++void ovu_caps_memory_free (OvuCapsMemory *memory);
++gboolean ovu_caps_memory_equal (OvuCapsMemory *m1,
++ OvuCapsMemory *m2);
++const gchar * ovu_caps_memory_get_type (OvuCapsMemory *memory);
++GnomeVFSFileSize ovu_caps_memory_get_used (OvuCapsMemory *memory);
++GnomeVFSFileSize ovu_caps_memory_get_free (OvuCapsMemory *memory);
++gboolean ovu_caps_memory_has_used (OvuCapsMemory *memory);
++gboolean ovu_caps_memory_has_free (OvuCapsMemory *memory);
++gboolean ovu_caps_memory_get_case_sensitive (OvuCapsMemory *memory);
+
+
+ #endif /* __OVU_CAPS_H__ */
================================================================
More information about the pld-cvs-commit
mailing list