Bug 15636

Summary: Патч, позволяющий дописывать расширения *.cht к именам файлов, которые уже зарегистрированы в системе.
Product: Sisyphus Reporter: Solntsev Pasha <solntsev>
Component: chemtoolAssignee: Michael Shigorin <mike>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: mike
Version: unstableKeywords: patch
Hardware: all   
OS: Linux   
Attachments:
Description Flags
patch for chemtool
none
new patch
none
re-attaching patch 2629 none

Description Solntsev Pasha 2008-05-13 13:51:17 MSD
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, '/');
Comment 1 Solntsev Pasha 2008-05-13 13:52:23 MSD
Created attachment 2612 [details]
patch for chemtool
Comment 2 Andrey Rahmatullin 2008-05-13 14:15:39 MSD
Что такое "уже зарегистрированы в системе"?
Почему используется strcat?
Comment 3 Solntsev Pasha 2008-05-14 16:26:53 MSD
(In reply to comment #2)
> Что такое "уже зарегистрированы в системе"?
не понял
> Почему используется strcat?

Исползование strcat забирает 4 символа у масива filename[512].
Думаю мало кому захочется создавать имена файлов с именами длиной более 508 знаков.

Если есть какие-то мне неизвестные моменты по использованию strcat() дайте
ссылку где почитать.

Я применил этот патч и пересобрал программу для ALD4.0.1 все работает как и
раньше, но с необходимой функцыональностью при сохранении файлов.

Comment 4 Andrey Rahmatullin 2008-05-14 16:46:03 MSD
(In reply to comment #3)
> > Что такое "уже зарегистрированы в системе"?
> не понял
Ну это ваша фраза, вам должно быть более понятно.
Переформулирую: что делает патч?

> > Почему используется strcat?
> Исползование strcat забирает 4 символа у масива filename[512].
> Думаю мало кому захочется создавать имена файлов с именами длиной более 508 
знаков.
Тогда ладно.
Comment 5 Solntsev Pasha 2008-05-14 16:51:23 MSD
(In reply to comment #4)
> (In reply to comment #3)
> > > Что такое "уже зарегистрированы в системе"?
> > не понял
> Ну это ваша фраза, вам должно быть более понятно.
Понял, речь идет о файлах с расширениеи *.cht. Так вот они ассоциируються с
программой chemtool.
> Переформулирую: что делает патч?
патч ничего не делает, его используют для внесения изменений в исходный код (в
нашем случае).
Comment 6 Andrey Rahmatullin 2008-05-14 16:52:43 MSD
(In reply to comment #5)
> Понял, речь идет о файлах с расширениеи *.cht. Так вот они ассоциируються с
> программой chemtool.
И?

> > Переформулирую: что делает патч?
> патч ничего не делает, его используют для внесения изменений в исходный код (в
> нашем случае).
*медленно, ещё раз*
Что делают изменения, вносимые приложенным патчем?
Comment 7 Michael Shigorin 2008-05-14 17:36:16 MSD
(In reply to comment #6)
> *медленно, ещё раз*
Помогает не делать напряжённое лицо, а сказать "не понял, объясни по-другому" :)

> Что делают изменения, вносимые приложенным патчем?
Насколько понимаю, предлагается добавлять расширение .cht, если оно не было
указано [для существующего файла].

Павел, эти файлы в системе не "регистрируются", а просто "существуют на файловой
системе" :)
Comment 8 Solntsev Pasha 2008-05-14 19:16:22 MSD
(In reply to comment #6)
> (In reply to comment #5)
> > Понял, речь идет о файлах с расширениеи *.cht. Так вот они ассоциируються с
> > программой chemtool.
> И?

просто раньше надо было самому прописывать рассширение *.cht к файлу для того
чтобы перейдя к файлу через какой-то менеджер окон просто кликнуть дважды по
файлу и он открывается программой chemtool. Согласитесь, тяжело привязать
программу chemtool к текстовому файлу без расширения. 

> *медленно, ещё раз*
> Что делают изменения, вносимые приложенным патчем?
Патч позволяет автоматически добавлять расширение *.cht к имени файла который
вводит пользователь. Например, было введено schemeа, а сохраняется как
scheme.cht. При этом происходит проверка содержит ли введенное имя файла это
расширение. Может пользователь сам ввел расширение *.cht, тогда для такого
случая сохранять файл типа name.cht.cht нет смысла. Поэтому происходит проверка.
Comment 9 Solntsev Pasha 2008-05-16 02:05:34 MSD
Created attachment 2629 [details]
new patch
Comment 10 Solntsev Pasha 2008-05-16 02:08:27 MSD
> Почему используется strcat?

Я постаралься изменить улучшить немного мой патч (надеюсь у меня это
получилось). Теперь пользователь не сможет ввести имя файла содержащее в своем
полном имени (/.../..../...filename.cht) больше чем 507 символов. При
необходимости можно легко увеличить эту величину немного изменыв код. Патч
сжатый gzip я прикрепил.

При попытке ввести имя файла содержащее более 507 символов выскакивает сообщение
о том, что файл слишко длинный. Вы можете подправить патч и текст сообщения в
частности на свое усмотрение. 

Да по ходу оди вопрос. Разработчики программы продолжают поддерживать и
развивать chemtool или это уже мертвый проэкт?
Comment 11 Michael Shigorin 2008-05-30 19:04:37 MSD
(In reply to comment #10)
> Да по ходу оди вопрос. Разработчики программы продолжают поддерживать и
> развивать chemtool или это уже мертвый проэкт?
Ну почему -- последний раз, когда списывался с профессором, он вполне отвечал.

Кстати, не хотите забрать пакет себе?  Курсы опакечивания могу провести что у
нас в офисе, что на химфаке -- всё одно недалеко :)
Comment 12 Solntsev Pasha 2008-05-31 01:53:09 MSD
> Ну почему -- последний раз, когда списывался с профессором, он вполне отвечал.
Да одно дело отвечать, а другое поддерживать дальнейшее развитие данного
продукта. Вполне может быть, что професор сделал программу и остался доволен, а
кому чего надо пусть доделывают сами. Для меня сейчас комбинация
chemtool+inskape вполне удовлетворяет. Просто в chemtool есть очень много чего
можно было бы  добавить. Но увы я не програмист. Я лишь немного освоил синтаксис
Си и сейчас почитываю С++. 

> Кстати, не хотите забрать пакет себе?
Да делов том что если программы практически не поддерживается (а именно такое
мнение сыормировывается у меня по поводу chemtool), то и поддерживать пакет
практически не приходится. Ну пришлет вам какой-то Паша патч раз в год вы его
при крепите и делов то. По сути ничего не меняется. Очень сильная конкуренция
уже начинает сказыватся со стороны Qt (для KDE). Так-что пройдет еще годик и
программу на СИ+GTK забудят вовсе. 

Да кстати, пользуясь случаем поздровляю вас с Днем Химика.

Comment 13 Michael Shigorin 2008-05-31 02:14:27 MSD
(In reply to comment #12)
> > Ну почему -- последний раз, когда списывался с профессором, он вполне отвечал.
> Да одно дело отвечать, а другое поддерживать дальнейшее развитие данного
> продукта. [...] Но увы я не програмист.
Ну тут действительно многое определяется интересом и желанием.  Хотя может иметь
смысл посмотреть и на другие программки вроде xdrawchem.

Понимаете, мне проще помочь Вам перебрать и прибрать к рукам нужные программы да
пакеты, чем краснеть за нерабочие или устаревшие :-)

> > Кстати, не хотите забрать пакет себе?
> Да делов том что если программы практически не поддерживается (а именно такое
> мнение сыормировывается у меня по поводу chemtool), то и поддерживать пакет
> практически не приходится.
Оно-то да, но всегда лучше майтейнер, который применяет пакет.  Я им давно уж не
пользовался, хотя при подготовке двух дипломных в своё время он здорово помог
(на пару с LyX) -- Ольга Васильевна ещё подивилась, что "прям как публикация" ;-)

> Ну пришлет вам какой-то Паша патч раз в год вы его
> при крепите и делов то. По сути ничего не меняется.
Кстати, буду рад познакомиться.

> Да кстати, пользуясь случаем поздровляю вас с Днем Химика.
Спасибо, взаимно!

PS: только лучше вешая патч на замену -- метить старый как obsolete; с типом
аттача тоже лучше или автомат, или не делать тип "патч" на сжатые данные
(поскольку файл маленький, проще и не сжимать -- смотреть удобней).

PPS: может иметь смысл обрезать название, если сообщаем как раз о том, что оно
невероятно длинное: диалог разнесёт за пределы большинства экранов (моего
1600x1200 при трёх сотнях тестовых символов -- так точно) :)
Comment 14 Michael Shigorin 2008-05-31 02:15:43 MSD
Created attachment 2657 [details]
re-attaching patch 2629

(цепляю несжатым и перекрывающим предыдущие предожения)
Comment 15 Michael Shigorin 2008-05-31 02:16:13 MSD
Приложен к chemtool-1.6.11-alt3, работает, спасибо.
Comment 16 Solntsev Pasha 2008-06-05 01:38:42 MSD
(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).
Comment 17 Sir Raorn 2008-06-05 02:10:46 MSD
Всё правильно, это зависимость на новую версию pango.  Обновите libpango оттуда
же откуда ставите chemtool или пересоберите chemtool сами в своём окружении.

При использовании одного репозитария и установки пакетов только через apt-get
подобных "проблем" не возникает.
Comment 18 Michael Shigorin 2008-06-10 23:46:55 MSD
(In reply to comment #17)
> Всё правильно, это зависимость на новую версию pango.  Обновите libpango оттуда
> же откуда ставите chemtool
Это называется "осизифить", на самом деле (поскольку разумно делать как
dist-upgrade).

> или пересоберите chemtool сами в своём окружении.
Это называется "сбэкпортить", поскольку полученный бинарный пакет будет
требовать те библиотеки, с которыми и собирался (на стабильной ветке).

Когда точечные обновления перестают работать, обычно сперва стараюсь делать
бэкпорты и только уже ближе к заморозке следующей стабильной ветки переезжаю на
сизиф (для лишнего тестирования); на буке постоянно Sisyphus, но там при
проблемах страдаю только я (бывает нечасто, обычно решается быстро/по ходу).