[jamming] Problems with listing files in directories

Klaus Meier winstonkl at hotmail.com
Tue May 23 04:51:06 PDT 2006


I'm searching now recursively in the subdirectories for c-files.
But the problem is that there are always two entries for one file in the 
resulting list.
Here's the code:

# [ ListFilesinDir directory ]
# Lists all Files, also recursively in a given directory
# e.g.: subdirs = [ ListFilesinDir . ] ;
#
# list all files in the directory and subdirectories
#
#---------------------------------------------------------------

rule ListFilesinDir {

  local _f = ;
  local _result = ;
  local _temp ;
  # initially use the files in the current directory
  local _files = [ GLOB $(1) : * ] ;


  # filter so that only real files are included (skip current dir, parent 
dir and all other dirs)
  for _f in $(_files)
  {
	if $(_f:BS) != . && $(_f:BS) != .. && [ MATCH "($(2))" : $(_f) ]
	{
		_result += $(_f) ;
	}
  }

  local _subdirlist = [ ListDirs $(1) ] ;

  # for each subdir/file
  for _subdir in $(_subdirlist)
  {
   	# recurse into it
	_result += [ ListFilesinDir $(_subdir) : $(2) ] ;
  }

  # return the resulting list
  return $(_result) ;
}


c_files = [ ListFilesinDir . : [a-z]*[.][c] ] ;

The output of c_files is the following:

c-files =  .\hello.cpp .\StdAfx.cpp .\lib_p1\source\mytools.cpp 
.\lib_p1\source\mytools.cpp

The ouput of "dir /s /b" is the following:
D:\Programming\hello>dir /s /b
D:\Programming\hello\.svn
D:\Programming\hello\Debug
D:\Programming\hello\exe_1
D:\Programming\hello\exe_2
D:\Programming\hello\hello.cpp
D:\Programming\hello\hello.dsp
D:\Programming\hello\hello.dsw
D:\Programming\hello\hello.ncb
D:\Programming\hello\hello.opt
D:\Programming\hello\hello.plg
D:\Programming\hello\jam.exe
D:\Programming\hello\Jambase
D:\Programming\hello\Jamfile
D:\Programming\hello\jam_log.txt
D:\Programming\hello\lib_p1
D:\Programming\hello\lib_p2
D:\Programming\hello\log.txt
D:\Programming\hello\ReadMe.txt
D:\Programming\hello\StdAfx.cpp
D:\Programming\hello\StdAfx.h
D:\Programming\hello\windows.jam
D:\Programming\hello\.svn\.svn-test
D:\Programming\hello\lib_p1\debug
D:\Programming\hello\lib_p1\source
D:\Programming\hello\lib_p1\source\mytools.cpp
D:\Programming\hello\lib_p1\source\mytools.h

Is there any suggestion of how I can solve this problem??

Best regards

Winston

_________________________________________________________________
Sie suchen E-Mails, Dokumente oder Fotos? Die neue MSN Suche Toolbar mit 
Windows-Desktopsuche liefert in sekundenschnelle Ergebnisse. Jetzt neu! 
http://desktop.msn.de/ Jetzt gratis downloaden!


More information about the jamming mailing list