Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

rmz.c

Go to the documentation of this file.
00001 #include "mrilib.h"
00002 #include <unistd.h>
00003 #include <stdlib.h>
00004 #include <time.h>
00005 
00006 #define NREP 2
00007 #define NBUF 4096
00008 static unsigned char buf[NBUF] ;
00009 
00010 int main( int argc , char * argv[] )
00011 {
00012    int iarg , ii,ll,jj , verb=1 , ibot , irep,nrep=NREP , ng=0 ;
00013    FILE * fp ;
00014 
00015    if( argc < 2 || strcmp(argv[1],"-help") == 0 ){
00016       printf("Usage: rmz [-q] [-#] filename ...\n"
00017              " -- Zeros out files before removing them\n") ;
00018       exit(0) ;
00019    }
00020 
00021    iarg = 1 ;
00022    while( iarg < argc && argv[iarg][0] == '-' ){
00023 
00024       if( strcmp(argv[iarg],"-q") == 0 ){
00025         verb = 0 ; iarg++ ; continue ;
00026       }
00027 
00028       irep = strtol( argv[iarg] , NULL , 10 ) ;
00029       if( irep < 0 ){
00030         nrep = -irep ; iarg++ ; continue ;
00031       } else {
00032         fprintf(stderr,"*** Unknown option: %s\n",argv[iarg]) ; exit(1) ;
00033       }
00034 
00035    }
00036 
00037    if( iarg >= argc ){
00038       fprintf(stderr,"*** No files to delete?\n") ; exit(1) ;
00039    }
00040 
00041    srand48((long)time(NULL)) ;
00042 
00043    ibot = iarg ;
00044    for( irep=0 ; irep <= nrep ; irep++ ){
00045 
00046       jj = lrand48() % 7 ;
00047 
00048       if( irep < nrep ){
00049         for( ii=0 ; ii < NBUF ; ii++ ) buf[ii] = ((3+2*irep)*ii+jj) % 255 ;
00050       } else {
00051         for( ii=0 ; ii < NBUF ; ii++ ) buf[ii] = 0 ;  /* final loop ==> zero */
00052       }
00053 
00054       for( iarg=ibot ; iarg < argc ; iarg++ ){
00055          ii = THD_is_directory( argv[iarg] ) ;
00056          if( ii != 0 && irep == 0 ){
00057            fprintf(stderr," ** Can't erase a directory: %s\n",argv[iarg]) ;
00058            continue ;
00059          }
00060 
00061          ll = THD_filesize( argv[iarg] ) ;
00062          if( ll >= 0 && THD_is_file(argv[iarg]) ){
00063             fp = fopen( argv[iarg], "r+" ) ;
00064             if( fp != NULL ){
00065                for( jj=0 ; jj < ll ; jj += NBUF )
00066                   fwrite( buf, 1, NBUF, fp ) ;
00067                fflush(fp) ; fsync(fileno(fp)) ; fclose(fp) ;
00068                if( irep == nrep ){
00069                   unlink(argv[iarg]) ;
00070                   if( verb ) fprintf(stderr," -- Removed file %s\n",argv[iarg]) ;
00071                } else if( irep == 0 ) ng++ ;
00072             } else {
00073                if( irep == 0 )
00074                   fprintf(stderr," ** Can't write to file %s\n",argv[iarg]) ;
00075             }
00076          } else {
00077             if( irep == 0 )
00078                fprintf(stderr," ** Can't access file %s\n",argv[iarg]) ;
00079          }
00080       }
00081       sync() ; fprintf(stderr,"++ End pass %d\n",irep+1); sleep(1) ;
00082 
00083       if( ng == 0 ) break ;  /* none were 'good' */
00084    }
00085 
00086    exit(0) ;
00087 }
 

Powered by Plone

This site conforms to the following standards: