86 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
diff -ruN mountd-0.1.orig/include/fs.h mountd-0.1/include/fs.h
 | 
						|
--- mountd-0.1.orig/include/fs.h	2009-10-02 22:57:04.000000000 +0200
 | 
						|
+++ mountd-0.1/include/fs.h	2012-07-08 18:42:32.000000000 +0200
 | 
						|
@@ -7,5 +7,6 @@
 | 
						|
 #define EFI			7
 | 
						|
 #define NTFS		8
 | 
						|
 #define EXTENDED	9
 | 
						|
+#define EXT4		10
 | 
						|
 
 | 
						|
 int detect_fs(char *device);
 | 
						|
diff -ruN mountd-0.1.orig/lib/fs.c mountd-0.1/lib/fs.c
 | 
						|
--- mountd-0.1.orig/lib/fs.c	2009-10-02 23:26:22.000000000 +0200
 | 
						|
+++ mountd-0.1/lib/fs.c	2012-07-08 19:28:08.000000000 +0200
 | 
						|
@@ -91,9 +91,14 @@
 | 
						|
 		goto out;
 | 
						|
 	if(get_le_short(buffer + 56) == 0xEF53)
 | 
						|
 	{
 | 
						|
-		if((get_le_long(buffer + 96) & 0x0008)
 | 
						|
-			|| (get_le_long(buffer + 92) & 0x0004))
 | 
						|
-			ret = EXT3;
 | 
						|
+		if(get_le_long(buffer + 92) & 0x0004)
 | 
						|
+		{
 | 
						|
+			if ((get_le_long(buffer + 96) < 0x0000040)
 | 
						|
+				&& (get_le_long(buffer + 100) < 0x0000008))
 | 
						|
+				ret = EXT3;
 | 
						|
+			else
 | 
						|
+				ret = EXT4;
 | 
						|
+		}
 | 
						|
 		else
 | 
						|
 			ret = EXT2;
 | 
						|
 	}
 | 
						|
diff -ruN mountd-0.1.orig/lib/mount.c mountd-0.1/lib/mount.c
 | 
						|
--- mountd-0.1.orig/lib/mount.c	2009-10-03 12:54:57.000000000 +0200
 | 
						|
+++ mountd-0.1/lib/mount.c	2012-07-08 19:04:29.000000000 +0200
 | 
						|
@@ -53,7 +53,10 @@
 | 
						|
 	"EXT3",
 | 
						|
 	"FAT",
 | 
						|
 	"HFSPLUS",
 | 
						|
-	"NTFS"
 | 
						|
+	"",
 | 
						|
+	"NTFS",
 | 
						|
+	"",
 | 
						|
+	"EXT4"
 | 
						|
 };
 | 
						|
 
 | 
						|
 #define MAX_MOUNTED		32
 | 
						|
@@ -93,7 +96,7 @@
 | 
						|
 		ucix_add_option(ctx, mountd, q->serial, "rev", q->rev);
 | 
						|
 		snprintf(t, 64, "size%d", atoi(&q->dev[3]));
 | 
						|
 		ucix_add_option(ctx, mountd, q->serial, t, q->size);
 | 
						|
-		if(q->fs > MBR && q->fs <= NTFS)
 | 
						|
+		if(q->fs > MBR && q->fs <= EXT4)
 | 
						|
 		{
 | 
						|
 			snprintf(t, 64, "fs%d", atoi(&q->dev[3]));
 | 
						|
 			ucix_add_option(ctx, mountd, q->serial, t, fs_names[q->fs]);
 | 
						|
@@ -131,7 +134,7 @@
 | 
						|
 {
 | 
						|
 	struct mount *mount;
 | 
						|
 	char tmp[64], tmp2[64];
 | 
						|
-	if(fs <= MBR || fs > NTFS)
 | 
						|
+	if(fs <= MBR || fs > EXT4)
 | 
						|
 		return;
 | 
						|
 	mount  = malloc(sizeof(struct mount));
 | 
						|
 	INIT_LIST_HEAD(&mount->list);
 | 
						|
@@ -147,7 +150,7 @@
 | 
						|
 	mount->mounted = 0;
 | 
						|
 	mount->fs = fs;
 | 
						|
 	list_add(&mount->list, &mounts);
 | 
						|
-	if((!mount->ignore) && (mount->fs > MBR) && (mount->fs <= NTFS))
 | 
						|
+	if((!mount->ignore) && (mount->fs > MBR) && (mount->fs <= EXT4))
 | 
						|
 	{
 | 
						|
 		log_printf("new mount : %s -> %s (%s)\n", name, dev, fs_names[mount->fs]);
 | 
						|
 		snprintf(tmp, 64, "%s%s", uci_path, name);
 | 
						|
@@ -226,6 +229,11 @@
 | 
						|
 			log_printf("mount -t vfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp);
 | 
						|
 			ret = system_printf("mount -t vfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp);
 | 
						|
 		}
 | 
						|
+		if(mount->fs == EXT4)
 | 
						|
+		{
 | 
						|
+			log_printf("mount -t ext4 -o rw,defaults /dev/%s %s", mount->dev, tmp);
 | 
						|
+			ret = system_printf("mount -t ext4 -o rw,defaults /dev/%s %s", mount->dev, tmp);
 | 
						|
+		}
 | 
						|
 		if(mount->fs == EXT3)
 | 
						|
 		{
 | 
						|
 			log_printf("mount -t ext3 -o rw,defaults /dev/%s %s", mount->dev, tmp);
 |