Repository: carbon-language/carbon-lang
File: toolchain/install/busybox_info.cpp (C++)

Code before:
    // - Other tools will be: `<prefix>/lib/carbon/<group>/bin/<tool>`
    //
    // We also check that the current path is within a `bin` directory to
    // provide best-effort checking for accidentally walking up from symlinks
    // that aren't within an installation-shaped tree.
    auto parent_path = info.bin_path.parent_path();
    // Strip any `.` path components at the end to simplify processing.
    while (parent_path.filename() == ".") {
      parent_path = parent_path.parent_path();
    }
    if (parent_path.filename() == "bin") {
      // Try to walk up the path using `.parent_path()` if we can to avoid extra
      // components to resolve. However, if the path is relative to the current
      // working directory and we run out of parent components, walk up by
      // appending `../` components instead.
      auto walk_up = [](std::filesystem::path p) {
        // Remove `./` components.
        while (p.filename() == ".") {
          p = p.parent_path();
        }
        if (!p.is_absolute() && (p.empty() || p.filename() == "..")) {
          p = p / "..";
        } else {
          p = p.parent_path();
        }
        return p;
      };

      // Note that we walk up using `.parent_path` rather than by appending
      // `../` components. While largely equivalent, this helps keep paths
      // shorter and avoids redundant work. We also don't expect to need to
      // respect _internally_ strange symlinking structures that would need to
      // use appended `../` components.
      auto lib_path = info.bin_path.filename() == "carbon"
                          ? walk_up(std::move(parent_path)) / "lib" / "carbon"
                          : walk_up(walk_up(std::move(parent_path)));
      auto busybox_path = lib_path / "carbon-busybox";
      if (auto access = Filesystem::Cwd().Access(busybox_path);
          access.ok() && *access) {
        info.bin_path = busybox_path;
        return info;
      }
    }

    // Try to walk through another layer of symlinks and see if we can find the
    // installation there or are linked directly to the busybox.
    auto readlink = Filesystem::Cwd().Readlink(info.bin_path);
    if (!readlink.ok()) {
      return ErrorBuilder()
             << "expected carbon-busybox symlink at `" << info.bin_path << "`";
    }

Review comment (performance):
Is this a performance thing, that you didn't return directly? i.e.:

```suggestion
          return p / "..";
        } else {
          return p.parent_path();
        }
```

Code after:
                                 "/prefix/lib/carbon/carbon-busybox";
      if (auto access = Filesystem::Cwd().Access(busybox_path);
          access.ok() && *access) {
        info.bin_path = busybox_path;
      }
      return info;
    }

    // If we've not already reached the busybox, look for it relative to the
    // current binary path. This can help more immediately locate an
    // installation tree, and avoids walking through a final layer of symlinks
    // which may point to content-addressed storage or other parts of a build
    // output tree.
    //
    // We break this into two cases we need to handle:
    // - Carbon's CLI will be: `<prefix>/bin/carbon`
    // - Other tools will be: `<prefix>/lib/carbon/<group>/bin/<tool>`
    //
    // We also check that the current path is within a `bin` directory to
    // provide best-effort checking for accidentally walking up from symlinks
    // that aren't within an installation-shaped tree.
    auto parent_path = info.bin_path.parent_path();
    // Strip any `.` path components at the end to simplify processing.
    while (parent_path.filename() == ".") {
      parent_path = parent_path.parent_path();
    }
    if (parent_path.filename() == "bin") {
      // Note that we use a specialized approach to walking up rather than
      // always appending `../` components. While largely equivalent, this helps
      // keep paths shorter and avoids redundant work. We also don't expect to
      // need to respect _internally_ strange symlinking structures that would
      // need to use appended `../` components.
      auto lib_path = info.bin_path.filename() == "carbon"
                          ? WalkUp(std::move(parent_path)) / "lib" / "carbon"
                          : WalkUp(WalkUp(std::move(parent_path)));
      auto busybox_path = lib_path / "carbon-busybox";
      if (auto access = Filesystem::Cwd().Access(busybox_path);
          access.ok() && *access) {
        info.bin_path = busybox_path;
        return info;
      }
    }

    // Try to walk through another layer of symlinks and see if we can find the
    // installation there or are linked directly to the busybox.
    auto readlink = Filesystem::Cwd().Readlink(info.bin_path);
    if (!readlink.ok()) {
      return ErrorBuilder()
             << "expected carbon-busybox symlink at `" << info.bin_path << "`";
    }