On Feb 14, 2007, at 2:00 AM, Mark Duling wrote:

Like I said, file copy (or just copy, after my commit) will in fact copy

directories.


I'm sorry to be so dull.  You seem to be saying this:


copy ${sourcedir}  ${destdir}


is equivalent to this:


system "cp -R ${sourcedir}  ${destdir}"


But doesn't 'eval xinstall [glob ${source}/* ${dest}' fail if there are

nested directories?  So I thought perhaps your new copy command would have

the same problem.  I'm sorry we're talking by each other, but I have some

preconceptions that I'm having trouble getting beyond at the moment.


xinstall and file copy are different - xinstall is implemented in pextlib, and apparently doesn't recursively copy directories. It's a shame.

So yeah, while xinstall won't handle directories, copy will do it just fine. The difference is that copy won't handle file permissions, but xinstall does.

find basedir {filter_expression} {do stuff with $filename}


Because if filter_expression = "*", then is there a tcl command I can use

in {do stuff with ..} that doesn't care if something is a file or

directory?  Because I thought that the TCL extensions I've learned so far

require me to know in advance whether I'm copying files or directories, so

I wonder if it is possible for {filter_expression} to be "*".


Actually, filter_expression isn't a glob, it's a tcl expression. In the current incarnation of find, you want to use something like {expr 1}. That will make it work on everything. That said, it will recurse into directories, so if you want the equivalent of the above xinstall command you'd simply do

eval file copy [list [glob -directory ${source} *]] ${dest}

Of course, this does have the problem where glob won't find dot-files. and if you use * .* instead of the *, it will, but it'll find . and .. as well. It's annoying.

-- 
Kevin Ballard
http://kevin.sb.org
eridius@macports.org
http://www.tildesoft.com