C++ Logo

SG16

Advanced search

Subject: Re: [SG16-Unicode] filesystem::path_view::compare()
From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2019-08-23 07:27:14


> Since different components of a path can be on different filesystems and
> different filesystems have different rules for storing path, can we
> innovate a bit here?

Sure. Using LLFIO:

bool path_equality(path_view a, path_view b)
{
  expected<file_handle, file_io_error> a = catch(file({}, a, :mode::none));
  expected<file_handle, file_io_error> b = catch(file({}, b, :mode::none));
  return a.has_value() && b.has_value() && a->unique_id() == b->unique_id();
}

This is the only feasible, and correct, way of performing filesystem
path equality comparison. This is what we ought to do.

Niall


SG16 list run by sg16-owner@lists.isocpp.org