void test_int_set_serialize_failure_noncanon(void) { GOutputStream *stream = g_memory_output_stream_new(NULL, 0, g_realloc, g_free); GDataOutputStream *datastream = g_data_output_stream_new(stream); g_data_output_stream_set_byte_order(datastream, G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN); data_stream_put_string0(datastream, "GwyIntSet", NULL, NULL); g_data_output_stream_put_uint64(datastream, 0, NULL, NULL); guint len = 8; data_stream_put_string0(datastream, "ranges", NULL, NULL); g_data_output_stream_put_byte(datastream, GWY_SERIALIZABLE_INT32_ARRAY, NULL, NULL); g_data_output_stream_put_uint64(datastream, len, NULL, NULL); for (guint i = 0; i < len; i++) g_data_output_stream_put_uint32(datastream, i/3, NULL, NULL); GwyErrorList *error_list = NULL; gwy_error_list_add(&error_list, GWY_DESERIALIZE_ERROR, GWY_DESERIALIZE_ERROR_INVALID, "GwyIntSet ranges are not in canonical form."); deserialize_assert_failure(G_MEMORY_OUTPUT_STREAM(stream), error_list); gwy_error_list_clear(&error_list); g_object_unref(datastream); g_object_unref(stream); }
void test_int_set_serialize_failure_odd(void) { GOutputStream *stream = g_memory_output_stream_new(NULL, 0, g_realloc, g_free); GDataOutputStream *datastream = g_data_output_stream_new(stream); g_data_output_stream_set_byte_order(datastream, G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN); data_stream_put_string0(datastream, "GwyIntSet", NULL, NULL); g_data_output_stream_put_uint64(datastream, 0, NULL, NULL); guint len = 5; data_stream_put_string0(datastream, "ranges", NULL, NULL); g_data_output_stream_put_byte(datastream, GWY_SERIALIZABLE_INT32_ARRAY, NULL, NULL); g_data_output_stream_put_uint64(datastream, len, NULL, NULL); for (guint i = 0; i < len; i++) g_data_output_stream_put_uint32(datastream, i, NULL, NULL); GwyErrorList *error_list = NULL; gwy_error_list_add(&error_list, GWY_DESERIALIZE_ERROR, GWY_DESERIALIZE_ERROR_INVALID, "Data length of ‘GwyIntSet’ is %lu which is not " "a multiple of 2.", (gulong)len); deserialize_assert_failure(G_MEMORY_OUTPUT_STREAM(stream), error_list); gwy_error_list_clear(&error_list); g_object_unref(datastream); g_object_unref(stream); }
char * gvfs_file_info_marshal (GFileInfo *info, gsize *size) { GOutputStream *memstream; GDataOutputStream *out; GFileAttributeType type; GFileAttributeStatus status; GObject *obj; char **attrs, *attr; char *data; int i; memstream = g_memory_output_stream_new (NULL, 0, g_realloc, NULL); out = g_data_output_stream_new (memstream); g_object_unref (memstream); attrs = g_file_info_list_attributes (info, NULL); g_data_output_stream_put_uint32 (out, g_strv_length (attrs), NULL, NULL); for (i = 0; attrs[i] != NULL; i++) { attr = attrs[i]; type = g_file_info_get_attribute_type (info, attr); status = g_file_info_get_attribute_status (info, attr); put_string (out, attr); g_data_output_stream_put_byte (out, type, NULL, NULL); g_data_output_stream_put_byte (out, status, NULL, NULL); switch (type) { case G_FILE_ATTRIBUTE_TYPE_STRING: put_string (out, g_file_info_get_attribute_string (info, attr)); break; case G_FILE_ATTRIBUTE_TYPE_BYTE_STRING: put_string (out, g_file_info_get_attribute_byte_string (info, attr)); break; case G_FILE_ATTRIBUTE_TYPE_STRINGV: put_stringv (out, g_file_info_get_attribute_stringv (info, attr)); break; case G_FILE_ATTRIBUTE_TYPE_BOOLEAN: g_data_output_stream_put_byte (out, g_file_info_get_attribute_boolean (info, attr), NULL, NULL); break; case G_FILE_ATTRIBUTE_TYPE_UINT32: g_data_output_stream_put_uint32 (out, g_file_info_get_attribute_uint32 (info, attr), NULL, NULL); break; case G_FILE_ATTRIBUTE_TYPE_INT32: g_data_output_stream_put_int32 (out, g_file_info_get_attribute_int32 (info, attr), NULL, NULL); break; case G_FILE_ATTRIBUTE_TYPE_UINT64: g_data_output_stream_put_uint64 (out, g_file_info_get_attribute_uint64 (info, attr), NULL, NULL); break; case G_FILE_ATTRIBUTE_TYPE_INT64: g_data_output_stream_put_int64 (out, g_file_info_get_attribute_int64 (info, attr), NULL, NULL); break; case G_FILE_ATTRIBUTE_TYPE_OBJECT: obj = g_file_info_get_attribute_object (info, attr); if (obj == NULL) { g_data_output_stream_put_byte (out, 0, NULL, NULL); } else if (G_IS_ICON (obj)) { char *icon_str; icon_str = g_icon_to_string (G_ICON (obj)); g_data_output_stream_put_byte (out, 1, NULL, NULL); put_string (out, icon_str); g_free (icon_str); } else { g_warning ("Unsupported GFileInfo object type %s\n", g_type_name_from_instance ((GTypeInstance *)obj)); g_data_output_stream_put_byte (out, 0, NULL, NULL); } break; case G_FILE_ATTRIBUTE_TYPE_INVALID: default: break; } } data = g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (memstream)); *size = g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (memstream)); g_object_unref (out); g_strfreev (attrs); return data; }
void g_vfs_afp_command_put_uint64 (GVfsAfpCommand *comm, guint64 val) { g_data_output_stream_put_uint64 (G_DATA_OUTPUT_STREAM (comm), val, NULL, NULL); }