Hi, On Sun, 22 Jul 2007, Junio C Hamano wrote: > @@ -28,6 +28,17 @@ static void remove_lock_file_on_signal(int signo) > static int lock_file(struct lock_file *lk, const char *path) > { > int fd; > + struct stat st; > + > + if ((!lstat(path, &st)) && S_ISLNK(st.st_mode)) { > + ssize_t sz; > + static char target[PATH_MAX]; > + sz = readlink(path, target, sizeof(target)); > + if (sz < 0) > + warning("Cannot readlink %s", path); > + else > + path = target; > + } I wonder if we should not make this a while loop: struct stat st; int i = 0; while (i++ < 10 && !lstat(path, &st) && S_ISLNK(st.st_mode)) { ssize_t sz; static char target[PATH_MAX]; sz = readlink(path, target, sizeof(target)); if (sz < 0) die("Cannot readlink %s", path); else path = target; } if (i == 10) die ("Too deep symlink depth: %s", path); (As you see, I would not warn, but die if readlink fails.) Ciao, Dscho - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html