App-SeismicUnixGui

 view release on metacpan or  search on metacpan

lib/App/SeismicUnixGui/developer/Stripped/shell/sugetgthr.su.main.windowing_sorting_muting  view on Meta::CPAN

 verbose=0		=1 more chatty					
 vt=0			=1 allows gathers with variable length traces	
 			no header checking is done!			
 ns=			must be specified if vt=1; number of samples to read




segy tr;

int
main(int argc, char **argv)
{
	
	cwp_String dir="";	/* input directory containng the gathers
	char *fname=NULL;	
	char *ffname=NULL;
	
	DIR *dp=NULL;
	struct dirent *d=NULL;
	struct stat __st;
	FILE *fp=NULL;
	int fd=0;
	
	int verbose;
	int vt=0;
	ssize_t nread;
	int ns=0;

	
	/* Initialize
	initargs(argc, argv);
	requestdoc(1);

        /* Get parameters
        MUSTGETPARSTRING("dir", &dir);
       	if (!getparint   ("verbose", &verbose)) verbose = 0;
       	if (!getparint   ("vt", &vt)) vt = 0;
	if(vt)MUSTGETPARINT("ns",&ns); 
        checkpars();
	
	/* Open the directory
	if ((dp = opendir(dir)) == NULL)
		err(" %s directory not found\n",dir);
	
	/* For each file in directory
	while (( d = readdir(dp)) !=NULL) {
		
		fname = ealloc1(strlen(d->d_name)+1,sizeof(char));
		strcpy(fname,d->d_name);
		
		/* Skip . and .. directory entries
		if(strcmp(fname,".") && strcmp(fname,"..")) {		
			ffname = ealloc1(strlen(d->d_name)+strlen(dir)+2,sizeof(char));
			
			/* Create full filename
			sprintf(ffname, "%s/%s",dir,fname);
			if(verbose==1) warn("%s",ffname);
			
			/* get some info from the file
			stat(ffname,&__st);
			if(__st.st_size > 0) {
			
				/* Open the file and read traces into stdout*/
 				if(vt) {
					fd = open(ffname,O_RDONLY|CWP_O_LARGEFILE);
				/*	nread=fread(&tr,(size_t) HDRBYTES,1,fp); 
					nread=read(fd,&tr,(size_t) HDRBYTES); 
					memset((void *) &tr.data[tr.ns], (int) '\0' ,MAX(ns-tr.ns,0)*FSIZE);
				/*	nread+=fread(&tr.data[0],(size_t) tr.ns*FSIZE,1,fp);
					nread+=read(fd,&tr.data[0],(size_t) tr.ns*FSIZE);
				} else {
					fp = efopen(ffname, "r");
					nread=fgettr(fp, &tr);
				}
				do {
					if(vt) { 
						tr.ns=ns;
						fwrite(&tr,ns*FSIZE+HDRBYTES,1,stdout);
					} else {
						puttr(&tr);
					}
					if(vt) {
						/* nread=fread(&tr,(size_t) HDRBYTES,1,fp);
						nread=read(fd,&tr,(size_t) HDRBYTES);
						memset((void *) &tr.data[tr.ns], (int) '\0' ,MAX(ns-tr.ns,0)*FSIZE);
						/* nread+=fread(&tr.data[0],(size_t) tr.ns*FSIZE,1,fp);
						nread+=read(fd,&tr.data[0],(size_t) tr.ns*FSIZE);
					} else {
						nread=fgettr(fp, &tr);
					}
				} while(nread);
				if(vt) close(fd);
				else efclose(fp);
			} else {
				warn(" File %s has zero size, skipped.\n",ffname);
			}
			free1(ffname);
		}
		free1(fname);
		
	}
	closedir(dp);
        return(CWP_Exit());
}



( run in 0.569 second using v1.01-cache-2.11-cpan-39bf76dae61 )