DragonFly kernel List (threaded) for 2008-02
DragonFly BSD
DragonFly kernel List (threaded) for 2008-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Globbing (was Re: HAMMER update 10-Feb-2008)


From: Oliver Fromme <check+jw2qjj00rso82fn7@xxxxxxxxxx>
Date: 11 Feb 2008 12:44:28 GMT

Bill Hacker wrote:
 > But the larger issue is indeed expanded globbing support *somewhere*.
 > 
 > And not just for new file systems, but old ones that have long-since 
 > outgrown the currently available resources.
 > 
 > Massive drive and name space isn't a lot of use if we are short matching 
 > utils to manage it well.

Filename expansion ("globbing") has nothing to do with
file systems.  It is purely a shell feature (and every
shell implements its own).  Putting it into the kernel
makes no sense.  Note that there are globbing support
functions in libc (POSIX/SUS wants them, and some apps
use them), but no shell uses them, even the base /bin/sh
implements its own filename expansion.

The limit you're talking about ("too many arguments")
is the execve() argument limit.  Historically all the
arguments plus environment could not exceed 64 KB.
A few years ago FreeBSD increased the limit to 256 KB.
I don't know if DragonFly did the same, but it doesn't
matter much -- The point is that things like "rm *"
are unsafe if you don't know to what amount the glob
expression will expand.  No matter whether the limit
is 64 KB or 256 KB, there _is_ a limit.

That's why xargs(1) exists:  "echo * | xargs rm" is
safe (echo is a shell-builtin, so it is not subject to
the execve argument limit).

Best regards
   Oliver

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart

FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]