Closed Giacomo-Gozzi closed 2 years ago
What exception did you receive? I haven't tried two images at the same time. One temp solution is to save the files to your local drive and then transfer to the new image
I tried saving them to the local disk but I would need to keep the file permissions, that way they are lost.
There are two kinds of exceptions(I assume there is a static pointer used by both):
1) Could not read disk MBR
var d1 = ExtDisk.Open(@"C:\Users\Giacomo\Downloads\raspbian_1.img"); var fs1 = ExtFileSystem.Open(d1.Partitions[1]); var d2 = ExtDisk.Open(@"C:\Users\Giacomo\Downloads\raspbian_2.img"); var fs2 = ExtFileSystem.Open(d2.Partitions[1]);
The exception is generated at line 3
2) Could not register partition.
var d1 = ExtDisk.Open(@"C:\Users\Giacomo\Downloads\raspbian_1.img"); var d2 = ExtDisk.Open(@"C:\Users\Giacomo\Downloads\raspbian_2.img"); var fs1 = ExtFileSystem.Open(d1.Partitions[1]); var fs2 = ExtFileSystem.Open(d2.Partitions[1]);
The exception is generated at line 4
Probably yes.
When you transfer the file, keeping file permissions in a Dictionary<path, permission> in the memory, after the transfer, you can use setmode to set the original permission.
Yes of course but it would be much more convenient to move files directly between images.
Do you think it would be possible to fix the problem?
I need take a look.
Yes of course but it would be much more convenient to move files directly between images.
Do you think it would be possible to fix the problem?
This is the limitation of lew4. It only can take one disk image at a time, because the underline implementation is C. All variables are global variable and shared across the library.
I tried to view the code, are you sure it is not a SharpExt4 problem? I noticed that in the ExtDisk.cpp file on line 56
auto disk = gcnew ExtDisk(imagePath);
disk->bd
always has the same pointer, they seem to me declared satatic in the io_raw.cpp file
I tried to view the code, are you sure it is not a SharpExt4 problem? I noticed that in the ExtDisk.cpp file on line 56
auto disk = gcnew ExtDisk(imagePath);
disk->bd
always has the same pointer, they seem to me declared satatic in the io_raw.cpp file
I have done the quick fix. It seems working ok on my side. Let me know if you still have the issue.
It now allows you to open two filesystems, the problem is that it always displays the last opened disk.
var disk1 = ExtDisk.Open(@".\disk1.img");
var disk2 = ExtDisk.Open(@".\disk2.img");
var fs1 = ExtFileSystem.Open(disk1.Partitions[1]);
ListAllFiles(fs1);
CreateFile(fs1);
var fs2 = ExtFileSystem.Open(disk2.Partitions[1]);
ListAllFiles(fs2);
ListAllFiles(fs1);
View files in disk 2
CreateFile(fs1);
Create the file in disk 2
In my project, the same pointer for ExtDisk.bd always remains.
It now allows you to open two filesystems, the problem is that it always displays the last opened disk.
var disk1 = ExtDisk.Open(@".\disk1.img"); var disk2 = ExtDisk.Open(@".\disk2.img"); var fs1 = ExtFileSystem.Open(disk1.Partitions[1]); ListAllFiles(fs1); CreateFile(fs1); var fs2 = ExtFileSystem.Open(disk2.Partitions[1]); ListAllFiles(fs2);
ListAllFiles(fs1);
View files in disk 2CreateFile(fs1);
Create the file in disk 2In my project, the same pointer for ExtDisk.bd always remains.
Hope this time, this issue get fixed. I did a quick test, and it's working.
The ExtFileSystem.Open
API has been updated.
Perfect everything seems to be working correctly, many thanks
I would need to copy some files from one ext4 disk to another. The problem is that when I try to open the second image if I haven't dispose of the first one first an exception is thrown.