[source] fritz_tffs_read: get tffs size from input file

LEDE Commits lede-commits at lists.infradead.org
Sat Jun 24 13:37:59 PDT 2017


mkresin pushed a commit to source.git, branch master:
https://git.lede-project.org/7e128632522988513c90e5fda44e6aab5b9f21cf

commit 7e128632522988513c90e5fda44e6aab5b9f21cf
Author: Mathias Kresin <dev at kresin.me>
AuthorDate: Sun Jun 18 10:28:18 2017 +0200

    fritz_tffs_read: get tffs size from input file
    
    Use the size of the input file as maximum tffs size instead of a fixed
    value. The tffs on a AVM Fritz 300E can be up to 512KByte for example.
    
    Fixes a read error for the AVM Fritz 3370 where the tffs partition size
    is 64Kbyte and smaller than the former default value of 256KByte.
    
    Signed-off-by: Mathias Kresin <dev at kresin.me>
---
 package/utils/fritz-tools/src/fritz_tffs_read.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/package/utils/fritz-tools/src/fritz_tffs_read.c b/package/utils/fritz-tools/src/fritz_tffs_read.c
index 7c311a9..d1b3038 100644
--- a/package/utils/fritz-tools/src/fritz_tffs_read.c
+++ b/package/utils/fritz-tools/src/fritz_tffs_read.c
@@ -36,14 +36,12 @@
 #include <sys/stat.h>
 #include <arpa/inet.h>
 
-#define DEFAULT_TFFS_SIZE	(256 * 1024)
-
 #define TFFS_ID_END		0xffff
 #define TFFS_ID_TABLE_NAME	0x01ff
 
 static char *progname;
 static char *input_file;
-static unsigned long tffs_size = DEFAULT_TFFS_SIZE;
+static unsigned long tffs_size;
 static char *name_filter = NULL;
 static bool show_all = false;
 static bool print_all_key_names = false;
@@ -334,6 +332,12 @@ int main(int argc, char *argv[])
 		goto out;
 	}
 
+	if (tffs_size == 0) {
+		fseek(fp, 0L, SEEK_END);
+		tffs_size = ftell(fp);
+		fseek(fp, 0L, SEEK_SET);
+	}
+
 	buffer = malloc(tffs_size);
 
 	if (fread(buffer, 1, tffs_size, fp) != tffs_size) {



More information about the lede-commits mailing list