Bug 14751

Summary: Лишняя информация в выводе crontab -l
Product: Sisyphus Reporter: Slava Semushin <php-coder>
Component: vixie-cronAssignee: placeholder <placeholder>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: minor    
Priority: P2 CC: glebfm, ldv, placeholder
Version: unstableKeywords: patch
Hardware: all   
OS: Linux   
Attachments:
Description Flags
Предлагаемый патч. none

Description Slava Semushin 2008-03-04 16:47:00 MSK
coder@mvo ~ $ rpm -qf =crontab
vixie-cron-4.1.20060426-alt3

coder@mvo ~ $ sudo crontab -l 
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.EUuzaf installed on Mon Mar  3 20:05:04 2008)
# (Cron version V5.0 -- vixie-cron-4.1.20060426-alt3)
#minute (0-59),
#|      hour (0-23),
#|      |       day of the month (1-31),
#|      |       |       month of the year (1-12),
#|      |       |       |       day of the week (0-6 with 0=Sunday).
#|      |       |       |       |       commands
0       21      3       3       1       apt-get install
openoffice.org-langpack-ru -y

Считаю, что первые две строки в выводе crontab -l абсолютно лишние и даже
немного запутывают. Команда печатает на stdout и пользователь не может никакой
файл редкатировать. Кроме того, в выводе команды также фигурирует путь к
временному файлу (которого не существует кстати), который абсолютно не нужен для
пользователя.
Comment 1 Slava Semushin 2008-04-29 09:39:27 MSD
При редактировании файла (crontab -e) этой шапки нет, потому что там есть такой
код (файл vixie-cron/usr.sbin/cron/crontab.c, ф-ция edit_cmd()):

338     /* ignore the top few comments since we probably put them there.
339      */
340     x = 0;
341     while (EOF != (ch = get_char(f))) {
342         if ('#' != ch) {
343             putc(ch, NewCrontab);
344             break;
345         }
346         while (EOF != (ch = get_char(f)))
347             if (ch == '\n')
348                 break;
349         if (++x >= NHEADER_LINES)
350             break;
351     }

Я предлагаю этот код вынести в отдельную ф-цию, после чего использовать её в
edit_cmd() и list_cmd().
Comment 2 Slava Semushin 2008-04-29 10:17:03 MSD
Created attachment 2596 [details]
Предлагаемый патч.

Вот патч. (Посмотрим, насколько он ускорит решение проблемы.)
Comment 3 Dmitry V. Levin 2008-05-06 17:31:03 MSD
Implemented in 4.1.20060426-alt4
Comment 4 Slava Semushin 2008-05-06 19:53:24 MSD
(In reply to comment #3)
> Implemented in 4.1.20060426-alt4

Хорошо.

Я уже успел отправить свой патч одному из разработчиков OpenBSD (ray@) и он
ответил следующее: "I agree with this change, let me see if I can get it into
the tree.  Thanks!" Т.е., насколько я понял, он их приложит, только когда
неизвестно. Возможно, нужно твой патч отправить ему тоже, если твой лучше моего.
Comment 5 Slava Semushin 2008-05-13 08:32:28 MSD
Патч (с некоторыми изменениями) был закоммичен в OpenBSD source tree:
http://www.openbsd.org/cgi-bin/cvsweb/src/usr.sbin/cron/crontab.c.diff?r1=1.55&r2=1.56