catdoc для win32
Aug. 6th, 2009 12:56 pmСегодня некий анонимус запостил в BTS catdoc ссылку на собранную им native win32 версию.
С моей точки зрения версия совершенно неправильная. Вопрос в том, какая должна быть правильной.
1. Сборка mingw32. Это хорошо, это правильно. Еще лучше, если оно будет собираться кросс-компилятором с использованием штатного configure (вот этого, по-моему, товарищ не обеспечил)
2. Использование какой-то посторонней реализации glob. Это отказать. glob в catdoc нужен только для получения списка файлов кодировок. Надо написать свою реализацию решения именно этой задачи на чистом Win32 API. Есть же отдельная реализация для DOS, ну будет еще одна для win32.
3. Размещение файлов кодировок в той же директории, где исполняемый файл. Не уверен что это хорошо. С одной стороны, в Win32 принято класть все файлы приложения в каталог в %ProgramFiles%.
С другой - командно-строчная утилита должна вызываться из PATH. Вот и думай что делать - либо модифицировать PATH в инсталляторе (и какого же размера будет тот PATH, если каждая мелочевка так будет делать) либо класть бинарники в system32, а кодировки в Program Files. Я честно не знаю, какой вариант лучше.
4. Определение умолчательной кодировки. Понятно, что надо это делать не через mingw-шный setlocale, а через GetACP/GetConsoleCP. Но вот через который из них? С одной стороны, если мы запускаем catdoc просто из командной строки, должна использоваться консольная кодировка, чтобы вывод был читаемым. С другой стороны, полагаю, что основное применение catdoc - в каких-нибудь скриптах-индексаторах www, а там ANSI-кодировка была бы предпочтительнее.
5. Конфигурация. По хорошему счету, надо бы все что у меня бывает в .catdocrc (/etc/catdocrc, или catdoc.rc в директории бинарника в DOS) держать в реестре. Причем искать как в HKLM, так и в HKCU. Но поскольку GUI-щный конфигуратор вряд ли кто напишет, не жестоко ли это - заставлять пользователя это через regedit конфигурить? Может лучше catdocrc положить куда-нибуль в %APPDATA%?
6. Инсталлятор. Надо бы NSIS-овский инсталлятор написать, благо он тоже кросс-компилируется.
Советы, предложения, помощь - принимаются.
С моей точки зрения версия совершенно неправильная. Вопрос в том, какая должна быть правильной.
1. Сборка mingw32. Это хорошо, это правильно. Еще лучше, если оно будет собираться кросс-компилятором с использованием штатного configure (вот этого, по-моему, товарищ не обеспечил)
2. Использование какой-то посторонней реализации glob. Это отказать. glob в catdoc нужен только для получения списка файлов кодировок. Надо написать свою реализацию решения именно этой задачи на чистом Win32 API. Есть же отдельная реализация для DOS, ну будет еще одна для win32.
3. Размещение файлов кодировок в той же директории, где исполняемый файл. Не уверен что это хорошо. С одной стороны, в Win32 принято класть все файлы приложения в каталог в %ProgramFiles%.
С другой - командно-строчная утилита должна вызываться из PATH. Вот и думай что делать - либо модифицировать PATH в инсталляторе (и какого же размера будет тот PATH, если каждая мелочевка так будет делать) либо класть бинарники в system32, а кодировки в Program Files. Я честно не знаю, какой вариант лучше.
4. Определение умолчательной кодировки. Понятно, что надо это делать не через mingw-шный setlocale, а через GetACP/GetConsoleCP. Но вот через который из них? С одной стороны, если мы запускаем catdoc просто из командной строки, должна использоваться консольная кодировка, чтобы вывод был читаемым. С другой стороны, полагаю, что основное применение catdoc - в каких-нибудь скриптах-индексаторах www, а там ANSI-кодировка была бы предпочтительнее.
5. Конфигурация. По хорошему счету, надо бы все что у меня бывает в .catdocrc (/etc/catdocrc, или catdoc.rc в директории бинарника в DOS) держать в реестре. Причем искать как в HKLM, так и в HKCU. Но поскольку GUI-щный конфигуратор вряд ли кто напишет, не жестоко ли это - заставлять пользователя это через regedit конфигурить? Может лучше catdocrc положить куда-нибуль в %APPDATA%?
6. Инсталлятор. Надо бы NSIS-овский инсталлятор написать, благо он тоже кросс-компилируется.
Советы, предложения, помощь - принимаются.