--- main.c.old 2010-06-06 17:41:01.000000000 +0000 +++ main.c 2013-08-31 18:12:58.000000000 +0000 @@ -71,6 +71,7 @@ case 'P': options |= SRM_MODE_OPENBSD; break; case 'D': options |= SRM_MODE_DOD; break; case 'E': options |= SRM_MODE_DOE; break; + case 'F': options |= SRM_MODE_FULL; break; case 'V': show_version=1; break; case 'v': if((options & SRM_OPT_V) < SRM_OPT_V) @@ -96,6 +97,7 @@ " -P, --openbsd overwrite with three passes like OpenBSD rm\n" " -D, --dod overwrite with 7 US DoD compliant passes\n" " -E, --doe overwrite with 3 US DoE compliant passes\n" + " _F, --full overwrite with 32 passes\n" " -r, -R, --recursive remove the contents of directories\n" " -v, --verbose explain what is being done\n" " -h, --help display this help and exit\n" --- srm.h.old 2010-06-06 17:08:05.000000000 +0000 +++ srm.h 2013-08-31 18:16:07.000000000 +0000 @@ -22,6 +22,8 @@ #define SRM_MODE_DOD (1 << 18) /** US DoE overwrite mode */ #define SRM_MODE_DOE (1 << 19) +/** Full overwrite mode */ +#define SRM_MODE_FULL (1 << 20) #ifdef __cplusplus extern "C" { --- sunlink.c.old 2010-11-25 22:42:06.000000000 +0000 +++ sunlink.c 2013-08-31 18:15:19.000000000 +0000 @@ -331,7 +331,7 @@ printf("Simple mode\n"); if(overwrite_byte(srm, 1, 0x00) < 0) return -1; } - else + else if(srm->options & SRM_MODE_FULL) { if((srm->options&SRM_OPT_V) == SRM_OPT_V) printf("Full mode\n"); @@ -367,6 +367,12 @@ /* if you want to backup your partition or shrink your vmware image having the file zero-ed gives best compression results. */ if(overwrite_byte(srm, 36, 0x00) < 0) return -1; } + else { + if((srm->options&SRM_OPT_V) == SRM_OPT_V) + printf("[WaS] mode\n"); + srandom(time(NULL)); + if(overwrite_byte(srm, 1, (int)(random() % 255)) < 0) return -1; + } if((srm->options & SRM_OPT_V) > 1) printf("\n"); --- tree_walker.c.old 2010-06-06 17:42:20.000000000 +0000 +++ tree_walker.c 2013-08-31 18:43:02.000000000 +0000 @@ -215,11 +215,13 @@ case FTS_SLNONE: #endif if ( prompt_file(path, options) && (sunlink(path, options) < 0) ) { - if (errno == EMLINK) - error("%s has multiple links, this one has been removed but not " - "overwritten", path); - else - errorp("unable to remove %s", path); + if (options & SRM_OPT_V) { + if (errno == EMLINK) + error("%s has multiple links, this one has been removed but not " + "overwritten", path); + else + errorp("unable to remove %s", path); + } } break;