Audio -A - now wrap is fully dynamic down to 80 characters, and also the expansion of ALSA
to Advanced Linux Sound System only happens if that fits in the display width.
-N/-n/-i - Most networking/ip address stuff wraps now.
-d - optical drive data wraps better now too.
This more or less completes the line wrap redo.
strings --version used in the debugger results in a hang, which you can duplicate with:
strings
alone, without any argument or info, that will hang too, so I assume if the system doesn't
have the --version parameter, strings ignores that, and basically just does what it would do
with no option, hang.
Thanks for user ypharis persistence in tracking down this issue. So far only appeared on slackware
based distros, but since the debugger should 'just work', removing the version test.
methods:
something <<< $variable is signficantly slower than: echo $variable | something
so I replaced almost all instances of <<< with echo ...|
I've seen speed differences of up to 10% but it's not consistent, so this is just
something to boost performance slightly on older systems I'd guess.
when the supybot
'SHELL' command is used, 'CALL' gives the user irc client data, and
supybot etc are
not detectable.
Fine tuned some error message lengths so they fit into 80 columns or so.
for systems with a lot of them, that will clean up the output.
Added dynamic wrapping to --recommends and -c 94-99.
These are the main things, there's a few smaller issues with -xx output on -N/-n/-i but
those will noly really show with full output and it takes a while to get this stuff stable
so maybe some other time, but it's ok for now.
the bus id itself to determine if the
VGA compatible controller
3D controller
Display Controller
refer to separate chips or the same one.
Bus id gives the data needed, because the video chip, the real card, that is,
is on for example 00:05.0 the trailing .0 is the key, that's the actual card.
The audio or display controller for the same card would be for example: 00:05.1
I don't know if this is fully reliable, but it will have to do, either some cards
as is get missed, or some cards get double id'ed, unless I use a hack like this.
There's nothing else I can find but the bus id to determine that it's the same
physical device or not.
to graphics card detection, that's a new one on me. Dual card systems might use this.
00:02.0 Display controller: Intel Corporation 82865G Integrated Graphics Controller (rev 02)
01:00.0 VGA compatible controller: NVIDIA Corporation NV44A [GeForce 6200] (rev a1)
Some more switches to bash native methods as well.
instead of $(type -p program) subshell.
I'll see if getting rid of as many subshells as possible has much impact on performance, certainly makes the code ugly but maybe it's worth it.
No version change.
${var} to $var where appropriate to avoid extra overhead of ${..}; removed 'basename'
and replaced with ${path##*/} which avoids unnessary subshells.
Fixed dynamic line wraps on -I and -S lines, now those in most cases will work well
down to 80 cols.
Fixed bug in optical drives, at some point in the last few years, the kernel in /sys
changed the path to the optical drive data, added in /ata8/ (example) so both methods
are now handled. This should fix a lot of failures to show optical drive brand name etc.
Added weechat detection, trying also supybot/limnoria detection in irc client version.
There was weechat-curses, but I guess they finally dropped the -curses. Limnoria is
a fork of supybot but still uses the supybot program name, but added in limnoria too
if they get around to changing that.
More dynamic sizing tweaks, more optimization of code. Discovered that dipping into gawk
is almost 250x more expensive in terms of execution time than using bash variable.
Will change to use bash directly as time goes along where it's safe and accurate.
Added handling to support /run paths using directories, like /run/gdm/gdm.pid for dm data.
but the bash variable manipulation seems to be a bit, quite a bit in some cases, more
efficient than subshells, so I'll remove as many subshells as makes sense over time.
Only dumping the wc -c subshells from the help print loops increased speed of that by
about 300% or so, literally.
time to make it easier to test stuff one by one.
Full refactoring/reordering of top global variables, moved user/maintainer set variables
to top, and clearly identify all globals.
Changed LINE_MAX to COL_MAX but all user configuration files will stay working since
inxi now will check for that and translate them to the new variable names.
New lines fixed, -C cpu and -f cpu plus full flags. Flags output is now fully dynamic to
display screen in terminal/console. Moved cpu short flags to -x because it's not that
important in general and just clutters things up in my opinion.
Print flags/bogomips on separate line if line greater than display width.
The rest of the lines will get a similar treatment, but it takes a bit of trial and error
for each line to get it working right.
Note that IRC line lengths are NOT dyanamic unless I can find a way to determine the column
width of irc clients, but that won't be accurate since fonts vary in widths for each character.
CPU was the worst offender in my opinion in terms of regular output wrapping to new line messily,
next will be the things with ports/chip id/card id.
Tightened up a bit more the dyanamic help / version output handler.
window column width help/version outputs. There is a significant slowdown to achieve this,
but I've optimized it as much as I could so it should be acceptable for most users now.