OberonCore https://forum.oberoncore.ru/ |
|
Некорректность реализации HostFiles.Register? https://forum.oberoncore.ru/viewtopic.php?f=131&t=1921 |
Страница 1 из 1 |
Автор: | Евгений Темиргалеев [ Среда, 30 Сентябрь, 2009 20:52 ] |
Заголовок сообщения: | Некорректность реализации HostFiles.Register? |
Эффект проявился в Linux/wine где допустимы пути "/x/y/../z". Если в windows это не допустимо, то ошибки нет. Файл должен появляться в той локации, где был создан New: Цитата: PROCEDURE (f: File) Register (name: Name; type: Type; ask: BOOLEAN; OUT res: INTEGER) Т.к. Register не проверят, что в name только имя, --- относит. путь + имя нивелирует "it will appear in the subdirectory specified by loc".... PROCEDURE (d: Directory) New (loc: Locator; ask: BOOLEAN): File NEW, ABSTRACT Returns a new file object (or NIL if this is not possible). This file is anonymous, i.e., not yet registered in the directory. (In host file systems where anonymous files are not directly supported, they may appear under temporary names in subdirectory loc.) If the file is registered later, it will appear in the subdirectory specified by loc. Код: PROCEDURE (f: File) Register (name: Files.Name; type: Files.Type; ask: BOOLEAN; OUT res: INTEGER);
VAR b: INTEGER; fname: FullName; BEGIN ASSERT(f.state = new, 20); ASSERT(name # "", 21); Append(f.loc.path, name, type, f.loc.maxLen, fname); CheckDelete(fname, f.loc.path, ask, res); ASSERT(res # 87, 100); |
Автор: | Иван Горячев [ Четверг, 01 Октябрь, 2009 01:41 ] |
Заголовок сообщения: | Re: Некорректность реализации HostFiles.Register? |
А каким должно быть поведение? Вышибать по ASSERTу, если в name передано имя с путём? Имя файла то может прийти откуда угодно, всё не проконтролируешь. Проще доку исправить |
Автор: | Евгений Темиргалеев [ Четверг, 01 Октябрь, 2009 10:03 ] |
Заголовок сообщения: | Re: Некорректность реализации HostFiles.Register? |
Иван Горячев писал(а): А каким должно быть поведение? res = 1 invalid parameter (name or locator)Хотя там и ASSERT указан Pre name is a file name 22 |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |