--------------------------------------------------------------------------------

RELEASE NOTES:
--------------------------------------------------------------------------------

Some very nice issue reports have helped correct various corner case issues.
Mint users helped find a big one with lspci.

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. Unsure how to handle Android case where inxi correctly does -r test, see bug
3 fixes 6, but android incorrectly claims it is readable when it is not
readable, then the reader tool can't read the file and fails with permissions
error. This is one of those weird android errors that are pretty much impossible
to fully work around, but we can get rid of the readline() errors when reader()
was trying to work on a file handle that did not exist, that part was an inxi
bug.

--------------------------------------------------------------------------------
BUGS:

1. dm detection was not using case sensitive search for duplicates, leading to
cases where dm like slim / SLiM failed to get detected and then repeated in
output. Anonymous BSD debugger dataset exposed this issue, thanks.

2. In certain corner cases, like ARM Android, sub reader got passed a file that
had passed the is readable -r test, but it still failed with permissions error,
which then led reader to try to keep working with a null $fh. While in theory
nothing non readable should be passed to reader(), that fails when the OS fails
to actually follow correct readable rules, as in this case. Added protections in
reader() to handle this case, now will show error, but will not try to work with
$fh, that is how it should have been all along, but this is a very corner case.
Exposed by an anoymous ARM debugger dataset.

Thanks Termux user for creating the debugger dataset that exposed this issue.

3. lspci parser didn't null port value each iteration, resulting in all pci
items getting port values. Not a big deal, port is only used one place, but good
to find and correct that error.

4. Not an inxi bug, but would appear so to end users: lspsci -nnv implements a
truncating routine and breaks the first line for each bus id. See Fix 6 and Code
fix 3.

--------------------------------------------------------------------------------
FIXES:

1. -S and -I would show Console: tty pts/3 even though pts device is a pty, not
a tty. The only time this happened was when connecting to a remote system using
ssh or something like that. Local console still shows Console: tty 2 since that
was correct, but Console: tty pts/2 was confusing since technically it's not a
tty, it's a pty, pseudo terminal.

Now shows, when relevant: Console: tty 2 OR Console: pty pts/2.

2. Issue #252 notes that Emacs (and possibly other code/text editors with native
embedded terminals) includes a native virtual terminal that also follows
configuration rules from the editor to highlight trailing spaces. This created
odd looking screen output in Emacs vt mode since inxi always sets key/value
pairs with a white space ending as separator for next key value pair for screen
output mode, resulting always in a trailing space on each vt screen line. Fix
was to remove the last trailing space just prior to the print line point to
avoid this issue.

As a general thing, I'm curious to learn if any editor other than Emacs actually
contains its own virtual terminal that also follows the editor rules for output.
Or if any virtual terminal has such a highlight trailing space rule, which would
be imo so annoying it's hard to understand why a vt would implement it. Easy to
understand why Emacs (or any editor) does it, but an editor also being a vt AND
applying certain editor display configurations to the vt is a very specific and
unique circumstance I'd say.

Odd, historical, but there it is, why not handle it?

3. ARM / Android case where certain files passed the read -r test, but failed
with permission denied error. This tripped a further glitch where reader() would
then try to work with the failed $fh, see bug 2. This was really more a fix
than a bug, since the bug in this case was in android permissions tests, not
inxi, but it appears to be a bug to end users, so it's handled now.

4. Another ARM/Android, there was a voltage regulator IP that contained the term
wlan so it tripped false positive for network match. Added a new type,
regulator, to filter out those, like codec and dummy do already.

5. For issue #254, fix for cygwin ERR-102 in partitions, add cygwin test, new
dev type, 'windows', dev base then becomes E: or whatever. To avoid confusing D:
for a key: with no value, added D:/ slash.

6. Mint people discovered lspci issue, lspci -nnv has a bug where it will
truncate the output of the first line per bus ID if it's over some arbitrary
amount, then tack on rev and other items to end of that string, which leads to
the block: [vendorID:productID] getting truncated or removed altogether. Clearly
an oversight, at least I hope it's an oversight on lspci's part, but have to
work around the issue anyway since it may never get fixed, and has been around a
long time. Bug is in lspci 3.7, 3.6.4, and probably earlier.

Also added in a fillin tool for this rare case, lspci -n data is used to replace
the missing values.

Note that while lspci recommends using -mmv, for machine parsing, apparently
nobody noticed that -mmv doesn't have the same data items as -nnv, sigh.

7. Issue #255 noted that the combination of:
GoogleDrive Hogne: fuse.rclone 15728640
which is two word remote fs AND a fs type with a '.' in it would fail to trip
the handler for that multi word remote mount name. Also failed to detect as
remote fs, added fs specific test since the actual mount name doesn't permit
reliable detection as remote type. Testing for trailing ':' isn't safe since
':' alone is not an invalid character in a file system name as far as I know.

Further, this exposed that the ^^ space replacements for $row[0] fs > 1 word
name were not being reset soon enough in the logic, that's also corrected.

--------------------------------------------------------------------------------
ENHANCEMENTS:

1. Neglected to support standard package config file override
/etc/inxi.d/inxi.conf item. This is mainly useful for packaged inxi's who want
to override the distro maintainer /etc/inxi.conf file. Test priority is the same
except /etc/inxi.d/inxi.conf comes right after /etc/inxi.conf now in the test
sequence.

2. Added basic cygwin id, yes, inxi works in cygwin, apparently, with some
issues. Added cygwin os id to distro ids.

3. Added --version info for debugger, sometimes we want to know what verion of
a tool, like lspci, in case it has a bug or something.

4. Added exfat and apfs to unmounted fs types.

5. More disk vendors!! New vendor ID matches!! Yes, yes, you've heard it all
before, the list never ends!! The eternal chaos of existence manifested in just
how many IDs can be generated for new and old disk vendors alike!!!

--------------------------------------------------------------------------------
CHANGES:

1. No changes this release.

--------------------------------------------------------------------------------
DOCUMENTATION:

1. Pull request #253 corrected typos, urls, and other errors in man page,
inxi/pinxi comments, pinxi.1/inxi.1, README.txt, and updated LICENSE.txt to
current gnu wording.

--------------------------------------------------------------------------------
CODE:

1. Forgot to add lspci debugger fake data option, that's corrected. That's
--fake lspci, now works, didn't before, only the bsd pci tools had fake switches
previously, since lspci never needs debugging really, but did now to test an
issue report.

2. Added -CYGWIN to debugger file name. Added -ANDROID if ARM and if android.

3. With Fix 6, refactored entire lspci_data block, added lspci_n_data item,
which matches bus id of lspci -nnv when corruption occurs and replaces vendor,
product, and if also missing, rev version. I kind of knew I'd have to do this
fix one day, that was the same fix logic used on the BSD pci tools, which have
similar issues with consistency in output, or lack thereof.

This refactor is long term very good because it avoids an entire class of
possible errors, and makes pci detections far more robust.

4. Created new repo, for legacy code, inxi-legacy. Moved branch inxi-c to
inxi-legacy/xorg-c, moved branch xiin to /xiin, moved branch inxi-legacy (binxi)
to inxi-legacy/inxi-legacy. Those directories each contain all the files each
branch had in it.

This gets rid of some branches clutter, and nobody needs to see those anymore,
but if they care, they can look at them. Note that to do this, I had to merge
their histories, which was not that nice, but git is just really bad at this
type of stuff, so that's how it goes.

Times like this really make me miss svn's directory based branch approach...

5. Simplified sub fs_excludes, simplified regex constructors for all function
that use this data, made list more fault tolerate by adding global (fs)?(\d{0,2}
which means all file systems can have or not have 'fs' at end, and all can have
or not have a version number in string.

6. Exposed by issue #255, refactored slightly ordering of partition filter
logics and variable resets in the df output processing loop.

7. Added --fake partitions, to help debug odd corner cases like cygwin glitches.
This commit is contained in:
Harald Hope 2021-10-11 18:56:00 -07:00
parent 1e2bef0163
commit a6c1c46db2
3 changed files with 838 additions and 444 deletions

428
inxi

File diff suppressed because it is too large Load diff

14
inxi.1
View file

@ -15,7 +15,7 @@
.\" with this program; if not, write to the Free Software Foundation, Inc.,
.\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
.\"
.TH INXI 1 "2021\-07\-21" "inxi" "inxi manual"
.TH INXI 1 "2021\-10\-11" "inxi" "inxi manual"
.SH NAME
inxi \- Command line system information script for console and IRC
@ -2150,8 +2150,16 @@ inxi will read its configuration/initialization files in the
following order:
\fB/etc/inxi.conf\fR contains the default configurations. These can be
overridden by user configurations found in one of the following locations
(inxi will store its config file using the following precedence:
overridden by creating a \fB/etc/inxi.d/inxi.conf\fR file (global override,
which will prevent distro packages from changing or overwriting your edits. This
method is recommended if you are using a distro packaged inxi and want to
override some configuration items from the package's default
\fB/etc/inxi.conf\fR file but don't want to lose your changes on a package
update.
You can old override, per user, with a user configuration file found in one of
the following locations (inxi will store its config file using the following
precedence:
if \fB$XDG_CONFIG_HOME\fR is not empty, it will go there, else if
\fB$HOME/.conf/inxi.conf\fR exists, it will go there, and as a last default,

File diff suppressed because it is too large Load diff