diff --git a/reactos/sdk/tools/fatten/fatten.c b/reactos/sdk/tools/fatten/fatten.c index 50feacd36a8..1e059adfce8 100644 --- a/reactos/sdk/tools/fatten/fatten.c +++ b/reactos/sdk/tools/fatten/fatten.c @@ -103,8 +103,8 @@ int is_command(const char* parg) #define NEED_PARAMS(_min_, _max_) \ do {\ - if (nargs < _min_) { printf("Too few args for command %s.\n" , argv[-1]); PRINT_HELP_AND_QUIT(); } \ - if (nargs > _max_) { printf("Too many args for command %s.\n", argv[-1]); PRINT_HELP_AND_QUIT(); } \ + if (nargs < _min_) { fprintf(stderr, "Error: Too few args for command %s.\n" , argv[-1]); PRINT_HELP_AND_QUIT(); } \ + if (nargs > _max_) { fprintf(stderr, "Error: Too many args for command %s.\n", argv[-1]); PRINT_HELP_AND_QUIT(); } \ } while(0) int need_mount(void) @@ -125,7 +125,7 @@ int need_mount(void) #define NEED_MOUNT() \ do { ret = need_mount(); if(ret) \ {\ - printf("Error: could not mount disk (%d).\n", ret); \ + fprintf(stderr, "Error: Could not mount disk (%d).\n", ret); \ goto exit; \ } } while(0) @@ -138,18 +138,19 @@ int main(int oargc, char* oargv[]) // first parameter must be the image file. if (argc == 0) { + fprintf(stderr, "Error: First parameter must be a filename.\n", argv[0]); PRINT_HELP_AND_QUIT(); } if (is_command(argv[0])) { - printf("Error: first parameter must be a filename, found '%s' instead.\n", argv[0]); + fprintf(stderr, "Error: First parameter must be a filename, found '%s' instead.\n", argv[0]); PRINT_HELP_AND_QUIT(); } if (disk_openimage(0, argv[0])) { - printf("Error: could not open image file '%s'.\n", argv[0]); + fprintf(stderr, "Error: Could not open image file '%s'.\n", argv[0]); ret = 1; goto exit; } @@ -165,7 +166,7 @@ int main(int oargc, char* oargv[]) if (!is_command(parg)) { - printf("Error: Expected a command, found '%s' instead.\n", parg); + fprintf(stderr, "Error: Expected a command, found '%s' instead.\n", parg); PRINT_HELP_AND_QUIT(); } @@ -189,19 +190,24 @@ int main(int oargc, char* oargv[]) if (sectors <= 0) { - printf("Error: Sectors must be > 0\n"); + fprintf(stderr, "Error: Sectors must be > 0\n"); ret = 1; goto exit; } - disk_ioctl(0, SET_SECTOR_COUNT, §ors); + if (disk_ioctl(0, SET_SECTOR_COUNT, §ors)) + { + fprintf(stderr, "Error: Failed to set sector count to %d.\n", sectors); + ret = 1; + goto exit; + } NEED_MOUNT(); ret = f_mkfs("0:", 1, sectors < 4096 ? 1 : 8); if (ret) { - printf("ERROR: Formatting drive: %d.\n", ret); + fprintf(stderr, "Error: Formatting drive: %d.\n", ret); goto exit; } @@ -248,14 +254,14 @@ int main(int oargc, char* oargv[]) if (invalid) { - printf("Error: header label is limited to 11 printable uppercase ASCII symbols."); + fprintf(stderr, "Error: Header label is limited to 11 printable uppercase ASCII symbols."); ret = 1; goto exit; } if (disk_read(0, buff, 0, 1)) { - printf("Error: unable to read existing boot sector from image."); + fprintf(stderr, "Error: Unable to read existing boot sector from image."); ret = 1; goto exit; } @@ -271,7 +277,7 @@ int main(int oargc, char* oargv[]) if (disk_write(0, buff, 0, 1)) { - printf("Error: unable to write new boot sector to image."); + fprintf(stderr, "Error: Unable to write new boot sector to image."); ret = 1; goto exit; } @@ -279,7 +285,12 @@ int main(int oargc, char* oargv[]) // Set also the directory volume label memcpy(vol_label, "0:", 2); vol_label[2 + FAT_VOL_LABEL_LEN] = '\0'; - f_setlabel(vol_label); + if (f_setlabel(vol_label)) + { + fprintf(stderr, "Error: Unable to set the volume label."); + ret = 1; + goto exit; + } } } else if (strcmp(parg, "boot") == 0) @@ -294,14 +305,14 @@ int main(int oargc, char* oargv[]) fe = fopen(argv[0], "rb"); if (!fe) { - printf("Error: unable to open external file '%s' for reading.", argv[0]); + fprintf(stderr, "Error: Unable to open external file '%s' for reading.", argv[0]); ret = 1; goto exit; } if (!fread(buff, 512, 1, fe)) { - printf("Error: unable to read boot sector from file '%s'.", argv[0]); + fprintf(stderr, "Error: Unable to read boot sector from file '%s'.", argv[0]); fclose(fe); ret = 1; goto exit; @@ -313,14 +324,14 @@ int main(int oargc, char* oargv[]) if (disk_read(0, temp, 0, 1)) { - printf("Error: unable to read existing boot sector from image."); + fprintf(stderr, "Error: Unable to read existing boot sector from image."); ret = 1; goto exit; } if (g_Filesystem.fs_type == FS_FAT32) { - printf("TODO: writing boot sectors for FAT32 images not yet supported."); + printf("TODO: Writing boot sectors for FAT32 images not yet supported."); ret = 1; goto exit; } @@ -334,7 +345,7 @@ int main(int oargc, char* oargv[]) if (disk_write(0, buff, 0, 1)) { - printf("Error: unable to write new boot sector to image."); + fprintf(stderr, "Error: Unable to write new boot sector to image."); ret = 1; goto exit; } @@ -356,14 +367,14 @@ int main(int oargc, char* oargv[]) fe = fopen(argv[0], "rb"); if (!fe) { - printf("Error: unable to open external file '%s' for reading.", argv[0]); + fprintf(stderr, "Error: Unable to open external file '%s' for reading.", argv[0]); ret = 1; goto exit; } if (f_open(&fv, argv[1], FA_WRITE | FA_CREATE_ALWAYS)) { - printf("Error: unable to open file '%s' for writing.", argv[1]); + fprintf(stderr, "Error: Unable to open file '%s' for writing.", argv[1]); fclose(fe); ret = 1; goto exit; @@ -371,7 +382,12 @@ int main(int oargc, char* oargv[]) while ((rdlen = fread(buff, 1, sizeof(buff), fe)) > 0) { - f_write(&fv, buff, rdlen, &wrlen); + if (f_write(&fv, buff, rdlen, &wrlen) || wrlen < rdlen) + { + fprintf(stderr, "Error: Unable to write '%d' bytes to disk.", wrlen); + ret = 1; + goto exit; + } } fclose(fe); @@ -393,7 +409,7 @@ int main(int oargc, char* oargv[]) if (f_open(&fe, argv[0], FA_READ)) { - printf("Error: unable to open file '%s' for reading.", argv[0]); + fprintf(stderr, "Error: Unable to open file '%s' for reading.", argv[0]); ret = 1; goto exit; } @@ -401,7 +417,7 @@ int main(int oargc, char* oargv[]) fv = fopen(argv[1], "wb"); if (!fv) { - printf("Error: unable to open external file '%s' for writing.", argv[1]); + fprintf(stderr, "Error: Unable to open external file '%s' for writing.", argv[1]); f_close(&fe); ret = 1; goto exit; @@ -409,7 +425,12 @@ int main(int oargc, char* oargv[]) while ((f_read(&fe, buff, sizeof(buff), &rdlen) == 0) && (rdlen > 0)) { - fwrite(buff, 1, rdlen, fv); + if (fwrite(buff, 1, rdlen, fv) < rdlen) + { + fprintf(stderr, "Error: Unable to write '%d' bytes to file.", rdlen); + ret = 1; + goto exit; + } } f_close(&fe); @@ -424,7 +445,11 @@ int main(int oargc, char* oargv[]) // Arg 2: new path & filename if (f_rename(argv[0], argv[1])) - printf("Error moving/renaming '%s' to '%s'", argv[0], argv[1]); + { + fprintf(stderr, "Error: Unable to move/rename '%s' to '%s'", argv[0], argv[1]); + ret = 1; + goto exit; + } } else if (strcmp(parg, "copy") == 0) { @@ -441,13 +466,13 @@ int main(int oargc, char* oargv[]) if (f_open(&fe, argv[0], FA_READ)) { - printf("Error: unable to open file '%s' for reading.", argv[0]); + fprintf(stderr, "Error: Unable to open file '%s' for reading.", argv[0]); ret = 1; goto exit; } if (f_open(&fv, argv[1], FA_WRITE | FA_CREATE_ALWAYS)) { - printf("Error: unable to open file '%s' for writing.", argv[1]); + fprintf(stderr, "Error: Unable to open file '%s' for writing.", argv[1]); f_close(&fe); ret = 1; goto exit; @@ -455,7 +480,12 @@ int main(int oargc, char* oargv[]) while ((f_read(&fe, buff, sizeof(buff), &rdlen) == 0) && (rdlen > 0)) { - f_write(&fv, buff, rdlen, &wrlen); + if (f_write(&fv, buff, rdlen, &wrlen) || wrlen < rdlen) + { + fprintf(stderr, "Error: Unable to write '%d' bytes to disk.", wrlen); + ret = 1; + goto exit; + } } f_close(&fe); @@ -468,7 +498,12 @@ int main(int oargc, char* oargv[]) NEED_MOUNT(); // Arg 1: folder path - f_mkdir(argv[0]); + if (f_mkdir(argv[0])) + { + fprintf(stderr, "Error: Unable to create directory."); + ret = 1; + goto exit; + } } else if (strcmp(parg, "delete") == 0) { @@ -477,7 +512,12 @@ int main(int oargc, char* oargv[]) NEED_MOUNT(); // Arg 1: file/folder path (cannot delete non-empty folders) - f_unlink(argv[0]); + if (f_unlink(argv[0])) + { + fprintf(stderr, "Error: Unable to delete file or directory."); + ret = 1; + goto exit; + } } else if (strcmp(parg, "list") == 0) { @@ -497,7 +537,7 @@ int main(int oargc, char* oargv[]) if (f_opendir(&dir, root)) { - printf("Error opening directory '%s'.\n", root); + fprintf(stderr, "Error: Unable to opening directory '%s' for listing.\n", root); ret = 1; goto exit; } @@ -516,7 +556,7 @@ int main(int oargc, char* oargv[]) } else { - printf("Error: Unknown or invalid command: %s\n", argv[-1]); + fprintf(stderr, "Error: Unknown or invalid command: %s\n", argv[-1]); PRINT_HELP_AND_QUIT(); } argv += nargs;