FIXME: +Workaround memory consumption for non-journalled fastfat.sys
[captive.git] / src / libcaptive / client / file-slave.c
index 46c914a..0f9df8a 100644 (file)
 #include "vfs-slave.h"
 
 
+/* Config: */
+#define MAX_FILE_WRITTEN 0x100000      /* FIXME: Workaround memory consumption for non-journalled fastfat.sys */
+
+
 struct _CaptiveFileSlaveObject {
        CaptiveFileObject parent_instance;
 
@@ -341,6 +345,7 @@ LARGE_INTEGER file_offset;
 GnomeVFSFileInfo file_info;
 GnomeVFSFileSize endoffile_wanted;
 GnomeVFSResult errvfsresult;
+static GnomeVFSFileSize total_written=0;
 
        g_return_val_if_fail(CAPTIVE_FILE_SLAVE_IS_OBJECT(captive_file_object),GNOME_VFS_ERROR_BAD_PARAMETERS);
        g_return_val_if_fail(buffer!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
@@ -351,6 +356,11 @@ GnomeVFSResult errvfsresult;
 
        g_return_val_if_fail(captive_file_slave_object->file_Handle!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
 
+       /* FIXME: Workaround memory consumption for non-journalled fastfat.sys */
+       if (total_written>=MAX_FILE_WRITTEN)
+               return GNOME_VFS_ERROR_SERVICE_OBSOLETE;
+       total_written+=num_bytes;
+
        if ((GnomeVFSFileOffset)(captive_file_slave_object->offset+num_bytes) < captive_file_slave_object->offset)
                return GNOME_VFS_ERROR_TOO_BIG;
        endoffile_wanted=captive_file_slave_object->offset+num_bytes;