Re[13]: std::filesystem::copy_file и права
От: · Великобритания  
Дата: 23.07.25 12:31
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>>>·>Ты же сам ответил на свой вопрос: разработка std::filesystem базировалась на этом взятом из UNIX систем стандарте. Очевидно же.

BFE>>>Это не ответ на мой вопрос.
BFE>>>Зачем в стандарт языка тащить стандарт API системы?
BFE>·>posix — это не api конкретной системы.
BFE>Да.
Т.е. твоя идея std::posix_filesystem — не состоятельна и "Зачем в стандарт языка тащить стандарт API системы" — дурацкий вопрос.

BFE>А некоторые версии Windows поддерживают Posix. И что?

Я в курсе. И ничего.

BFE>Остальные тоже тоже как-то стандартизованы отдельными документами.

И что?

BFE>Что из перечисленного:

BFE>fstream, std::cin, std::cout, atomic, chrono, mutex, random, thread, locale, map, vector, string
BFE>описано в отдельном стандарте?
Не знаю. А какая разница? Разбираться лень, но например thread по сути поделие для замены posix-тредов.
Кстати, а в каком отдельном стандарте описано std::filesystem?

BFE>·>Это же ЯП. Не понимаю я таких аргументов.

BFE>По какому критерию выбран именно этот стандарт для добавления в C++, а не какой-то другой?
Понятия не имею. А какая разница?

BFE>>>POSIX — это только часть возможного приложения языка, а C++ — универсальный язык. Хотите добавить что-то специфичное, то так и назовите std::posix_filesystem

BFE>·>А я понимаю: ты путаешь ЯП и стандартную библиотеку. Так вот... std — это стандартная библиотека языка, а не язык.
BFE>std библиотека описана в том же стандарте, что и сам язык. Более того, некоторые части std библиотеки являются неотъемлемой часть языка, например std::initializer_list.
И что? И кто из fstream, std::cin, std::cout, atomic, chrono, mutex, random, thread, locale, map, vector, string является неотъемлемой часть языка?

BFE>>> Ладно, если вы не понимаете словами, попробую описать задачу. У вас есть символьная ссылка, то на что она указывает не существует. Вопрос: как создать тот путь, на который она указывает, чтобы не нарушить требование выше: "Portable code should use (3,4)"

BFE>·>Изучай доки как файловая система работает. Задача std — обеспечить стандартизованый доступ к API файловой системы, а то как она функционирует — опредеяется реализацией фс.
BFE>Скажите, какая цель создания библиотеки std::filesystem ?
Такая же как у fstream, std::cin, std::cout, atomic, chrono, mutex, random, thread, locale, map, vector, string.

BFE>·>Это, кстати, заморочки win/ntfs, насколько я понял. Если у тебя где-то под рукой есть Винда, можешь потетстить.

BFE>Да неужели?
Ну да.

BFE>А вот скажите, для работы с (ex)FAT накопителями, которые, по числу, видимо, превосходят количество накопителей на других форматах файловых систем, библиотека std::filesystem приспособлена хорошо?

define "хорошо". И что, по-твоему, приспособлено лучше?

BFE>·>Зачем? Они не такие уж экзотические. Скажем, даже в винде есть "\\.\pipe\".

BFE>Уверен, что если провести опрос, то окажется что более 90% программистов никогда в жизни не работали с такими файлами именно как с файлами.
И что?

BFE>·>Да, кстати, implementation-defined типы тоже поддерживаются.

BFE>я знаю.
А в чём тогда претензия?

BFE>·>Не очень ясно написано. Напиши тесты, поглядим как сделать имплементацию.

BFE>pathName first second
BFE>"" "" ""
BFE>"/" "/" ""
BFE>"a" "" "a"
BFE>"/a" "/" "a"
BFE>"b/a" "b/" "a"
BFE>"a/" "" "a"
BFE>"a/." "" "a"
BFE>"a/.." "a/.." ""
BFE>"/a/b" "/a" "b"
BFE>"../b" ".." "b"
BFE>"./b" "." "b"
Это просто parent_path и filename. Вот только почему-то ты хочешь случайно расставленные / с неясно какой целью. Добавляй их сам. Я логику не улавливаю.
Покажи решение на ЯП/либе, в которых, есть по-твоему правльно реализованный path.

BFE>·>Понятно, но не правильно. Последний компонент path — всегда имя. Каким типом файла является данное имя в данной файловой системе — по пути никак не определить. Чтобы узнать — надо прочитать содержимое фс.

BFE>Укажите на имя для пути "/a/" и для пути "/"
В данных путях его нет, has_filename возвращает false.

BFE>·>Всё равно неясно. Почему в других ЯП с удачей всё в порядке, скажем, rust std::fs удача не понадобилась, а в C++ — просто место проклятое, наверное.

BFE>Другие языки тоже универсальные?
А какие ты не универсальные языки знаешь? Ну кроме sql, html?

BFE>rust уже стандартизовали?

Не знаю. А какая разница?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.