ldlinux: fix serial port handling regression

commit c4fa33189f1d ("serial: Clean up and abstract handling of serial
ports") removed an assignment to 'port' in the config parsing code which
is used to setup the serial ports. Restore the assignment.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
version: Welcome to the 5.11 release cycle

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
PATH: use a linked list internally

In retrospect, choosing the colon character as the entry separator for
the PATH directive was not a smart move, as that character is also used
in TFTP-style paths. This conflict manifests as PXELINUX being unable to
find and load files.

An example dnsmasq log looks like,

dnsmasq-tftp: sent /arch/boot/syslinux/lpxelinux.0 to 192.168.0.90
dnsmasq-tftp: file /arch/ldlinux.c32 not found
dnsmasq-tftp: file /arch//ldlinux.c32 not found
dnsmasq-tftp: file /arch//boot/isolinux/ldlinux.c32 not found
dnsmasq-tftp: file /arch//isolinux/ldlinux.c32 not found
dnsmasq-tftp: file /arch//boot/syslinuxldlinux.c32 not found
dnsmasq-tftp: sent /arch//boot/syslinux/ldlinux.c32 to 192.168.0.90
dnsmasq-tftp: error 0 No error, file close received from 192.168.0.90
dnsmasq-tftp: failed sending /arch//boot/syslinux/ldlinux.c32 to 192.168.0.90
dnsmasq-tftp: sent /arch/boot/syslinux/archiso.cfg to 192.168.0.90
dnsmasq-tftp: sent /arch/boot/syslinux/whichsys.c32 to 192.168.0.90
dnsmasq-tftp: file /arch/libcom32.c32 not found
dnsmasq-tftp: file /arch//libcom32.c32 not found
dnsmasq-tftp: file /arch/libcom32.c32 not found
dnsmasq-tftp: file /arch//arch//boot/syslinux/libcom32.c32 not found

The last line of the log is the indication that there's a problem.
Internally, Syslinux adds the location of ldlinux.c32 to PATH by
querying the current working directory once ldlinux.c32 is successfully
loaded. Under PXELINUX that means the initial PATH string will be,

   "::/arch/boot/syslinux/"

The PATH parsing code doesn't know how to correctly parse the "::"
string and hence, the file is searched for relative to the 210 dhcp
option directory - /arch/.

Implement PATH with a linked list which *greatly* simplifies the path
code, and means we no longer have to parse strings backwards and
forwards.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
ldlinux: fix loading of kbdmap files

Use the canonical code sequence for opening the kbdmap file instead of
referencing KernelName, which presumably is a remanent of the old
assembly code.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
cli: don't disable linewrap when redrawing the cmdline

It messes things up when we want to use printf(), for example when
printing labels after the user has hit the TAB key.

This fixes a bug where labels would be printed on a single line on the
screen (with some being displayed off screen) when they should have been
printed across multiple lines.

I can't think of a reason to disable linerap when redrawing the command
line - so let's not.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>