static void display_speed(const struct termios *mode, int fancy) { //01234567 8 9 const char *fmt_str = "%lu %lu\n\0ispeed %lu baud; ospeed %lu baud;"; unsigned long ispeed, ospeed; ospeed = ispeed = cfgetispeed(mode); if (ispeed == 0 || ispeed == (ospeed = cfgetospeed(mode))) { ispeed = ospeed; /* in case ispeed was 0 */ //0123 4 5 6 7 8 9 fmt_str = "%lu\n\0\0\0\0\0speed %lu baud;"; } if (fancy) fmt_str += 9; wrapf(fmt_str, tty_baud_to_value(ispeed), tty_baud_to_value(ospeed)); }
int main(void) { unsigned long v; speed_t s; for (v = 0 ; v < 1000000; v++) { s = tty_value_to_baud(v); if (s == (speed_t) -1) { continue; } printf("v = %lu -- s = %0lo\n", v, (unsigned long) s); } printf("-------------------------------\n"); for (s = 0 ; s < 010017+1; s++) { v = tty_baud_to_value(s); if (!v) { continue; } printf("v = %lu -- s = %0lo\n", v, (unsigned long) s); } return 0; }
speed_t FAST_FUNC tty_value_to_baud(unsigned int value) { int i = 0; do { if (value == tty_baud_to_value(speeds[i].speed)) { return speeds[i].speed; } } while (++i < NUM_SPEEDS); return (speed_t) - 1; }