[03:31:57] iNode вышел из конференции [05:34:56] il.smind++ зашёл в конференцию [05:36:47] il.smind++ вышел из конференции [06:08:21] iNode зашёл в конференцию [06:54:36] il.smind зашёл в конференцию [07:04:05] <il.smind> Привет всем! [07:10:03] andrew_b зашёл в конференцию [07:10:15] <andrew_b> ! [07:13:23] <il.smind> andrew_b: Да [07:14:28] <il.smind> andrew_b: я устранил [07:14:36] <il.smind> я молодец [07:15:46] <andrew_b> Не хвались, идучи на рать... [07:18:37] <il.smind> только с 8-бит кодировкой еще не возился, ща клинапы позырю [07:19:19] <andrew_b> il.smind: ну вот. 8 бит для меня самое главное. Так что молодец отменяется. [07:21:36] <il.smind> )) [07:21:42] <il.smind> через часик [07:59:09] <andrew_b> il.smind: теперь русских букв ваще не видно. [08:15:05] <il.smind> andrew_b: это потому что g_is_print я добавил.. всё будет, там пару строк надо будет дорисовать [08:19:25] <il.smind> andrew_b: давай вот это обсудим 157 do 158 { 159 if (dup2 (pipefd1[0], 0) == -1) 160 break; 161 status = close (pipefd1[0]); 162 /* Bind the pipe 1 to the standard output */ 163 if (dup2 (pipefd2[1], 1) == -1) 164 break; 165 166 status = close (pipefd2[1]); 167 /* Bind standard error to /dev/null */ 168 status = open ("/dev/null", O_WRONLY); 169 if (dup2 (status, 2) == -1) 170 break; 171 status = close (status); 172 if (tty_name) 173 { 174 /* Exec the console save/restore handler */ 175 mc_conssaver = concat_dir_and_file (SAVERDIR, "cons.saver"); 176 execl (mc_conssaver, "cons.saver", tty_name, (char *) NULL); 177 } 178 /* Console is not a tty or execl() failed */ 179 } 180 while (0); 181 console_flag = 0; 182 status = write (1, &console_flag, 1); 183 _exit (3); 184 } /* if (cons_saver_pid ...) */ 185 break; [08:19:34] <il.smind> src/cons.handler.c [08:21:36] <andrew_b> Что это? [08:22:02] <il.smind> получается если это 159 if (dup2 (pipefd1[0], 0) == -1) 160 break; или это 163 if (dup2 (pipefd2[1], 1) == -1) 164 break; или это 169 if (dup2 (status, 2) == -1) 170 break; [08:22:18] <il.smind> не отработает то из цикла не выйдет так? [08:22:41] <il.smind> andrew_b: это я смотрю http://www.midnight-commander.org/changeset/af6a4208c31f490c822df55e623643b767e2564b [08:23:00] <il.smind> 1897_libc_respect_return_values [08:23:11] <andrew_b> Ну да. Выход из вечного уикла только по break. [08:23:22] <andrew_b> цикла [08:23:45] <andrew_b> Опять Слава со свим into... [08:23:57] <andrew_b> s/свим/своим [08:24:10] <il.smind> ну а до этого не было никакого вечного цикла [08:24:42] <il.smind> я не могу так сильно спрогнозировать ситуацию [08:24:42] <andrew_b> А не, я гоню. Тут не вечного цикла. [08:24:55] <andrew_b> while (0) это не цикл. [08:24:57] <il.smind> но потенциально [08:25:06] <il.smind> не цикл? [08:25:25] <andrew_b> Не. [08:25:30] <slavazanko> всем привет [08:25:35] <andrew_b> ! [08:26:00] <il.smind> slavazanko: я вот как раз смотрю 1897_libc_respect_return_values [08:26:07] <slavazanko> а. и? [08:26:21] <il.smind> меня смущает 157 do 158 { 159 if (dup2 (pipefd1[0], 0) == -1) 160 break; 161 status = close (pipefd1[0]); 162 /* Bind the pipe 1 to the standard output */ 163 if (dup2 (pipefd2[1], 1) == -1) 164 break; 165 166 status = close (pipefd2[1]); 167 /* Bind standard error to /dev/null */ 168 status = open ("/dev/null", O_WRONLY); 169 if (dup2 (status, 2) == -1) 170 break; 171 status = close (status); 172 if (tty_name) 173 { 174 /* Exec the console save/restore handler */ 175 mc_conssaver = concat_dir_and_file (SAVERDIR, "cons.saver"); 176 execl (mc_conssaver, "cons.saver", tty_name, (char *) NULL); 177 } 178 /* Console is not a tty or execl() failed */ 179 } 180 while (0); [08:26:40] <slavazanko> это замена goto [08:26:54] <slavazanko> в 170 выход за пределы break [08:27:04] <slavazanko> тьфу, за пределы while(0) [08:27:51] <slavazanko> и цикл там не вечный можно
do { ... } while(0);
или while(1) { ... break; } [08:28:50] <il.smind> я втупляю наверное [08:29:05] <il.smind> тогда зачем цикел? [08:29:48] <slavazanko> ну а как сделать выход из блока кода? только по break.
говорим "брейк" - и вылетаем на следующую инструкцию после while(0) [08:30:05] <il.smind> я понял уже [08:30:20] <il.smind> слава Гуглю велдикому и беспощадному [08:30:40] <slavazanko> это типа try { throw (искусственная ошибка) } catch(...) {
} finally () {
} [08:31:03] <slavazanko> похоже на исключения немного [08:31:20] <slavazanko> не, если не понятно, то я могу на goto переписать [08:31:35] <il.smind> Иногда удобно использовать цикл do { ... } while (0); Дело в том, что, как сами видите, он выполнится один раз. А прелесть в том, что можно использовать оператор break; Это может быть полезно, скажем, вместо вложенных if(...) и при проверке файла, имитируя работу try() ... catch(), избежать goto.
Пример: [08:31:46] <il.smind> slavazanko: это гугел мне рассказал [08:31:56] <slavazanko> он мои мысли спёр, гад [08:31:57] <il.smind> slavazanko: не не надо на goto [08:32:51] <slavazanko> ок [08:36:48] <il.smind> вот тут вопрос [08:37:13] <slavazanko> ? [08:37:14] <il.smind> 2186 if ((dest != NULL) && (mc_setctl (dest, VFS_SETCTL_STALE_DATA, (void *) 1))) 2187 save_dest = g_strdup (dest); 2188 2189 if ((panel->cwd[0] != '\0') && (mc_setctl (panel->cwd, VFS_SETCTL_STALE_DATA, (void *) 1))) 2190 save_cwd = g_strdup (panel->cwd);
src/file.с [08:37:33] <il.smind> 2200 if (operation != OP_COPY && get_current_type () == view_tree) 2201 if (mc_chdir (PATH_SEP_STR) < 0) 2202 return FALSE; [08:38:31] <slavazanko> 2186 и 2189 смотрятся нормально
2200 - ну два подряд if'а можон в один слепить [08:38:43] <il.smind> slavazanko> 2186 и 2189 смотрятся нормально да не [08:38:48] <slavazanko> а, ты про то, что нету g_free [08:38:53] <slavazanko> гм [08:39:00] <il.smind> я их привел в качестве save_cwd = g_strdup (panel->cwd); [08:39:04] <andrew_b> В 2201 утечка. [08:39:05] <il.smind> slavazanko> а, ты про то, что нету g_free да [08:39:06] <slavazanko> угу [08:39:19] <andrew_b> В 2202, точнее. [08:39:32] <andrew_b> ctx надо освобождать. [08:39:45] <andrew_b> Это Метукс лик внёс. [08:40:03] <andrew_b> Я в тикете писал, но он не отреагировал. [08:40:11] <slavazanko> понято. Ща исправлю [08:40:16] <il.smind> andrew_b: я ему в личку писал [08:40:22] <il.smind> с полгода назад [08:40:26] <slavazanko> :) [08:40:39] <slavazanko> он потом только молча ребазировал нужные ему бранчи [08:40:45] <il.smind> я сейчас уже не помню всех проблем [08:41:18] <il.smind> но каждый коммит я отсмотрел и написал по замеченным проблемам [08:41:28] <il.smind> он болт положил [08:42:16] <slavazanko> мдым [08:45:14] <il.smind> я не знаю я фотку то показывал или нет на тему ревью [08:45:16] <il.smind> кода [08:45:46] <slavazanko> нет [08:48:09] <slavazanko> http://midnight-commander.org/changeset/a7744d38ae41ff6f4c2eea7b3f886d141c31e593 [08:51:13] <Зося_Синицкая> RSS: Новости для Midnight Commander • Ticket #2166 (Prepare for release mc-4.7.2) created http://www.midnight-commander.org/ticket/2166 [08:55:03] <slavazanko> ну чё там? 1897 объявлен клинапным для 4.7.2 думаю, потом с него почеррипикать в стейбл [08:55:08] <il.smind> http://www.makinggoodsoftware.com/wp-content/uploads/2009/09/wtfm.jpg [08:55:41] <slavazanko> :))) wtf неизбежен [09:00:23] <il.smind> 148 } fbuts[] = 149 { 150 { 151 N_("&Suspend"), 11, 29}, 152 { 153 N_("Con&tinue"), 12, 29}, 154 { 155 N_("&Chdir"), 11, 3}, 156 { 157 N_("&Again"), 9, 17}, 158 { 159 N_("&Quit"), 8, 43}, 160 { 161 N_("Pane&lize"), 12, 3}, 162 { 163 N_("&View - F3"), 13, 20}, 164 { 165 N_("&Edit - F4"), 13, 38} 166 }; [09:00:46] <il.smind> было 140 static struct { 141 const char* text; 142 int len; /* length including space and brackets */ 143 int x; 144 } fbuts [] = { 145 { N_("&Suspend"), 11, 29 }, 146 { N_("Con&tinue"), 12, 29 }, 147 { N_("&Chdir"), 11, 3 }, 148 { N_("&Again"), 9, 17 }, 149 { N_("&Quit"), 8, 43 }, 150 { N_("Pane&lize"), 12, 3 }, 151 { N_("&View - F3"), 13, 20 }, 152 { N_("&Edit - F4"), 13, 38 } 153 }; [09:01:04] <il.smind> src/find.c [09:01:05] <slavazanko> индент... ща научу его [09:01:10] <il.smind> ага [09:01:13] <Зося_Синицкая> RSS: Новости для Midnight Commander • Ticket #2167 (Prepare for stable release mc-4.7.0.5) created http://www.midnight-commander.org/ticket/2167 • Ticket #2167 (Prepare for stable release mc-4.7.0.5) updated http://www.midnight-commander.org/ticket/2167#comment:1 • Ticket #1671 (i18n_checktimelength may vary depending on the season) updated http://www.midnight-commander.org/ticket/1671#comment:5 [09:01:33] <il.smind> slavazanko: у меня теперь есть diffview [09:01:46] <il.smind> так что я начеку [09:01:53] <slavazanko> :) [09:02:58] <il.smind> справа ./mc.old/ (бранч - master) слева ./mc/ (бранч - 1897) [09:06:36] <slavazanko> Илья: http://midnight-commander.org/changeset/9c9b76304f443f9b5fe14c2080c03c80ef1b004f [09:07:12] <il.smind> ага [09:07:31] <slavazanko> > справа ./mc.old/ (бранч - master) слева ./mc/ (бранч - 1897) git diff master...HEAD и смотри сколько угодно :) [09:15:29] <il.smind> git diff master...HEAD ? [09:15:34] <il.smind> это зачем? [09:16:07] <il.smind> тут я в 3D смотрю со звуком 5+1 [09:16:16] <slavazanko> :) [09:16:17] <il.smind> а ты мне что предлагаешь: [09:16:55] <il.smind> я лучше side-by-side [09:18:17] <slavazanko> да не навязываю [09:22:53] <andrew_b> slavazanko: сдаётся мне, что с https://www.midnight-commander.org/changeset/a7744d38ae41ff6f4c2eea7b3f886d141c31e593 не так надо... [09:23:22] <andrew_b> Там надо goto clean_up. [09:23:54] <andrew_b> Только возвращаемое значение FALSE. [09:24:58] <slavazanko> эм... гм [09:27:21] <andrew_b> Кстати, сам по себе file_op_total_context_destroy (tctx); в конце не вызывается. [09:27:40] <andrew_b> При нормальном завершении. [09:28:45] <il.smind> andrew_b> Там надо goto clean_up. +1 [09:28:59] <il.smind> тоже самое хотел написать [09:29:24] <andrew_b> А return TRUE или FALSE критично? [09:30:03] <andrew_b> Вообще-то да. [09:30:41] <andrew_b> Если return TRUE, то это вызовет перерисовку панелей. [09:32:28] <slavazanko> понял [09:35:22] <slavazanko> http://midnight-commander.org/changeset/722c6c3bbba60ed99d7a964fe7e3d2cae2a887e1 [09:41:36] <andrew_b> il.smind: slavazanko: Ответьте Юре кто нибудь: http://www.midnight-commander.org/ticket/1671#comment:5 [09:42:04] <slavazanko> ща.. [09:42:45] <slavazanko> Вы пока 1897 смотрите :) [09:42:51] <slavazanko> а я 1671 [09:49:21] andrew_b вышел из конференции: Replaced by new connection [09:49:25] andrew_b зашёл в конференцию [09:55:39] <andrew_b> slavazanko: в 1897 не всё гладко:
lib/vfs/mc-vfs/fish.c: В функции 'fish_pipeopen' lib/vfs/mc-vfs/fish.c:222: предупреждение: результат 'dup', декларированной с атрибутом warn_unused_result, игнорируется lib/vfs/mc-vfs/fish.c:227: предупреждение: результат 'dup', декларированной с атрибутом warn_unused_result, игнорируется src/diffviewer/ydiff.c: В функции 'rewrite_backup_content' src/diffviewer/ydiff.c:163: предупреждение: результат 'fwrite', декларированной с атрибутом warn_unused_result, игнорируется src/cons.handler.c: В функции 'handle_console_linux' src/cons.handler.c:201: предупреждение: результат 'write', декларированной с атрибутом warn_unused_result, игнорируется src/cons.handler.c:205: предупреждение: результат 'read', декларированной с атрибутом warn_unused_result, игнорируется src/background.c: В функции 'background_attention' src/background.c:434: предупреждение: результат 'write', декларированной с атрибутом warn_unused_result, игнорируется [09:55:58] <slavazanko> понято [09:56:34] <andrew_b> Других таких варнингов больше нет. [09:57:00] <slavazanko> ща... [09:59:17] <andrew_b> Круто. Сегфолт в редакторе. [09:59:22] <slavazanko> ого [10:00:17] <andrew_b> В бранче открой любой файл в редакторе и нажми любую кнопку. [10:00:31] <andrew_b> Любую букву. [10:00:41] <il.smind> я еще не собирал [10:00:53] <slavazanko> ща... у меня конпиляет долго [10:01:23] <slavazanko> блин, всё никак на сервак не перейду жить... вроде и виртмашинка уже есть... [10:01:39] <andrew_b> Сервак простаивает? [10:03:06] <andrew_b> Где-то стек рушится. bt показывает одни обломки. [10:03:15] <andrew_b> Надо бисектить. [10:04:16] <andrew_b> Жалко, коммитов мало и крупные они. [10:04:37] <andrew_b> Ладно, будем работать с тем, что есть. [10:05:12] <slavazanko> > Сервак простаивает? ну почти. Он используется как билд-сервак для наших программеров. Там ИнкредиБилд крутится - жалкое подобие distcc.. так вот, там несколько виртуальных машин. Ибо WinXP хреново с многопроцессорностью работает (на серваке 4 проца), в виртуальной машине если сделать несоклько процей, то нагрузка хост-машины постоянно 100% (по процессорам). А вот в режиме одноядерной эмуляции XP уже не отжирает 100% проца - нрмально работает. Поэтому есть несколько виртуальных машин с XP (что лицензировано - то и юзаем).
Вот думаю ещё одну виртмашинку поднять под компиляцию mc... :) [10:05:14] <il.smind> почему то где то edit_load_syntax (edit, NULL, option_syntax_type); а где то edit_load_syntax (edit, 0, 0); [10:05:28] <il.smind> оно может и не критично [10:05:36] <andrew_b> Там указатели. [10:05:37] <il.smind> но не однообразно [10:05:47] <andrew_b> Я же исправлял это. [10:06:11] <andrew_b> В подсветке текущего синтаксиса. [10:06:42] <andrew_b> Кто исправил взад? [10:06:55] <slavazanko> эм... [10:07:03] <slavazanko> может, поребазировать бранч? [10:07:26] <andrew_b> Погоди пока. [10:08:00] <slavazanko> ты исправлял - вливал в мастер? [10:08:05] <andrew_b> Да. [10:08:12] <slavazanko> наверное, бранч старее [10:14:28] <il.smind> slavazanko: вот тут вот странно 162 size_t ret; 163 ret = fwrite (str, strlen (str), 1, logfile); 164 fflush (logfile); [10:14:33] <il.smind> 164 fflush (logfile); [10:15:02] <il.smind> в других местах теперь написано ret = fflush (logfile); [10:15:18] <il.smind> а здесь осталось как было [10:18:23] <slavazanko> гм. да. Ну ты и глазастик... [10:27:06] <andrew_b> 21cfbe73566aab4cf7733b847e21b0fc70c2f3f1 виноват [10:27:17] <andrew_b> в сегфолте. [10:30:29] <slavazanko> понятно [10:31:27] <andrew_b> if (old_error >= 0){ - close (2); - dup (old_error); + if (dup2 (old_error, 2)) [10:31:38] <andrew_b> Куда close(2) пропало? [10:32:17] <slavazanko> dup2 делает close() автоматом [10:32:25] <andrew_b> А... [10:32:26] <slavazanko> нет необходимости [10:35:21] <andrew_b> - write (sock, text, len); + if (write (sock, text, len)) [10:35:35] <andrew_b> Оно к редактору не относится, но всё же. [10:35:51] <andrew_b> Наверное, надо
if (write (sock, text, len) != len) [10:36:17] <andrew_b> В дыух местах. [10:36:18] <slavazanko> пилять. Это я метуксовый один коммит черри-пикнул. Потом засквошил [10:36:20] <andrew_b> двух [10:36:23] <slavazanko> угу [10:37:02] <slavazanko> я метуксовый 1897 вручную лопатил, только пару его коммитов неизменными влупил... не надо было :( [10:37:26] <slavazanko> ща поправлю [10:37:56] <andrew_b> Тут тоже какая-то херня:
- system(cmd); + if (system(cmd)) { + DEBUG(0,("PANIC: cannot run panic handler command \"%s\"\n", cmd)); + } [10:38:13] <andrew_b> Хотя нет. [10:38:21] <slavazanko> норма. там или 0 или -1 [10:38:27] <slavazanko> если не нуль, то паника [10:38:28] <andrew_b> Да. [10:38:53] <andrew_b> - write (SUP.sockw, SUP.password, strlen (SUP.password)); - write (SUP.sockw, "\n", 1); + if ( (write (SUP.sockw, SUP.password, strlen (SUP.password)) < 0) + || (write (SUP.sockw, "\n", 1) < 0)) [10:40:15] <slavazanko> ну... тут как бы я криминала не вижу пока что [10:40:23] <il.smind> пожрали-с [10:40:34] <andrew_b> А длина? [10:40:42] <slavazanko> а, ну да. [10:40:42] <andrew_b> Если не совпала? [10:40:43] <slavazanko> ща [10:42:37] <slavazanko> запушил [10:43:32] <il.smind> 3 WTFs/m [10:43:43] <il.smind> чуть выше нормы :) [10:43:54] <andrew_b> Что это? [10:44:13] <il.smind> andrew_b: ты фотку не посмотрел что ли? [10:44:29] <il.smind> там критерий качества кода [10:44:34] <andrew_b> Нет. [10:44:42] <il.smind> andrew_b: позырь [10:44:59] <il.smind> http://www.makinggoodsoftware.com/wp-content/uploads/2009/09/wtfm.jpg [10:46:05] <il.smind> andrew_b: там про ВотЗеФак/мин [10:46:22] <il.smind> в смысле тема раскрывается [10:48:45] <andrew_b> slavazanko: кхм...
Как ты думаешь, что будет в строке 703 после того, как выполнится строка 700? :) [10:49:05] <andrew_b> utilunix.c [10:50:05] <slavazanko> жопа [10:50:18] <andrew_b> Вот она и стрясается. [10:50:34] <il.smind> ) [10:50:59] <andrew_b> Ну и дальше по коду new_path используется. [10:51:10] <slavazanko> угу [10:51:51] <andrew_b> А в редакторе падает, потому что при первом нажатии на кнопку создаётся lock
#0 mc_realpath (path=0xbf808f1c "version.h", resolved_path=0xbf809f60 "") at /home/andrew/work.c/mc/mc-1897_libc_respect_return_values/lib/utilunix.c:703 #1 0x080e692b in lock_build_symlink_name (fname=0x8df4600 "version.h") at /home/andrew/work.c/mc/mc-1897_libc_respect_return_values/src/editor/editlock.c:104 #2 0x080e6bb4 in edit_lock_file (fname=0x8df4600 "version.h") at /home/andrew/work.c/mc/mc-1897_libc_respect_return_values/src/editor/editlock.c:181 [10:52:57] <andrew_b> il.smind: мож знаешь, есть такой текст, как в разных религиях звучит фраза "Жопа стряслась". [10:53:20] <il.smind> не... [10:53:29] <andrew_b> http://www.lib.ru/ANEKDOTY/happens.txt [10:56:28] <slavazanko> по ссылке жесть :) [10:58:18] <il.smind> Z-80'izm Beeeep..Sshhhh..Beeep..Shhh..Pshhh.. Tape loading error. [10:58:22] <slavazanko> Z-80'izm Beeeep..Sshhhh..Beeep..Shhh..Pshhh.. Tape loading error.
меня сейчас плющит :))))) [10:58:25] <slavazanko> о! [10:58:31] <il.smind> это точно попа [10:58:33] <slavazanko> аж на слезу пробило [10:58:54] <slavazanko> да... ждать минут 20, а потом оно... [11:01:53] <slavazanko> мать моя, сколько же там сотрясений жоп.... [11:02:13] <il.smind> да ваще [11:02:19] <il.smind> жопа... [11:02:35] <andrew_b> Это ж такой боянище. Ни разу не видели, что ли? [11:02:49] <slavazanko> я - нет. ниразу :) [11:03:55] <slavazanko> блин, про Спекки до сих пор вспоминаю... :) "Tape loading error" == "жопа стряслась". Гых... Я, правда, под другим названием это событие знал. "Нуептвоюмать". [11:16:02] <slavazanko> запушил по 1897 [11:16:11] <slavazanko> испрвление сегфолта. [11:16:44] <andrew_b> background.c
428 if (resstr) 429 { 430 len = strlen (resstr); 431 ret = write (to_child_fd, &len, sizeof (len)); 432 if (len) 433 { 434 ret = write (to_child_fd, , len); 435 g_free (); 436 } 437 }