Alexander Viro wrote:
> Look: step of lookup ends with the step upwards. It's 3-d structure, not
> 2-d one. You are getting exactly what you ask for - "." is "do the step
> with zero horizontal part". E.g. "go upwards". Which is no-op for
> everything except the mountpoints. Your problem being?
According to POSIX ANSI/IEEE Std 1003.1 (2nd ed., 1996-07-12):
"If the pathname does not begin with a slash, the predecessor of the
first filename of the pathname is taken to be the current working
directory of the process [...]"
and
"The special filename, dot, refers to the directory specified by its
predecessor."
So it seems at best questionable (1) to me if
chdir("/foo");
stat(".",&st1);
mount(...,"/foo",...);
stat(".",&st2);
yields different st1 and st2 (2), and quite clearly a violation of
POSIX if
stat("bar",&st1);
stat("./bar",&st2);
yields different st1 and st2 in any case (2). "." is _meant_ to be
a no-op.
(1) "questionable", because POSIX explicitly excludes the mount
operation, so by using mount(), this example is outside the
scope of the standard.
(2) In the absence of races with other code changing any of the
objects.
- Werner
-- _________________________________________________________________________ / Werner Almesberger, ICA, EPFL, CH werner.almesberger@ica.epfl.ch / /_IN_N_032__Tel_+41_21_693_6621__Fax_+41_21_693_6610_____________________/- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Tue Mar 07 2000 - 21:00:19 EST