diff -uNr chemtool-1.6.11/main.c chemtool-1.6.11-new/main.c --- chemtool-1.6.11/main.c 2007-08-26 14:49:26 +0300 +++ chemtool-1.6.11-new/main.c 2008-05-11 15:00:28 +0300 @@ -2950,6 +2950,10 @@ strcpy (oldname, filename); strcpy (filename, gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs))); + + if (strstr(filename, ".cht") == NULL) + strcat(filename, ".cht"); + if (datadir == NULL || (int)strlen (datadir) == 0) { tempstr = strrchr (filename, '/');
Created attachment 2612 [details] patch for chemtool
Что такое "уже зарегистрированы в системе"? Почему используется strcat?
(In reply to comment #2) > Что такое "уже зарегистрированы в системе"? не понял > Почему используется strcat? Исползование strcat забирает 4 символа у масива filename[512]. Думаю мало кому захочется создавать имена файлов с именами длиной более 508 знаков. Если есть какие-то мне неизвестные моменты по использованию strcat() дайте ссылку где почитать. Я применил этот патч и пересобрал программу для ALD4.0.1 все работает как и раньше, но с необходимой функцыональностью при сохранении файлов.
(In reply to comment #3) > > Что такое "уже зарегистрированы в системе"? > не понял Ну это ваша фраза, вам должно быть более понятно. Переформулирую: что делает патч? > > Почему используется strcat? > Исползование strcat забирает 4 символа у масива filename[512]. > Думаю мало кому захочется создавать имена файлов с именами длиной более 508 знаков. Тогда ладно.
(In reply to comment #4) > (In reply to comment #3) > > > Что такое "уже зарегистрированы в системе"? > > не понял > Ну это ваша фраза, вам должно быть более понятно. Понял, речь идет о файлах с расширениеи *.cht. Так вот они ассоциируються с программой chemtool. > Переформулирую: что делает патч? патч ничего не делает, его используют для внесения изменений в исходный код (в нашем случае).
(In reply to comment #5) > Понял, речь идет о файлах с расширениеи *.cht. Так вот они ассоциируються с > программой chemtool. И? > > Переформулирую: что делает патч? > патч ничего не делает, его используют для внесения изменений в исходный код (в > нашем случае). *медленно, ещё раз* Что делают изменения, вносимые приложенным патчем?
(In reply to comment #6) > *медленно, ещё раз* Помогает не делать напряжённое лицо, а сказать "не понял, объясни по-другому" :) > Что делают изменения, вносимые приложенным патчем? Насколько понимаю, предлагается добавлять расширение .cht, если оно не было указано [для существующего файла]. Павел, эти файлы в системе не "регистрируются", а просто "существуют на файловой системе" :)
(In reply to comment #6) > (In reply to comment #5) > > Понял, речь идет о файлах с расширениеи *.cht. Так вот они ассоциируються с > > программой chemtool. > И? просто раньше надо было самому прописывать рассширение *.cht к файлу для того чтобы перейдя к файлу через какой-то менеджер окон просто кликнуть дважды по файлу и он открывается программой chemtool. Согласитесь, тяжело привязать программу chemtool к текстовому файлу без расширения. > *медленно, ещё раз* > Что делают изменения, вносимые приложенным патчем? Патч позволяет автоматически добавлять расширение *.cht к имени файла который вводит пользователь. Например, было введено schemeа, а сохраняется как scheme.cht. При этом происходит проверка содержит ли введенное имя файла это расширение. Может пользователь сам ввел расширение *.cht, тогда для такого случая сохранять файл типа name.cht.cht нет смысла. Поэтому происходит проверка.
Created attachment 2629 [details] new patch
> Почему используется strcat? Я постаралься изменить улучшить немного мой патч (надеюсь у меня это получилось). Теперь пользователь не сможет ввести имя файла содержащее в своем полном имени (/.../..../...filename.cht) больше чем 507 символов. При необходимости можно легко увеличить эту величину немного изменыв код. Патч сжатый gzip я прикрепил. При попытке ввести имя файла содержащее более 507 символов выскакивает сообщение о том, что файл слишко длинный. Вы можете подправить патч и текст сообщения в частности на свое усмотрение. Да по ходу оди вопрос. Разработчики программы продолжают поддерживать и развивать chemtool или это уже мертвый проэкт?
(In reply to comment #10) > Да по ходу оди вопрос. Разработчики программы продолжают поддерживать и > развивать chemtool или это уже мертвый проэкт? Ну почему -- последний раз, когда списывался с профессором, он вполне отвечал. Кстати, не хотите забрать пакет себе? Курсы опакечивания могу провести что у нас в офисе, что на химфаке -- всё одно недалеко :)
> Ну почему -- последний раз, когда списывался с профессором, он вполне отвечал. Да одно дело отвечать, а другое поддерживать дальнейшее развитие данного продукта. Вполне может быть, что професор сделал программу и остался доволен, а кому чего надо пусть доделывают сами. Для меня сейчас комбинация chemtool+inskape вполне удовлетворяет. Просто в chemtool есть очень много чего можно было бы добавить. Но увы я не програмист. Я лишь немного освоил синтаксис Си и сейчас почитываю С++. > Кстати, не хотите забрать пакет себе? Да делов том что если программы практически не поддерживается (а именно такое мнение сыормировывается у меня по поводу chemtool), то и поддерживать пакет практически не приходится. Ну пришлет вам какой-то Паша патч раз в год вы его при крепите и делов то. По сути ничего не меняется. Очень сильная конкуренция уже начинает сказыватся со стороны Qt (для KDE). Так-что пройдет еще годик и программу на СИ+GTK забудят вовсе. Да кстати, пользуясь случаем поздровляю вас с Днем Химика.
(In reply to comment #12) > > Ну почему -- последний раз, когда списывался с профессором, он вполне отвечал. > Да одно дело отвечать, а другое поддерживать дальнейшее развитие данного > продукта. [...] Но увы я не програмист. Ну тут действительно многое определяется интересом и желанием. Хотя может иметь смысл посмотреть и на другие программки вроде xdrawchem. Понимаете, мне проще помочь Вам перебрать и прибрать к рукам нужные программы да пакеты, чем краснеть за нерабочие или устаревшие :-) > > Кстати, не хотите забрать пакет себе? > Да делов том что если программы практически не поддерживается (а именно такое > мнение сыормировывается у меня по поводу chemtool), то и поддерживать пакет > практически не приходится. Оно-то да, но всегда лучше майтейнер, который применяет пакет. Я им давно уж не пользовался, хотя при подготовке двух дипломных в своё время он здорово помог (на пару с LyX) -- Ольга Васильевна ещё подивилась, что "прям как публикация" ;-) > Ну пришлет вам какой-то Паша патч раз в год вы его > при крепите и делов то. По сути ничего не меняется. Кстати, буду рад познакомиться. > Да кстати, пользуясь случаем поздровляю вас с Днем Химика. Спасибо, взаимно! PS: только лучше вешая патч на замену -- метить старый как obsolete; с типом аттача тоже лучше или автомат, или не делать тип "патч" на сжатые данные (поскольку файл маленький, проще и не сжимать -- смотреть удобней). PPS: может иметь смысл обрезать название, если сообщаем как раз о том, что оно невероятно длинное: диалог разнесёт за пределы большинства экранов (моего 1600x1200 при трёх сотнях тестовых символов -- так точно) :)
Created attachment 2657 [details] re-attaching patch 2629 (цепляю несжатым и перекрывающим предыдущие предожения)
Приложен к chemtool-1.6.11-alt3, работает, спасибо.
(In reply to comment #15) > Приложен к chemtool-1.6.11-alt3, работает, спасибо. Возникла небольшая проблема при установке рпм пакета. Анализ пакетов версии alt2 и alt3 командой rpm -qRp <name>.rpm показывает список файлов от которых зависит данный пакет. Я загнал вывод для каждого пакета в файлы и сравнид их командой diff. Вот что я получил: --- chemtool-alt2 2008-06-04 10:20:36 +0300 +++ chemtool-alt3 2008-06-04 10:20:31 +0300 @@ -4,6 +4,7 @@ /bin/sh rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 +/lib/ld-linux.so.2 libX11.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) @@ -16,5 +17,6 @@ libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6(GLIBC_2.0) -libpango-1.0.so.0 +libm.so.6(GLIBC_2.1) +libpango-1.0.so.0(PANGO_1.12) rtld(GNU_HASH) При попытке обновится с версии alt2 до alt3 или поставить с нуля alt3 получаем сообщение: [root@home RPMS]# rpm -Uhv chemtool-1.6.11-alt3.i586.rpm error: failed dependencies: libpango-1.0.so.0(PANGO_1.12) is needed by chemtool-1.6.11-alt3 [root@home RPMS]# Меня смущает наличие приставки (PANGO_1.12) так как сама библиотека libpango-1.0.so.0 в системе установлена. Программа будет работать нормально если самому собрать пакет на моей системе, но это обход проблемы. Такое же может возникнуть и других. Да, совсем забыл у меня ALD4.0.1+пару пакетов из сизифа(kernel, kernel-modules, gsl, grace).
Всё правильно, это зависимость на новую версию pango. Обновите libpango оттуда же откуда ставите chemtool или пересоберите chemtool сами в своём окружении. При использовании одного репозитария и установки пакетов только через apt-get подобных "проблем" не возникает.
(In reply to comment #17) > Всё правильно, это зависимость на новую версию pango. Обновите libpango оттуда > же откуда ставите chemtool Это называется "осизифить", на самом деле (поскольку разумно делать как dist-upgrade). > или пересоберите chemtool сами в своём окружении. Это называется "сбэкпортить", поскольку полученный бинарный пакет будет требовать те библиотеки, с которыми и собирался (на стабильной ветке). Когда точечные обновления перестают работать, обычно сперва стараюсь делать бэкпорты и только уже ближе к заморозке следующей стабильной ветки переезжаю на сизиф (для лишнего тестирования); на буке постоянно Sisyphus, но там при проблемах страдаю только я (бывает нечасто, обычно решается быстро/по ходу).