Bug 14751 - Лишняя информация в выводе crontab -l
Summary: Лишняя информация в выводе crontab -l
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: vixie-cron (show other bugs)
Version: unstable
Hardware: all Linux
: P2 minor
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords: patch
Depends on:
Blocks:
 
Reported: 2008-03-04 16:46 MSK by Slava Semushin
Modified: 2008-05-13 08:32 MSD (History)
3 users (show)

See Also:


Attachments
Предлагаемый патч. (1.73 KB, patch)
2008-04-29 10:17 MSD, Slava Semushin
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
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