> У системды уже более миллиона строк говнокода?! Угу. Я-то все в опенхаб смотрел, а там "оно" заморожено уже давно.
> И всё это с волшебными числами, полагаю…
Сейчас глянул в свежие коммиты, открыл пяток файлов, поискал по диагонали тупо по "+ ".
После последних "улучшайзингов" (видимо, от немецкого "шай*е") гитхаба ссылка на строку не копируюется, так что просто куски из этих файлов:
https://github.com/systemd/systemd/blob/master/src/journal/j...
/* Now seek to the last occurrence of this boot ID. */
sd_id128_to_string(next_boot->id, match + 9);
r = sd_journal_add_match(j, match, sizeof(match) - 1);
https://github.com/systemd/systemd/blob/master/src/journal/j...
if (x != 0 && x + 40 * USEC_PER_MSEC > z)
return; *last_usec = z;
n = (3 * columns()) / 4;
j = (n * (unsigned) p) / 65535ULL;
...
for (i = 0; i < j; i++)
fputs("\xe2\x96\x88", stdout);
fputs(ansi_normal(), stdout);
for (i = 0; i < k; i++)
fputs("\xe2\x96\x91", stdout);
printf(" %3"PRIu64"%%", 100U * p / 65535U);
...
n = (3 * columns()) / 4;
putchar('\r');
for (i = 0; i < n + 5; i++)
putchar(' ');
...
if (show_progress)
draw_progress(0xC000 + scale_progress(0x3FFF, i, n), last_usec);
...
if (show_progress)
draw_progress(0x8000 + scale_progress(0x3FFF, i, n), last_usec);
ЗЫ:
Я оттуда вообще-то, когда-то хотел парсингом конфигов "спионе"^W вдохновиться, но вместо классической схемы, с однократной обработкой ввода, токенизацей и последующей работой с токеном (т.е. например структурой, включающей тип токена, его значение, позицию и что там еще нужно), там тупо на каждое сравнение вызывается сгенерированное обертками из макроса:
for keyword in keyword_array {
if (strcmp(keyword, word) …
Ну и
https://github.com/systemd/systemd/blob/3884274b152fe6a20db9...
FOREACH_WORD_SEPARATOR(word, l, s, ":", state) {
if (l == 8 && strneq(word, "shutdown", l))
what |= INHIBIT_SHUTDOWN;
else if (l == 5 && strneq(word, "sleep", l))
what |= INHIBIT_SLEEP;
else if (l == 4 && strneq(word, "idle", l))
...
else if (l == 20 && strneq(word, "handle-hibernate-key", l))
what |= INHIBIT_HANDLE_HIBERNATE_KEY;
else if (l == 17 && strneq(word, "handle-lid-switch", l))
what |= INHIBIT_HANDLE_LID_SWITCH;
как-то не впечатлили, а немного совсем наоборот 🙄