Глядя на код , это единственные доступные варианты поведения. Только для сокращенного вывода скорость передачи данных и состояния этих четырех флагов печатаются явно. В противном случае печатаются шестнадцатеричные значения, чтобы предоставить вам кровавые подробности. Вам придется искать флаги termios в другом месте .
if (abbrev(tcp)) {
tprints("{");
printxval(baud_options, tios.c_cflag & CBAUD, "B???");
tprintf(" %sopost %sisig %sicanon %secho...}",
(tios.c_oflag & OPOST) ? "" : "-",
(tios.c_lflag & ISIG) ? "" : "-",
(tios.c_lflag & ICANON) ? "" : "-",
(tios.c_lflag & ECHO) ? "" : "-");
return;
}
tprintf("{c_iflags=%#lx, c_oflags=%#lx, ",
(long) tios.c_iflag, (long) tios.c_oflag);
tprintf("c_cflags=%#lx, c_lflags=%#lx, ",
(long) tios.c_cflag, (long) tios.c_lflag);
tprintf("c_line=%u, ", tios.c_line);
RPM-пакеты имеют особый формат:[$epoch:]$name-$version-$release.$arch
$epoch
— целое число, которое можно легко сравнить, есть пакеты, которые не используют это, и оно просто опущено. $name
— это просто строка, которая не должна меняться между версиями. $version
— это строка версии в формате, который можно анализировать и сравнивать (обычно целые числа, разделенные точками ). $release
— это строка, которая обычно начинается с целого числа, но может также содержать информацию о том, для какого дистрибутива она была создана.
Если все $epoch
, $name
и $verion
одинаковы, то $release
сравнивается, чтобы определить, является ли это обновлением. Если $version
различаются, они анализируются, и более высокий из них является обновлением. Если значение $epoch
отличается, более высокое значение является обновлением.
Исходный код для сравнения обновлений RPM, как мне кажется, можно найти здесь в функциях parseEVR
и rpmdsCompareEVR
.