Путь приложения

Applications development, KoOS API questions
  • Mega_Myr wrote:Хотя, на несерьёзном проекте он пожалуй не нужен... :cry:
    Вот это ключевой момент, похоже.
  • На серьёзном проекте всё начинается с планирования. Планирования не было - проект несерьёзный. И текущие проблемы с этим связаны.
    Pathoswithin wrote:Там, где раньше был путь в cp866, сейчас путь в utf-8. Существующие приложения редактируют конец строки и передают её в 70 функцию, которая определяет строку как utf-8 благодаря префиксу в начале. Как это будет работать без префикса?
    0CodErr wrote:Я тебе уже говорил как и куда можно воткнуть этот байт.
    Поцiент безнадёжен. Пожалуй, не буду тратить на него время.

    Siemargl
    Всё правильно.

    К сожалению, 'sys' это ключ, и по другому сделать сложно. К счастью, он всегда равен рамдиску.
  • Нафига вообще новые создавать?! Тут все плачутся, что дескать разработчики не идут. Идут. Но всё больше прочь.
  • Pathoswithin
    Текущие проблемы проблемы связаны с тем, что ты нарушил совместимость с POSIX.
    От того, что проблему подпёрли костылём она не исчезла.
    Продублирую свой пост
    Siemargl wrote:fopen все так же не хочет создать файл с юникодным относительным путем
    Пока не ясно, что с ними делать. Префиксы кодировки это нарушение POSIX. Нет там такой фигни. Или пути "/hd0/1/☺my_file" "/hd0/1/♥my_file" "/☺/hd0/1/♥my_file "/♥/hd0/1/☺my_file" должны указывать на один файл "/hd0/1/my_file"

    Даже если "☺my_file" "♥my_file" "my_file" будут приниматься ядром как одинаковые это не избавит от проблем в существующем коде.

    Пока префикс кодировки не будет убран, будут ошибки.
    Карфаген должен быть разрушен.
  • Простой тест показал, что всё хуже, чем казалось:
    ♥☺222.png валидное имя файла в Windows. Так что не ясно является строка "♥☺222.png" utf-8 кодировкой имени "☺222.png" или нет.
    С чем всех и поздравляю.
    11.png
    11.png (68.68 KiB)
    Viewed 4826 times
    Update.
    Был неправ. символы ☺☻♥ двубайтные.
  • Я вообще не могу понять, как у вас такие пути получаются? Зачем строке маркер, если она будет обрабатываться? А если нужно обработать строку с маркером, почему нельзя использовать указатель+1?
  • Ну я предлагал такой вариант
    кодировку сюда

    Code: Select all

      * +20 = +0x14: byte: 0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    и вот это

    Code: Select all

    (указатель | 0x80000000)
    На ЯВУ это могут быть разные обёртки с суффиксами A и W.
    Или же просто всюду использовать юникод(кому как нравится).
  • Pathoswithin
    Смотри мой пост выше. Как сейчас файловая система будет обрабатывать имя "♥♥events_subsystem.txt ?"
    Карфаген надо разрушать
  • Pathoswithin wrote:Я вообще не могу понять, как у вас такие пути получаются? Зачем строке маркер, если она будет обрабатываться? А если нужно обработать строку с маркером, почему нельзя использовать указатель+1?
    Существующий код не предполагает, что имени файла присутствует префикс кодировки, который не является частью имени. Потому, что такое предположение не соответствует POSIX.
  • В виндовс есть супер префикс \\?\
    Вроде никому не мешает, но написано, что не все функции его понимают.

    Чем моя идея с префиксом по минусовому индексу(смещению) не понравилась?
  • Siemargl, префикс, он ведь необязательный. Но по минусовому смещению что-то всё равно будет. Если я тебя правильно понял, конечно.
  • Siemargl
    1.Минусовый префикс коварная вещь. Он может попасть в несуществующую предыдущую страницу.
    2.Это костыль к POSIX. По этой причине в gnu софте придётся писать спец. куски кода для Колибри.
  • Serge « Вс ноя 27, 2016 2:10 am » Siemargl: в любом случае эти символы уже не годятся для префиксов. Они валидные.
    Судя по wiki для NTFS в пространстве имён Posix допустимы любые символы из кодировки UTF-16, кроме U+0000 (NUL) и «/» (косая черта).
    Выходит, никакие не годятся.
  • Serge wrote:Siemargl
    1.Минусовый префикс коварная вещь. Он может попасть в несуществующую предыдущую страницу.
    2.Это костыль к POSIX. По этой причине в gnu софте придётся писать спец. куски кода для Колибри.
    1. Для argv[0] этот подход годится. Для файловых функций - не очень.
    2. писать все= придется. можно лишь попытаться минимизировать.
    POSIXовый бардак в API, с другой стороны, пора бы уже начать хоронить, а не равняться на него.

    Кстати, ты вот ссылаешься на POSIX, а там AFAIK, вопрос кодировок то и не определен.

    Я предлагаю выработать свой подход.
    Пока озвучены варианты
    - CleverMouse - привести все к UTF-8 (возможно, предложение касалось только argv[0])
    - Pathos - префиксы, сюда же варианты их модификаций - двухбайтовые и по отрицательному смещению
    - Win-подход - сделать группы функций, для каждой кодировки (UTF8, UTF16LE, CP866)
    Last edited by Siemargl on Sun Nov 27, 2016 1:05 am, edited 1 time in total.
  • Who is online

    Users browsing this forum: No registered users and 5 guests