How about this version? I don't like the looking up "." paradigm.
Index: dir-lookup.c
===================================================================
RCS file: /cvs/hurd/libdiskfs/dir-lookup.c,v
retrieving revision 1.46
diff -u -b -p -r1.46 dir-lookup.c
--- dir-lookup.c 2001/06/16 20:23:09 1.46
+++ dir-lookup.c 2001/06/21 04:09:22
@@ -333,12 +333,20 @@ diskfs_S_dir_lookup (struct protid *dirc
if (diskfs_read_symlink_hook)
error = (*diskfs_read_symlink_hook)(np, pathbuf);
if (!diskfs_read_symlink_hook || error == EINVAL)
+ {
error = diskfs_node_rdwr (np, pathbuf,
0, np->dn_stat.st_size,
0,
dircred,
&amt);
+
if
(!error)
+
assert
(amt
==
np->dn_stat.st_size);
+
}
if
(error)
goto
out;
+ if (np->dn_stat.st_size == 0) /* symlink to "" */
+ path = nextname;
+ else
+ {
if (nextname)
{
pathbuf[np->dn_stat.st_size] = '/';
@@ -355,8 +363,9 @@ diskfs_S_dir_lookup (struct protid *dirc
strcpy (retryname, pathbuf);
goto out;
}
-
path = pathbuf;
+ }
+
if (lastcomp)
{
lastcomp = 0;
@@ -364,8 +373,16 @@ diskfs_S_dir_lookup (struct protid *dirc
creation, so clear the flag here. */
create = 0;
}
+
diskfs_nput (np);
np = 0;
+
+ if (path == 0) /* symlink to "" was the last component */
+ {
+ np = dnp;
+ dnp = 0;
+ break;
+ }
}
else
{
_______________________________________________
Bug-hurd mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-hurd