mirror of
https://github.com/nitanmarcel/isodrive.git
synced 2026-03-13 04:17:24 +00:00
Add option to switch between configfs and usb_gadget
This commit is contained in:
@@ -17,11 +17,13 @@
|
|||||||
```bash
|
```bash
|
||||||
isodrive [FILE]... [OPTION]...
|
isodrive [FILE]... [OPTION]...
|
||||||
Mounts the given FILE as a bootable device using configfs.
|
Mounts the given FILE as a bootable device using configfs.
|
||||||
Run without any arguments to unmount any mounted files and to display this help message.
|
Run without any arguments to unmount any mounted files and display this help message.
|
||||||
|
|
||||||
Optional arguments:
|
Optional arguments:
|
||||||
-rw Mounts the file in read write mode.
|
-rw Mounts the file in read write mode.
|
||||||
-cdrom Mounts the file as a cdrom.
|
-cdrom Mounts the file as a cdrom.
|
||||||
|
-configfs Forces the app to use configfs.
|
||||||
|
-usbgadget Forces the app to use usb_gadget.
|
||||||
```
|
```
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ void mount_iso(char *iso_path, char *cdrom, char *ro) {
|
|||||||
char *gadgetRoot = get_gadget_root();
|
char *gadgetRoot = get_gadget_root();
|
||||||
|
|
||||||
if (gadgetRoot == nullptr) {
|
if (gadgetRoot == nullptr) {
|
||||||
printf("No active gadget found\n");
|
printf("No active gadget found!\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char *configRoot = get_config_root();
|
char *configRoot = get_config_root();
|
||||||
|
|||||||
+31
-4
@@ -12,14 +12,23 @@ int print_help() {
|
|||||||
"this help message.\n\n");
|
"this help message.\n\n");
|
||||||
|
|
||||||
printf("Optional arguments:\n");
|
printf("Optional arguments:\n");
|
||||||
printf("-rw\t Mounts the file in read write mode.\n");
|
printf("-rw\t\t Mounts the file in read write mode.\n");
|
||||||
printf("-cdrom\t Mounts the file as a cdrom.\n\n");
|
printf("-cdrom\t\t Mounts the file as a cdrom.\n");
|
||||||
|
printf("-configfs\t Forces the app to use configfs.\n");
|
||||||
|
printf("-usbgadget\t Forces the app to use usb_gadget.\n\n");
|
||||||
printf("UMOUNT:\n");
|
printf("UMOUNT:\n");
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void configs(char *iso_target, char *cdrom, char *ro) {
|
void configs(char *iso_target, char *cdrom, char *ro) {
|
||||||
|
printf("Using configfs!\n");
|
||||||
|
|
||||||
|
if (!supported())
|
||||||
|
{
|
||||||
|
printf("usb_gadget is not supported!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (strcmp(ro, "1") != 0 && strcmp(ro, "0") != 0) {
|
if (strcmp(ro, "1") != 0 && strcmp(ro, "0") != 0) {
|
||||||
printf("\nFaled to parse -rw argument. Defaulting to ro\n");
|
printf("\nFaled to parse -rw argument. Defaulting to ro\n");
|
||||||
printf("Check --help for more usage info\n");
|
printf("Check --help for more usage info\n");
|
||||||
@@ -36,6 +45,12 @@ void configs(char *iso_target, char *cdrom, char *ro) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void usb(char *iso_target, char *cdrom, char *ro) {
|
void usb(char *iso_target, char *cdrom, char *ro) {
|
||||||
|
printf("Using usb_gadget!\n");
|
||||||
|
if (!usb_supported())
|
||||||
|
{
|
||||||
|
printf("usb_gadget is not supported!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (strcmp(cdrom, "0") != 0 || strcmp(ro, "1") != 0)
|
if (strcmp(cdrom, "0") != 0 || strcmp(ro, "1") != 0)
|
||||||
{
|
{
|
||||||
printf((char*)"cdrom/ro flags ignored. (this is expected)");
|
printf((char*)"cdrom/ro flags ignored. (this is expected)");
|
||||||
@@ -49,13 +64,19 @@ void usb(char *iso_target, char *cdrom, char *ro) {
|
|||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
char *iso_target = (char *)"";
|
char *iso_target = (char *)"";
|
||||||
char *cdrom = (char *)"0";
|
char *cdrom = (char *)"0";
|
||||||
char *ro = (char *)"1";
|
char *ro = (char *)"1";
|
||||||
|
char *configfs = (char *)"0";
|
||||||
|
char *usbgadget = (char *)"0";
|
||||||
|
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "-rw") == 0) {
|
if (strcmp(argv[i], "-rw") == 0) {
|
||||||
ro = (char *)"0";
|
ro = (char *)"0";
|
||||||
} else if (strcmp(argv[i], "-cdrom") == 0) {
|
} else if (strcmp(argv[i], "-cdrom") == 0) {
|
||||||
cdrom = (char *)"1";
|
cdrom = (char *)"1";
|
||||||
|
} else if (strcmp(argv[i], "-configfs") == 0) {
|
||||||
|
configfs = (char *)"1";
|
||||||
|
} else if (strcmp(argv[i], "-usbgadget") == 0) {
|
||||||
|
usbgadget = (char *)"1";
|
||||||
} else if (strcmp(iso_target, "") == 0) {
|
} else if (strcmp(iso_target, "") == 0) {
|
||||||
iso_target = argv[i];
|
iso_target = argv[i];
|
||||||
}
|
}
|
||||||
@@ -74,7 +95,13 @@ int main(int argc, char *argv[]) {
|
|||||||
printf("MOUNT:\n");
|
printf("MOUNT:\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usb_supported())
|
if (strcmp(configfs, "1") == 0)
|
||||||
|
configs(iso_target, cdrom, ro);
|
||||||
|
else if (strcmp(usbgadget, "1") == 0)
|
||||||
|
{
|
||||||
|
usb(iso_target, cdrom, ro);
|
||||||
|
}
|
||||||
|
else if (usb_supported())
|
||||||
usb(iso_target, cdrom, ro);
|
usb(iso_target, cdrom, ro);
|
||||||
else if (supported())
|
else if (supported())
|
||||||
configs(iso_target, cdrom, ro);
|
configs(iso_target, cdrom, ro);
|
||||||
|
|||||||
Reference in New Issue
Block a user