Hi, Below you will find some code, which I copied from one of my programs. It is not very elegant, but it works! Good luck, Marco van Leeuwen. ------ Example code Char_t dirname[]="data/new"; void* dir=gSystem->OpenDirectory(gSystem->ExpandPathName(dirname)); int nruns=0; Char_t *file_name; TString Tname; Char_t file_list[100][256]; do { file_name = gSystem->GetDirEntry(dir); Tname=file_name; while (!Tname.Contains(".root") && file_name){ file_name = gSystem->GetDirEntry(dir); Tname=file_name; //printf("%s\n",Tname.Data()); } if (file_name && Tname.Contains("98h")) { sprintf(&file_list[nruns],"%s/%s",dirname,file_name); printf("file %d: %s\n",nruns,file_list[nruns]); nruns++; } } while (file_name); Jens Ivar Jordre wrote: > > Hello rooters of the world. > > I'm working on a macro to analyze several data files all being in the same > directory. Btw. I'm using v2.23/12 on RH6.1. Now, I want to go through the > files one by one. Therefore I wonder if there is a way in ROOT to be > able to get hold of the names of files in a directory in succesive > order. > I tried both with both TSystem's (i.e. gSystem) and TUnixSystem's > GetDirEntry(void *dirp), but now luck. What kind of pointers are allowed > for 'dirp' in this function call? > The description of TUnixSystem::GetDirEntry(..) is the best interpretation > of what I want to do: > --- > const char* GetDirEntry(void *dirp) > > Get next Unix file system directory entry. Returns 0 if no more entries. > --- > So, any help from around the world? > > -------------------------------------------------------------- > Jens Ivar Jřrdre, masterstud. in Experimental Nuclear Physics > Addr.: Dep. of Phys., UiB, Allégt. 55, N-5007 BERGEN, NORWAY > E-mail: JensIvar.Jordre@fi.uib.no, Phone office: (+47)55582734 > Web: http://www.fi.uib.no/~jens > > "Time's fun when you're having flies." > -- Kermit the Frog
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:20 MET