5 Changes since tio v1.33:
7 * Fix setspeed2 compilation
9 * Only apply color formatting when using color option
11 To help the color blind who may use custom terminal foreground /
16 * Add '-c, --color' option
18 Allow user to select which ANSI color code to use to colorize the tio
19 text. To successfully set the color the color code must be in the range
22 If color code is negative tio will print all available ANSI colors.
24 The default color is changed to bold white to make tio defaults usable
25 for most users, including color blind users.
29 * Fix meson header check string
31 * Reintroduce long timestamp format
33 But make the timestamp format RFC3339 compliant instead. The RFC states:
35 NOTE: ISO 8601 defines date and time separated by "T".
36 Applications using this syntax may choose, for the sake of
37 readability, to specify a full-date and full-time separated by
38 (say) a space character.
40 This way we keep the information specified by ISO 8601 but make it more
41 human readable which is better for the console output.
47 * Fix TTY device listing on Darwin. (#136)
49 * Fix TCGETS2 search on Darwin.
53 Changes since tio v1.32:
55 * Show auto connect status in show configuration
57 * Use '#pragma once' in all headers
59 * Improve printed output
61 Get rid of inconsistencies in the printed output (error printing,
64 Prepare for user configurable color.
66 * Rename option -i to -L
70 * Shorten timestamp description
72 We do not need the date part of the timestamp. It simply takes up too
73 much precious line space. In case of logging to file, one can easily
74 conclude the date from the file date information.
76 * Replace Travis with circleCI
78 * Replace autotools with meson
80 To introduce much simpler build configuration which is also easier to
83 * Add list serial devices feature
85 For convenience, add a --list-devices option which lists the available
88 * Cleanup: Use dot notation for default options struct
92 * Add command to show version
94 The key sequence ctrl-t v will now show the version of tio.
96 * Align format of timestamps
98 * Add Sylvain as official co-maintainer
102 * Add '-t' option description for time stamping.
104 * Add description for time stamping.
106 * Resolved tio/tio#84: Added timestamps in log file if enabled.
110 * Refine timestamps with milliseconds and ISO-8601 format (#129).
112 * Show milliseconds too in the timestamp (#114) and log file (#124)
113 * Change timestamp format to ISO-8601.
117 * Output newline on stdout with hex print mode
119 This is to fix the issue #104. The timestamp will always be
120 printed at the beginning of line:
122 [10:25:56] Switched to hexadecimal mode
123 0d 0a 0d [10:25:57] 41 43 52 4e 3a 5c 3e 0d 0a 0d [10:25:58] 41
127 [12:34:56] 45 72 72 6f 72 3a 20 49 6e 76 61 6c 69 64 20
128 [12:34:56] 41 43 52 4e 3a 5c 3e
129 [12:34:56] 41 43 52 4e 3a 5c 3e
130 [12:34:57] 41 43 52 4e 3a 5c 3e 6c 73
134 * Make comparison POSIX compliant
136 String comparison with == is not POSIX compliant and can fail with e.g.
139 Henrik Brix Andersen:
141 * Add bash completion of tty devices.
143 * Add -t/--timestamp to bash completion script.
147 * Local echo: show character by character even if stdout buffered.
151 * Show error when failing to open a tty
155 * Fix out of tree builds
157 Out of tree builds are currently broken because $(top_srcdir)src/include
158 is not in the search path. In tree builds are working because autconf add
159 $(top_builddir)/src/include to the search path for the generated config.h.
160 As $(top_builddir) and $(top_srcdir) are identical during in tree builds
161 the search path still end up beeing somehow correct.
163 To fix this add -I$(srcdir)/include to the CPPFLAGS in Makefile.am.
167 * src/setspeed2.c: fix redefinition of termio
169 Include ioctls.h and termbits.h from asm-generic instead of asm to avoid
174 * Exit if output speed cannot be set.
176 Lars Kellogg-Stedman:
178 * fflush() after putchar() for print_hex and print_normal
180 In order for local echo to work properly, we have to either call
181 fflush(stdout) after every character or just disable line buffering.
182 This change calls fflush() after putchar().
184 * Disable line buffering in stdout
186 In order for local echo to work properly, we have to either call
187 fflush(stdout) after every character or just disable line buffering.
188 This change uses setbuf(stdout, NULL) to do the latter.
192 * dont show line state if ioctl failed
194 * add serial lines manual control
198 * Flush every local echo char
200 Flush stdout at every char in case it
201 happens to be buffered.
205 * Newline: handle booth NL and CR
207 Flag ONLCRNL expects code \n after press Enter, but on some systems \r is send instead.
211 Changes since tio v1.31:
215 * Minor code style cleanups
217 * Cleanup print macros
221 Make sure output is transmitted immediately by flushing the output.
225 * add optional timestamps
227 with "-t" or "C-t T", toggle a timestamp prefix to each line.
235 * Added macOS compatibility
237 * Made O_NONBLOCK flag to open() call specific to macOS only.
239 * Added macOS-related details.
241 * Added O_NONBLOCK flag to open() call for macOS (10.13.6) compatibility.
245 Changes since tio v1.30:
253 * Clarify the input/output variable names (No-op change)
255 * Organize options the same sequence they are mentioned in cmdline help.
259 * Map CR->NL locally on output instead of using tio.c_oflag |= OCRNL.
261 This mostly is intended to have local echo output exactly what is sent
262 to the remote endpoint.
263 A nice side-effect is, that it also fixes tty-implementations, that can't
264 deal with the OCRNL flag on tio.c_oflag.
266 * Provide local-echo option.
268 Can be switched on with -e on the command line.
269 Can be toggled with Ctrl t e while program is running.
271 * Write to logfile as soon as we have the data, don't buffer.
273 Logfiles are important to see what happened, in particular if something
274 unexpected happened; so we want to make sure that the logfile is flushed
277 Before this change, the logfile was typically written at the end in
278 a large chunk as the default (large) buffering applied. Now, characters are
279 written out ASAP, so it is possible to get a live-view with a
284 Changes since tio v1.29:
288 * Update man page and bash completion
294 * ONLCRNL: change the method to map NL to CR-NL
298 Changes since tio v1.28:
300 * Add mapping flags INLCRNL and ODELBS
302 The following new mapping flags are added:
304 INLCRNL: Map NL to CR-NL on input.
305 ODELBS: Map DEL to BS on output.
307 Flags requested and tested by Jan Ciger (janoc).
311 Changes since tio v1.27:
317 * Add snap status to README.md
319 * Add README.md to prettify GitHub page
325 * Add missing header file under musl-libc
327 Musl's inclusion tree slightly differs from glibc, therefore TCGETS2 is
328 not reachable through sys/ioctl.h, so asm/ioctls.h needs to be included
333 * Fix grammar and typos
337 Changes since tio v1.26:
341 * Add support for setting non-standard baudrates
343 Support for non-standard baudrate settings will be automatically enabled
344 if the termios2 interface is detected available. However, to play it
345 safe, the old and widely supported termios interface will still be used
346 when setting standard baudrates.
354 Changes since tio v1.25:
358 Make stdin behave more raw'ish. In particular, don't
359 translate CR -> NL on input.
361 * Add special character map feature
363 Add a --map option which allows mapping special characters, in particular CR and
364 NL characters which are used in various combinations on various platforms.
378 Changes since tio v1.24:
380 * Fix error applying new stdout settings
382 On Fedora 26 tio will quit with the following error message:
384 "Error: Could not apply new stdout settings (Invalid argument)"
386 In case of Fedora, it turns out that the new stdout settings used are a
387 bit too aggressive because an empty termios structure is used. To remedy
388 this we reuse the existing stdout settings and only reconfigure the
389 specific options we need to make a "raw" stdout configuration.
391 * Remove unused pkgconfig in configure
395 Remove unused variable.
399 Changes since tio v1.23:
401 * Optimize clear screen command
403 Replaced system call with inline ANSI/VT100 clear screen code sequence
405 * Fix bash completion installation
407 Fixed the configure script to avoid that the bash completion script gets
408 installed outside of the prefix location. The default install location
409 is now $prefix/share/bash-completion/completions.
411 Use the configure option '--with-bash-completion-dir=PATH' if you need
412 to install the bash completion script elsewhere.
416 * Add missing commas in conditional sentences
420 Changes since tio v1.22:
422 * Update copyright headers
430 Changes since tio v1.21:
432 * Update man page date
434 * Update copyright year
438 * Update README and man page
442 Changes since tio v1.20:
444 * Add support for hexadecimal mode
446 A new key command 'ctrl-t h' is introduced which toggles between
447 hexadecimal mode and normal mode. When in hexadecimal mode data received
448 will be printed in hexadecimal.
450 * Do not distribute src/bash_completion/tio
452 Since the bash completion tio script is now autogenerated from tio.in it
453 should not be distributed in the tarball.
455 * Add missing forward flag
457 * Update AUTHORS file
461 * 'ctrl-t b' to send serial break.
465 * Removed git commit references from ChangeLog
467 ChangeLog is primary useful for users who don't have the git repository
470 Replace git commit references with version numbers; or if the change
471 only cleans up another change with no release in between, remove the
472 changelog item completely.
476 Changes since tio v1.19:
478 * Added more error handling of terminal calls
480 Also removed duplicate terminal flushing calls.
482 * Revert "Added support for non-standard baud rates"
484 This reverts a change made in v1.18.
486 Reverting because supporting non-standard or arbitrary baud rates is
487 troublesome because the c library provides no means of doing so and even
488 if bare metal linux kernel interface is used it will not work on all
489 Linux kernels version.
493 Changes since tio v1.18:
495 * Rearranged key commands
497 Rearranged the key commands:
499 ctrl-t c (clear screen) is now
500 ctrl-t l which is similar to the well known shell ctrl-l
502 ctrl-t i (show settings information) is now
503 ctrl-t c (show configuration)
505 Updated man page accordingly.
507 * Added "ctrl-t c" key command to clear screen
511 Changes since tio v1.17:
515 * Added support for non-standard baud rates
517 Only enabled when possible, that is, when the BOTHER definition is
520 It is untested but it should work as described here:
521 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683826
523 Some Cypress USB<->serial devices supposedly supports arbitrary speeds.
525 * Generate baudrate switch cases based on detection
527 Support a single source of baud rate configuration as discussed in
528 https://github.com/tio/tio/issues/45 .
530 To do so, autogeneration of the switch cases which do the baud rate
531 option value check and configuration/conversion in tty_configure() is
532 introduced via a single macro.
534 Just to be safe, this change also enables configure detection of all
535 baud rates, including the ones previously assumed supported by most/all
540 * Exit when not a tty device in autoconnect mode
544 * Added non-standard baud rates that are defined on FreeBSD
546 * Capitalized "GitHub" in README
550 Changes since tio v1.16:
552 * Compacted tty_configure() a bit
554 * Fixed automatic baud rate enablement
558 * Added autodetection of available baud rates
560 Various platforms support different baud rates.
562 To avoid adding platform specific handling generic baud rate detection
563 tests are introduced in the configure script. Successfully detected baud
564 rates are automatically enabled. This applies to both the C code and the
565 bash completion script.
568 Baud rates below 57600 are defined by POSIX-1 and supported by most
569 platforms so only baud rate 57600 and above are tested.
571 * Updated bash-completion
573 * Fixed printf() format type
575 * Added Travis build configuration
579 * Generated bash completion at configure time
581 * Reduce code duplication in baud rate detection
583 * Add support for baud rates 200 and 1800
585 * Fixed baudrate type
589 Changes since tio v1.15:
595 * Removed obsolete packaging files
597 * Removed use of deprecated bzero()
601 Changes since tio v1.14:
603 * Removed + to remove potential confusion
605 * Added input digit checks
607 * Fixed license string
609 * Introduced tty_configure()
611 Moved tty configuration actions to tty_configure() in tty.c. This way
612 options.c is strictly about parsing options nothing else.
614 * Function names cleanup
616 * Updated AUTHORS file
618 Added Nick who created the new tio package for Arch Linux.
620 * Fixed tx/rx counters type
624 * Include config.h before standard headers
626 Large file support was meant to be enabled in v1.11.
627 This change enables it for real.
631 Changes since tio v1.13:
633 * Fixed tio_printf macro
637 Fixed launch hints not being printed in no autoconnect mode.
639 * Added 'ctrl-t ?' to list available commands
641 * Fixed log mechanism
643 To avoid echoing only log what is received from tty device.
645 * Improved tio output
647 Added titles and indentation to commands output for clearer separation
648 when firing commands repeatedly.
650 Also added print of tio version and quit command hint at launch.
652 * Cleaned up tio print mechanism
658 "allow" is a transitive verb, which requires an object,
659 so "allow to <verb>" is ungrammatical.
665 Changes since tio v1.12:
667 * Fixed some error prints
669 * Fixed error printing for no autoconnect mode
671 Always print errors but only print silent errors when in no autoconnect
674 * Added key command for showing session settings
676 A new key command "ctrl-t i" is added to allow the user to display the
677 various session settings information (baudrate, databits, log file, etc.).
679 This is useful in case you have a running session but have forgotten
680 what the settings are.
684 Changes since tio v1.11:
686 * Consolidated command key handling
688 * Moved delay mechanism into separate function
690 * Retired obsolete usleep()
692 Replaced with nanosleep()
694 * Added simple tx/rx statistics command (ctrl-t s)
696 To display the total number of bytes transmitted/received simply perform the
697 'ctrl-t s' command sequence.
699 This feature can be useful when eg. trying to detect non-printable
702 * Further simplification of key handling
704 Changed so that the "ctrl-t ctrl-t" sequence is now simply "ctrl-t t" to
705 send the ctrl-t key code. This is inspired by screen which does similar
706 to send its command key code (ctrl-a a).
708 This change also eases adding new key commands if needed.
710 Updated man page accordingly.
712 * Cleaned up and simplified key handling
716 * Insert output delay only if something was output
720 Changes since tio v1.10:
722 * Enabled large file support (LFS)
724 Added autotools AC_SYS_LARGEFILE to support 64 bit file size handling.
730 Changes since tio v1.9:
732 * Introduced lock on device file
734 Tio will now test for and obtain an advisory lock on the tty device file
735 to prevent starting multiple sessions on the same tty device.
741 * Treat EOF on stdin as error
745 Changes since tio v1.8:
747 * Cleanup of error handling
749 Introduced consistent way of handling errors and printing error messages.
751 Also upgraded some warnings to errors.
753 * Updated localtime() error message
759 * Fix error handling for select()
761 Previously the error handling code for select() was unreachable.
763 * Removed unneeded quotes from AM_CFLAGS
767 * Fixed setting "tainted"
769 Set "tainted" if and only if any character was read from the device.
771 Ctrl-t is no longer sent to the device on exit, so the trick to avoid
772 its echo is not necessary.
774 Characters read from stdin don't directly affect output, so they
775 shouldn't enable "tainted".
777 * Used \r in color_printf()
779 \033[300D is an unusual way to move the cursor back to column 1.
780 Use straightforward \r instead.
782 * Added missing \r\n to warning messages
784 \n alone is not enough, because the terminal is in raw mode.
788 Changes since tio v1.7:
790 * Fixed enablement of compiler warnings
792 * Fixed log_open() prototype
794 * Fixed index error wrt ctrl-t detection
796 * Fixed handling of ctrl-t
798 Before, when exercising the quit key sequence (ctrl-t + q) the ctrl-t code
799 (0x14) would be sent.
801 This is now fixed so that it is not sent.
803 However, in case it is needed to send ctrl-t to the device it is possible by
804 simply repeating the ctrl-t.
806 Meaning, ctrl-t + ctrl-t = ctrl-t sent to device.
808 * Improved error handling
810 Fixes a memory leak and avoids aggressive busy looping when problems
811 accessing tty device.
813 * Removed redundant log_close() call
815 * Enabled compiler warnings
819 * Stopped copying arguments to fixed-size buffers
821 Don't needlessly copy command-line arguments into fixed-size buffers.
823 Previously the program crashed if an overlong pathname was provided on
824 the command line. Also, some systems (such as GNU Hurd) don't define
827 * Added const to log_open() prototype
829 * Completed the ^g to ^t transition
831 In v1.7 the escape key was changed from ^g to ^t, but some
832 code and comments still referred to the old key.
834 * Used HTTPS for tio.github.io
836 * Man page beautification
838 * Bumped date in man page
840 * Improve man page formatting
842 Use regular font for metacharacters such as "[]", "," or "|";
843 use italic font for metavariables.
845 * Fixed hyphen vs minus vs em-dash confusion in man page
848 \- prints as minus sign;
849 \em prints as em-dash.
853 Changes since tio v1.6:
855 * Changed escape key from ^g to ^t
857 After renaming to "tio" it makes sense to change the escape key
858 accordingly. Hence, the new escape key is ^t.
860 Meaning, in session, its now ctrl-t + q to quit.
864 * Fixed silly "tio or tio" in man page