From 73827ba1f4a50107272d6e465b92f356fb9e0abe Mon Sep 17 00:00:00 2001 From: erdgeist <> Date: Sun, 9 May 2004 14:53:42 +0000 Subject: initial --- src/cutfile.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/cutfile.c (limited to 'src/cutfile.c') diff --git a/src/cutfile.c b/src/cutfile.c new file mode 100644 index 0000000..a2c87dc --- /dev/null +++ b/src/cutfile.c @@ -0,0 +1,33 @@ +#include "mystdlib.h" +#include + +int main( int argc, char **argv ) +{ + MAP file = NULL; + unsigned long i = 0; + + if( !(file = map_file( argv[1], 0 ) ) ) exit( 1 ); + + if( file->size & 15 ) + puts( "WARNING: File size not multiple of 16" ); + + while( i < file->size && *(unsigned long*)(file->addr+i) < 2911418625UL ) + i+= 16; + + if( i < file->size) + { + if( i ) { + off_t newsize = (off_t)i; + printf( "%s reduced by %8d bytes. (Offending offset: %09lu)\n", argv[1], (unsigned long)(file->size - i ), *(unsigned long*)(file->addr+i) ); + ftruncate( file->fh, newsize ); + } else { + printf( "%s removed. (Offending offset: %09lu)\n", argv[1], *(unsigned long*)(file->addr+i) ); + unlink( argv[1] ); + } + } + + unmap_file( &file ); + + + return 0; +} -- cgit v1.2.3