|
Boost : |
From: Jan Langer (jan_at_[hidden])
Date: 2002-02-25 14:24:48
i uploaded a new version of filesystem which meets bemans requirements.
i have created a class attribute_set (according to dylans proposal). i
implemented only three attributes to provide an example.
a small example:
directory_iterator i (current_directory <char> ()), end;
std::size_t ts = 0;
for (; i != end; ++i)
{
attribute_set a (*i);
require <size <char> > (a);
require <is_directory <char> > (a);
std::size_t s = get <size <char> > (a);
if (!get <is_directory <char> > (a))
{
ts += s;
}
std::cout << std::setw (12) << s << " " << *i << std::endl;
}
std::cout << "\ntotal size: " << ts << "\n";
get() and set() also be called with basic_string as an argument. but in
this case the string is passed to a temporary attribute_set.
several questions which came up during writing:
- should a posix dir_it skip "." and ".."
- i currently implemented the classes with basic_ and typedef to avoid
the char template parameter. is this ok?
- what should the hierarchy iterator do in case of posix? just have
always only one element ("/")?
- how can i get rid off the <char>'s behind the attributes? it does
not look well.
On Mon, 25 Feb 2002, Beman Dawes wrote:
> >> >>string_t getcwd();
> >> >>bool chdir(name_t name);
> >>
> >> No, not without a lot of discussion. Go back and read the
> >> requirements. Globals are too evil to just casually toss into the
> >hat.
> >>
> >But absolutely necessarily. You can't implement absolute() with it.
>
>How absolute() does its job internally is an implementation detail; that
>isn't a good argument for exposing getcwd/chdir.
what should absolute() do? it isn't mentioned in the requirements as a
function.
> >I guess if the only access to the current working dir is by calling
> >absolute(".") I'd live with it but I wouldn't be happy.
> >chdir is useful for a few limited purposes, as long as you ensure all
> >relative paths are kept to one thread. It's also useful when forking
> >child processes, but in that case you need a specialised interface,
> >because under NT you have to do it quite differently. I already
> >started work on a class for forking subprocesses, not sure if I
> >posted anything here.
>
>Everything you at talking about is non-portable. "." for example. Fine if
>you want to do that in your own program, but I'd like that sort of
>non-portable thinking not to seep into the interface.
i would like to see chdir-functions since its not even possible to write
a ls-like-program without it. it is not absolutely necessary but it
would make many things easier (eg. ls).
-- jan langer ... jan_at_[hidden] "pi ist genau drei"
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk