ffGetTerminalResponse() polls only before the first read(). If the terminal
sends a response that is cut short (e.g. `\e[4;800` without the rest), the
following read() in the loop blocks forever because the tty is in
non-canonical mode with VMIN=1.
Wait with the same timeout before every subsequent read() as well.
* Format: fix substring ends before the start of the string
Closes#2668
Signed-off-by: Don Yin <Don_Yin@outlook.com>
* Doc: moves changelog entry to Unreleased [ci skip]
I moved the unreleased fix out of the 2.70.0 section.
Signed-off-by: Don Yin <Don_Yin@outlook.com>
---------
Signed-off-by: Don Yin <Don_Yin@outlook.com>
- Windows: use FILE_FS_FULL_SIZE_INFORMATION_EX on Windows 10 1809+ (Build >= 17763) when calcType != AVAILABLE to get ActualTotalAllocationUnits/ActualAvailableAllocationUnits (ignoring per-user disk quotas). Fall back to legacy FILE_FS_FULL_SIZE_INFORMATION with CallerAvailableAllocationUnits when calcType is AVAILABLE or EX is unavailable.
- Unix-like: respect --disk-calc-type. Use f_bfree for FREE, f_bavail for AVAILABLE (Linux/BSD/SunOS). Haiku currently always uses free_blocks.
- Refactor FFDisk: remove bytesUsed and bytesAvailable; compute used = total - free in disk module.
- Disk module: update custom format (remove `size-available`, add `bytes-used` and `bytes-total`); update JSON output (remove `bytes.available`, `bytes.used`).
- Disk detection: stop computing used in common path; let each platform set bytesFree by chosen semantics.
Fixes#2651
- Host: "Ana Bilgisayar" -> "Cihaz". The module reports the machine
model; "ana bilgisayar" reads as a mainframe in Turkish.
- Login Manager: "Oturum Açma Yöneticisi" -> "Giriş Yöneticisi".
Shorter, and the common Turkish term.
- Top: "En yoğun işlemler" -> "En Yoğun Süreçler". Title case like the
other Turkish names, and "Süreçler" to match the Processes module.
- Bluetooth Radio: "Bluetooth Radyosu" -> "Bluetooth Adaptörü". "Radyo"
reads as an FM radio; "Adaptör" matches Power Adapter ("Güç Adaptörü").
Related to #2526