Author: dquintana
Date: Sun Sep 6 18:24:44 2015
New Revision: 69065
URL:
http://svn.reactos.org/svn/reactos?rev=69065&view=rev
Log:
[FATTEN]
Change tabs to spaces, but only for the files I write. The rest come directly from the
fatfs package and are best left untouched.
Modified:
trunk/reactos/tools/fatten/fatfs/diskio.c
trunk/reactos/tools/fatten/fatten.c
Modified: trunk/reactos/tools/fatten/fatfs/diskio.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/fatten/fatfs/diskio.…
==============================================================================
--- trunk/reactos/tools/fatten/fatfs/diskio.c [iso-8859-1] (original)
+++ trunk/reactos/tools/fatten/fatfs/diskio.c [iso-8859-1] Sun Sep 6 18:24:44 2015
@@ -14,28 +14,28 @@
/*-----------------------------------------------------------------------*/
/* Correspondence between physical drive number and image file handles. */
-FILE* driveHandle[1] = {NULL};
+FILE* driveHandle[1] = { NULL };
const int driveHandleCount = sizeof(driveHandle) / sizeof(FILE*);
/*-----------------------------------------------------------------------*/
/* Inidialize a Drive */
/*-----------------------------------------------------------------------*/
-DSTATUS disk_initialize (
- BYTE pdrv /* Physical drive nmuber (0..) */
-)
+DSTATUS disk_initialize(
+ BYTE pdrv /* Physical drive nmuber (0..) */
+ )
{
- if(pdrv == 0) // only one drive (image file) supported atm.
- {
- if(driveHandle[0]!=NULL)
- return 0;
+ if (pdrv == 0) /* only one drive (image file) supported atm. */
+ {
+ if (driveHandle[0] != NULL)
+ return 0;
- driveHandle[0]=fopen(imageFileName, "r+b");
+ driveHandle[0] = fopen(imageFileName, "r+b");
- if(driveHandle[0]!=NULL)
- return 0;
- }
- return STA_NOINIT;
+ if (driveHandle[0] != NULL)
+ return 0;
+ }
+ return STA_NOINIT;
}
@@ -44,16 +44,16 @@
/* Get Disk Status */
/*-----------------------------------------------------------------------*/
-DSTATUS disk_status (
- BYTE pdrv /* Physical drive nmuber (0..) */
-)
+DSTATUS disk_status(
+ BYTE pdrv /* Physical drive nmuber (0..) */
+ )
{
- if(pdrv < driveHandleCount)
- {
- if(driveHandle[pdrv] != NULL)
- return 0;
- }
- return STA_NOINIT;
+ if (pdrv < driveHandleCount)
+ {
+ if (driveHandle[pdrv] != NULL)
+ return 0;
+ }
+ return STA_NOINIT;
}
@@ -62,32 +62,32 @@
/* Read Sector(s) */
/*-----------------------------------------------------------------------*/
-DRESULT disk_read (
- BYTE pdrv, /* Physical drive nmuber (0..) */
- BYTE *buff, /* Data buffer to store read data */
- DWORD sector, /* Sector address (LBA) */
- UINT count /* Number of sectors to read (1..128) */
-)
+DRESULT disk_read(
+ BYTE pdrv, /* Physical drive nmuber (0..) */
+ BYTE *buff, /* Data buffer to store read data */
+ DWORD sector, /* Sector address (LBA) */
+ UINT count /* Number of sectors to read (1..128) */
+ )
{
- DWORD result;
+ DWORD result;
- if(pdrv < driveHandleCount)
- {
- if(driveHandle[pdrv] != NULL)
- {
- if(fseek(driveHandle[pdrv], sector * 512, SEEK_SET))
- return RES_ERROR;
+ if (pdrv < driveHandleCount)
+ {
+ if (driveHandle[pdrv] != NULL)
+ {
+ if (fseek(driveHandle[pdrv], sector * 512, SEEK_SET))
+ return RES_ERROR;
- result = fread(buff, 512, count, driveHandle[pdrv]);
+ result = fread(buff, 512, count, driveHandle[pdrv]);
- if(result == count)
- return RES_OK;
+ if (result == count)
+ return RES_OK;
- return RES_ERROR;
- }
- }
+ return RES_ERROR;
+ }
+ }
- return RES_PARERR;
+ return RES_PARERR;
}
@@ -97,33 +97,33 @@
/*-----------------------------------------------------------------------*/
#if _USE_WRITE
-DRESULT disk_write (
- BYTE pdrv, /* Physical drive nmuber (0..) */
- const BYTE *buff, /* Data to be written */
- DWORD sector, /* Sector address (LBA) */
- UINT count /* Number of sectors to write (1..128) */
-)
+DRESULT disk_write(
+ BYTE pdrv, /* Physical drive nmuber (0..) */
+ const BYTE *buff, /* Data to be written */
+ DWORD sector, /* Sector address (LBA) */
+ UINT count /* Number of sectors to write (1..128) */
+ )
{
- DWORD result;
+ DWORD result;
- if(pdrv < driveHandleCount)
- {
- if(driveHandle[pdrv] != NULL)
- {
- if(fseek(driveHandle[pdrv], sector * 512, SEEK_SET))
- return RES_ERROR;
+ if (pdrv < driveHandleCount)
+ {
+ if (driveHandle[pdrv] != NULL)
+ {
+ if (fseek(driveHandle[pdrv], sector * 512, SEEK_SET))
+ return RES_ERROR;
- result = fwrite(buff, 512, count, driveHandle[pdrv]);
- return RES_ERROR;
+ result = fwrite(buff, 512, count, driveHandle[pdrv]);
+ return RES_ERROR;
- if(result != (512 * count))
- return RES_ERROR;
+ if (result != (512 * count))
+ return RES_ERROR;
- return RES_OK;
- }
- }
+ return RES_OK;
+ }
+ }
- return RES_PARERR;
+ return RES_PARERR;
}
#endif
@@ -133,58 +133,58 @@
/*-----------------------------------------------------------------------*/
#if _USE_IOCTL
-DRESULT disk_ioctl (
- BYTE pdrv, /* Physical drive nmuber (0..) */
- BYTE cmd, /* Control code */
- void *buff /* Buffer to send/receive control data */
-)
+DRESULT disk_ioctl(
+ BYTE pdrv, /* Physical drive nmuber (0..) */
+ BYTE cmd, /* Control code */
+ void *buff /* Buffer to send/receive control data */
+ )
{
- if(pdrv < driveHandleCount)
- {
- if(driveHandle[pdrv] != NULL)
- {
- switch(cmd)
- {
- case CTRL_SYNC:
- fflush(driveHandle[pdrv]);
- return RES_OK;
- case GET_SECTOR_SIZE:
- *(DWORD*)buff = 512;
- return RES_OK;
- case GET_BLOCK_SIZE:
- *(DWORD*)buff = 512;
- return RES_OK;
- case GET_SECTOR_COUNT:
- fseek(driveHandle[pdrv], 0, SEEK_END);
- *(DWORD*)buff = ftell(driveHandle[pdrv]) / 512;
- return RES_OK;
- case SET_SECTOR_COUNT:
- {
- int count = *(DWORD*)buff;
- long size;
-
- fseek(driveHandle[pdrv], 0, SEEK_END);
- size = ftell(driveHandle[pdrv]) / 512;
-
- if(size < count)
- {
- if(fseek(driveHandle[pdrv], count * 512 - 1,
SEEK_SET))
- return RES_ERROR;
+ if (pdrv < driveHandleCount)
+ {
+ if (driveHandle[pdrv] != NULL)
+ {
+ switch (cmd)
+ {
+ case CTRL_SYNC:
+ fflush(driveHandle[pdrv]);
+ return RES_OK;
+ case GET_SECTOR_SIZE:
+ *(DWORD*)buff = 512;
+ return RES_OK;
+ case GET_BLOCK_SIZE:
+ *(DWORD*)buff = 512;
+ return RES_OK;
+ case GET_SECTOR_COUNT:
+ fseek(driveHandle[pdrv], 0, SEEK_END);
+ *(DWORD*)buff = ftell(driveHandle[pdrv]) / 512;
+ return RES_OK;
+ case SET_SECTOR_COUNT:
+ {
+ int count = *(DWORD*)buff;
+ long size;
- fwrite(buff, 1, 1, driveHandle[pdrv]);
+ fseek(driveHandle[pdrv], 0, SEEK_END);
+ size = ftell(driveHandle[pdrv]) / 512;
- return RES_OK;
- }
- else
- {
- // SHRINKING NOT IMPLEMENTED
- return RES_OK;
- }
- }
- }
- }
- }
+ if (size < count)
+ {
+ if (fseek(driveHandle[pdrv], count * 512 - 1, SEEK_SET))
+ return RES_ERROR;
- return RES_PARERR;
+ fwrite(buff, 1, 1, driveHandle[pdrv]);
+
+ return RES_OK;
+ }
+ else
+ {
+ // SHRINKING NOT IMPLEMENTED
+ return RES_OK;
+ }
+ }
+ }
+ }
+ }
+
+ return RES_PARERR;
}
#endif
Modified: trunk/reactos/tools/fatten/fatten.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/fatten/fatten.c?rev=…
==============================================================================
--- trunk/reactos/tools/fatten/fatten.c [iso-8859-1] (original)
+++ trunk/reactos/tools/fatten/fatten.c [iso-8859-1] Sun Sep 6 18:24:44 2015
@@ -20,344 +20,344 @@
// tool needed by fatfs
DWORD get_fattime()
{
- /* 31-25: Year(0-127 org.1980), 24-21: Month(1-12), 20-16: Day(1-31) */
- /* 15-11: Hour(0-23), 10-5: Minute(0-59), 4-0: Second(0-29 *2) */
-
- time_t rawtime;
- struct tm * timeinfo;
-
- time (&rawtime);
- timeinfo = localtime (&rawtime);
-
- union FatTime {
- struct {
- DWORD Second : 5; // div 2
- DWORD Minute : 6;
- DWORD Hour : 5;
- DWORD Day : 5;
- DWORD Month : 4;
- DWORD Year : 7; // year-1980
- };
- DWORD whole;
- } myTime = {
- {
- timeinfo->tm_sec / 2,
- timeinfo->tm_min,
- timeinfo->tm_hour,
- timeinfo->tm_mday,
- timeinfo->tm_mon,
- timeinfo->tm_year - 1980,
- }
- };
-
- return myTime.whole;
+ /* 31-25: Year(0-127 org.1980), 24-21: Month(1-12), 20-16: Day(1-31) */
+ /* 15-11: Hour(0-23), 10-5: Minute(0-59), 4-0: Second(0-29 *2) */
+
+ time_t rawtime;
+ struct tm * timeinfo;
+
+ time(&rawtime);
+ timeinfo = localtime(&rawtime);
+
+ union FatTime {
+ struct {
+ DWORD Second : 5; // div 2
+ DWORD Minute : 6;
+ DWORD Hour : 5;
+ DWORD Day : 5;
+ DWORD Month : 4;
+ DWORD Year : 7; // year-1980
+ };
+ DWORD whole;
+ } myTime = {
+ {
+ timeinfo->tm_sec / 2,
+ timeinfo->tm_min,
+ timeinfo->tm_hour,
+ timeinfo->tm_mday,
+ timeinfo->tm_mon,
+ timeinfo->tm_year - 1980,
+ }
+ };
+
+ return myTime.whole;
}
BOOL is_command(const char* parg)
{
- return (parg[0]=='/') || (parg[0] == '-');
+ return (parg[0] == '/') || (parg[0] == '-');
}
#define NEED_PARAMS(_min_,_max_) \
- do {\
- if(nargs<_min_) { printf("Too few args for command
%s.\n",argv[-1]); goto print_help; } \
- if(nargs>_max_) { printf("Too many args for command
%s.\n",argv[-1]); goto print_help; } \
- } while(0)
+ do {\
+ if(nargs<_min_) { printf("Too few args for command %s.\n",argv[-1]);
goto print_help; } \
+ if(nargs>_max_) { printf("Too many args for command
%s.\n",argv[-1]); goto print_help; } \
+ } while(0)
BOOL need_mount()
{
- if(isMounted)
- return FR_OK;
-
- int r = f_mount(&g_Filesystem, "0:", 0);
- if(r)
- return r;
-
- isMounted = 1;
- return FR_OK;
+ if (isMounted)
+ return FR_OK;
+
+ int r = f_mount(&g_Filesystem, "0:", 0);
+ if (r)
+ return r;
+
+ isMounted = 1;
+ return FR_OK;
}
#define NEED_MOUNT() \
- do { ret = need_mount(); if(ret) \
- {\
- printf("Error: could not mount image file '%s' (%d).
\n", imageFileName, ret); \
- goto print_help; \
- } } while(0)
+ do { ret = need_mount(); if(ret) \
+ {\
+ printf("Error: could not mount image file '%s' (%d). \n",
imageFileName, ret); \
+ goto print_help; \
+ } } while(0)
int main(int oargc, char* oargv[])
{
- int ret;
- int argc = oargc-1;
- char** argv = oargv+1;
-
- // first parameter must be the image file.
- if(argc == 0)
- {
- goto print_help;
- }
-
- if(is_command(argv[0]))
- {
- printf("Error: first parameter must be a filename, found '%s'
instead. \n", argv[0]);
- goto print_help;
- }
-
- imageFileName = argv[0];
-
- if(disk_initialize(0))
- {
- printf("Error: could not open image file '%s'. \n",
imageFileName);
- goto print_help;
- }
-
- argc--;
- argv++;
-
- while(argc>0)
- {
- char *parg = *argv;
-
- if(!is_command(parg))
- {
- printf("Error: Expected a command, found '%s'
instead. \n",parg);
- goto print_help;
- }
-
- parg++;
- argv++;
- argc--;
-
- // find next command, to calculare number of args
- int nargs = 0;
- int i=0;
- while((argv[i] != NULL) && !is_command(argv[i++]))
- nargs++;
-
- if(strcmp(parg,"format")==0)
- {
- // NOTE: The fs driver detects which FAT format fits best based on
size
-
- NEED_PARAMS(1,1);
-
- NEED_MOUNT();
-
- // Arg 1: number of sectors
- int sectors = atoi(argv[0]);
-
- if(sectors <= 0)
- {
- printf("Error: Sectors must be > 0\n");
- return 1;
- }
-
- disk_ioctl(0, SET_SECTOR_COUNT, §ors);
-
- ret = f_mkfs("0:", 1, 4096);
- if (ret)
- {
- printf("ERROR: Formatting drive: %d.\n", ret);
- goto print_help;
- }
- }
- else if(strcmp(parg,"boot")==0)
- {
- NEED_PARAMS(1,1);
-
- // Arg 1: boot file
- printf("Not Implemented.");
- }
- else if(strcmp(parg,"add")==0)
- {
- NEED_PARAMS(2,2);
-
- NEED_MOUNT();
-
- // Arg 1: external file to add
- // Arg 2: virtual filename
-
- FILE* fe;
- FIL fv = {0};
-
- if(fopen_s(&fe, argv[0],"rb"))
- {
- printf("Error: unable to open external file
'%s' for reading.", argv[0]);
- return 1;
- }
- if(f_open(&fv, argv[1], FA_WRITE | FA_CREATE_ALWAYS))
- {
- printf("Error: unable to open file '%s' for
writing.", argv[1]);
- return 1;
- }
-
- char buff[32768];
- UINT rdlen = 0;
- UINT wrlen = 0;
-
- while( (rdlen = fread(buff,1,32768,fe)) > 0 )
- {
- f_write(&fv,buff, rdlen, &wrlen);
- }
-
- fclose(fe);
- f_close(&fv);
- }
- else if(strcmp(parg,"extract")==0)
- {
- NEED_PARAMS(2,2);
-
- NEED_MOUNT();
-
- // Arg 1: virtual file to extract
- // Arg 2: external filename
-
- FIL fe = {0};
- FILE* fv;
-
- if(f_open(&fe, argv[0], FA_READ))
- {
- printf("Error: unable to open file '%s' for
reading.", argv[0]);
- return 1;
- }
- if(fopen_s(&fv, argv[1],"wb"))
- {
- printf("Error: unable to open external file
'%s' for writing.", argv[1]);
- return 1;
- }
-
- char buff[32768];
- UINT rdlen = 0;
- UINT wrlen = 0;
-
- while( (f_read(&fe, buff, 32768, &rdlen) == 0 ) &&
( rdlen > 0) )
- {
- fwrite(buff, 1, rdlen, fv);
- }
-
- f_close(&fe);
- fclose(fv);
- }
- else if(strcmp(parg,"move")==0)
- {
- NEED_PARAMS(2,2);
-
- NEED_MOUNT();
- // Arg 1: src path & filename
- // Arg 2: new path & filename
-
- if(f_rename(argv[0], argv[1]))
- printf("Error moving/renaming '%s' to
'%s'", argv[0],argv[1]);
- }
- else if(strcmp(parg,"copy")==0)
- {
- NEED_PARAMS(2,2)
-
- NEED_MOUNT();
- // Arg 1: src path & filename
- // Arg 2: new path & filename
-
- FIL fe = {0};
- FIL fv = {0};
-
- if(f_open(&fe, argv[0], FA_READ))
- {
- printf("Error: unable to open file '%s' for
reading.", argv[0]);
- return 1;
- }
- if(f_open(&fv, argv[1], FA_WRITE|FA_CREATE_ALWAYS))
- {
- printf("Error: unable to open file '%s' for
writing.", argv[1]);
- return 1;
- }
-
- char buff[32768];
- UINT rdlen = 0;
- UINT wrlen = 0;
-
- while( (f_read(&fe, buff, 32768, &rdlen) == 0) &&
(rdlen > 0) )
- {
- f_write(&fv, buff, rdlen, &wrlen);
- }
-
- f_close(&fe);
- f_close(&fv);
- }
- else if(strcmp(parg,"mkdir")==0)
- {
- NEED_PARAMS(1,1);
-
- NEED_MOUNT();
- // Arg 1: folder path
- f_mkdir(argv[1]);
- }
- else if(strcmp(parg,"delete")==0)
- {
- NEED_PARAMS(1,1);
-
- NEED_MOUNT();
- // Arg 1: file/folder path (cannot delete non-empty folders)
- f_unlink(argv[1]);
- }
- else if(strcmp(parg,"list")==0)
- {
- NEED_PARAMS(0,1);
-
- // Arg 1: folder path (optional)
- char* root = "/";
-
- if(nargs == 1)
- {
- root = argv[0];
- }
-
- DIR dir = {0};
-
- if(f_opendir(&dir, root))
- {
- printf("Error opening directory
'%s'.\n",root);
- return 1;
- }
-
- printf("Listing directory contents of: %s\n", root);
-
- FILINFO info = {0};
- CHAR lfname[257];
- info.lfname = lfname;
- info.lfsize = 256;
- while( (!f_readdir(&dir,&info)) &&
(strlen(info.fname)>0))
- {
- if(strlen(info.lfname) > 0)
- printf(" - %s (%s)\n", info.lfname,
info.fname);
- else
- printf(" - %s\n", info.fname);
- }
- }
- else
- {
- printf("Error: Unknown or invalid command:
%s\n",argv[-1]);
- goto print_help;
- }
- argv+=nargs;
- argc-=nargs;
- }
-
- return 0;
+ int ret;
+ int argc = oargc - 1;
+ char** argv = oargv + 1;
+
+ // first parameter must be the image file.
+ if (argc == 0)
+ {
+ goto print_help;
+ }
+
+ if (is_command(argv[0]))
+ {
+ printf("Error: first parameter must be a filename, found '%s'
instead. \n", argv[0]);
+ goto print_help;
+ }
+
+ imageFileName = argv[0];
+
+ if (disk_initialize(0))
+ {
+ printf("Error: could not open image file '%s'. \n",
imageFileName);
+ goto print_help;
+ }
+
+ argc--;
+ argv++;
+
+ while (argc > 0)
+ {
+ char *parg = *argv;
+
+ if (!is_command(parg))
+ {
+ printf("Error: Expected a command, found '%s' instead. \n",
parg);
+ goto print_help;
+ }
+
+ parg++;
+ argv++;
+ argc--;
+
+ // find next command, to calculare number of args
+ int nargs = 0;
+ int i = 0;
+ while ((argv[i] != NULL) && !is_command(argv[i++]))
+ nargs++;
+
+ if (strcmp(parg, "format") == 0)
+ {
+ // NOTE: The fs driver detects which FAT format fits best based on size
+
+ NEED_PARAMS(1, 1);
+
+ NEED_MOUNT();
+
+ // Arg 1: number of sectors
+ int sectors = atoi(argv[0]);
+
+ if (sectors <= 0)
+ {
+ printf("Error: Sectors must be > 0\n");
+ return 1;
+ }
+
+ disk_ioctl(0, SET_SECTOR_COUNT, §ors);
+
+ ret = f_mkfs("0:", 1, 4096);
+ if (ret)
+ {
+ printf("ERROR: Formatting drive: %d.\n", ret);
+ goto print_help;
+ }
+ }
+ else if (strcmp(parg, "boot") == 0)
+ {
+ NEED_PARAMS(1, 1);
+
+ // Arg 1: boot file
+ printf("Not Implemented.");
+ }
+ else if (strcmp(parg, "add") == 0)
+ {
+ NEED_PARAMS(2, 2);
+
+ NEED_MOUNT();
+
+ // Arg 1: external file to add
+ // Arg 2: virtual filename
+
+ FILE* fe;
+ FIL fv = { 0 };
+
+ if (fopen_s(&fe, argv[0], "rb"))
+ {
+ printf("Error: unable to open external file '%s' for
reading.", argv[0]);
+ return 1;
+ }
+ if (f_open(&fv, argv[1], FA_WRITE | FA_CREATE_ALWAYS))
+ {
+ printf("Error: unable to open file '%s' for writing.",
argv[1]);
+ return 1;
+ }
+
+ char buff[32768];
+ UINT rdlen = 0;
+ UINT wrlen = 0;
+
+ while ((rdlen = fread(buff, 1, 32768, fe)) > 0)
+ {
+ f_write(&fv, buff, rdlen, &wrlen);
+ }
+
+ fclose(fe);
+ f_close(&fv);
+ }
+ else if (strcmp(parg, "extract") == 0)
+ {
+ NEED_PARAMS(2, 2);
+
+ NEED_MOUNT();
+
+ // Arg 1: virtual file to extract
+ // Arg 2: external filename
+
+ FIL fe = { 0 };
+ FILE* fv;
+
+ if (f_open(&fe, argv[0], FA_READ))
+ {
+ printf("Error: unable to open file '%s' for reading.",
argv[0]);
+ return 1;
+ }
+ if (fopen_s(&fv, argv[1], "wb"))
+ {
+ printf("Error: unable to open external file '%s' for
writing.", argv[1]);
+ return 1;
+ }
+
+ char buff[32768];
+ UINT rdlen = 0;
+ UINT wrlen = 0;
+
+ while ((f_read(&fe, buff, 32768, &rdlen) == 0) && (rdlen >
0))
+ {
+ fwrite(buff, 1, rdlen, fv);
+ }
+
+ f_close(&fe);
+ fclose(fv);
+ }
+ else if (strcmp(parg, "move") == 0)
+ {
+ NEED_PARAMS(2, 2);
+
+ NEED_MOUNT();
+ // Arg 1: src path & filename
+ // Arg 2: new path & filename
+
+ if (f_rename(argv[0], argv[1]))
+ printf("Error moving/renaming '%s' to '%s'",
argv[0], argv[1]);
+ }
+ else if (strcmp(parg, "copy") == 0)
+ {
+ NEED_PARAMS(2, 2);
+
+ NEED_MOUNT();
+ // Arg 1: src path & filename
+ // Arg 2: new path & filename
+
+ FIL fe = { 0 };
+ FIL fv = { 0 };
+
+ if (f_open(&fe, argv[0], FA_READ))
+ {
+ printf("Error: unable to open file '%s' for reading.",
argv[0]);
+ return 1;
+ }
+ if (f_open(&fv, argv[1], FA_WRITE | FA_CREATE_ALWAYS))
+ {
+ printf("Error: unable to open file '%s' for writing.",
argv[1]);
+ return 1;
+ }
+
+ char buff[32768];
+ UINT rdlen = 0;
+ UINT wrlen = 0;
+
+ while ((f_read(&fe, buff, 32768, &rdlen) == 0) && (rdlen >
0))
+ {
+ f_write(&fv, buff, rdlen, &wrlen);
+ }
+
+ f_close(&fe);
+ f_close(&fv);
+ }
+ else if (strcmp(parg, "mkdir") == 0)
+ {
+ NEED_PARAMS(1, 1);
+
+ NEED_MOUNT();
+ // Arg 1: folder path
+ f_mkdir(argv[1]);
+ }
+ else if (strcmp(parg, "delete") == 0)
+ {
+ NEED_PARAMS(1, 1);
+
+ NEED_MOUNT();
+ // Arg 1: file/folder path (cannot delete non-empty folders)
+ f_unlink(argv[1]);
+ }
+ else if (strcmp(parg, "list") == 0)
+ {
+ NEED_PARAMS(0, 1);
+
+ // Arg 1: folder path (optional)
+ char* root = "/";
+
+ if (nargs == 1)
+ {
+ root = argv[0];
+ }
+
+ DIR dir = { 0 };
+
+ if (f_opendir(&dir, root))
+ {
+ printf("Error opening directory '%s'.\n", root);
+ return 1;
+ }
+
+ printf("Listing directory contents of: %s\n", root);
+
+ FILINFO info = { 0 };
+ CHAR lfname[257];
+ info.lfname = lfname;
+ info.lfsize = 256;
+ while ((!f_readdir(&dir, &info)) && (strlen(info.fname) >
0))
+ {
+ if (strlen(info.lfname) > 0)
+ printf(" - %s (%s)\n", info.lfname, info.fname);
+ else
+ printf(" - %s\n", info.fname);
+ }
+ }
+ else
+ {
+ printf("Error: Unknown or invalid command: %s\n", argv[-1]);
+ goto print_help;
+ }
+ argv += nargs;
+ argc -= nargs;
+ }
+
+ return 0;
print_help:
- printf("Syntax: %s image_file [list of commands]\n\n", oargv[0]);
- printf("Commands: [Note: both '/' and '-' are accepted as
command prefixes.] \n");
- printf(" /format <sectors> [<filesystem>] Formats the
disk image.\n");
- printf(" /boot <sector file> Writes a new boot
sector.\n");
- printf(" /add <src path> <dst path> Copies an external file
or directory\n"
- " into the image.\n");
- printf(" /extract <src path> <dst path> Copies a file or
directory from the image\n"
- " into an external file or
directory.\n");
- printf(" /move <src path> <new path> Moves/renames a file or
directory.\n");
- printf(" /copy <src path> <new path> Copies a file or
directory.\n");
- printf(" /mkdir <src path> <new path> Creates a
directory.\n");
- printf(" /rmdir <src path> <new path> Creates a
directory.\n");
- printf(" /list [<pattern>] Lists files a directory
(defaults to root).\n");
- //printf(" /recursive Enables recursive processing for
directories.\n");
-
- return 1;
+ printf("Syntax: %s image_file [list of commands]\n\n", oargv[0]);
+ printf("Commands: [Note: both '/' and '-' are accepted as
command prefixes.] \n");
+ printf(" /format <sectors> [<filesystem>] Formats the
disk image.\n");
+ printf(" /boot <sector file> Writes a new boot
sector.\n");
+ printf(" /add <src path> <dst path> Copies an external file or
directory\n"
+ " into the image.\n");
+ printf(" /extract <src path> <dst path> Copies a file or
directory from the image\n"
+ " into an external file or
directory.\n");
+ printf(" /move <src path> <new path> Moves/renames a file or
directory.\n");
+ printf(" /copy <src path> <new path> Copies a file or
directory.\n");
+ printf(" /mkdir <src path> <new path> Creates a
directory.\n");
+ printf(" /rmdir <src path> <new path> Creates a
directory.\n");
+ printf(" /list [<pattern>] Lists files a directory (defaults
to root).\n");
+ //printf(" /recursive Enables recursive processing for
directories.\n");
+
+ return 1;
}