Did you try: insmod regexp for x in (*); do .... done Just trying to understand the problem
Le dim. 30 juin 2024, 19:26, Denis 'GNUtoo' Carikli < gnu...@cyberdimension.org> a écrit : > Hi, > > The problem we try to solve with --set=VARNAME in ls. > ===================================================== > In the GNU Boot project (a free software distribution that releases > free software boot firmware images), we provide images with (a > deblobbed) Coreboot and GRUB (run as a Coreboot payload). We use GRUB > mainly to find other configuration files like syslinux.cfg (to boot on > external medias) or grub.cfg (to boot on the (usually GNU/Linux) > distribution installed to the hard disk / SSD). > > We also provide images with a SeaBIOS Coreboot payload instead, but we > plan to make the images with GRUB become the preffered way of booting > because in practice it works very well with the Coreboot Framebuffer, > and with it we only lack a way to reliabily list the devices being > present in order to be able to also find grub.cfg config files inside > filesystems present on LVM logical volumes as well. > > The alternative to using GRUB as a Coreboot payload is to use SeaBIOS > instead but that doesn't work well because when SeaBIOS loads the > (usually GNU/Linux) distribution's GRUB, it results in a black screen > unless the users tweak the /etc/default/grub configuration to use the > 'console' output instead of the default gfxterm, and we also want less > technical users to be able to easily use computers with GNU Boot. This > issue is probably due to SeaVGABIOS that probably doesn't fully > implement the VGA standard, so my guess is that fixing this is more > work than adding --set=VARNAME to the 'ls' command. > > Our current GRUB configuration file is in our git repository[1] and it > hardcodes devices like ahciX,Y and then tries to find the grub.cfg > with (a limited) number of X,Y combination. > > [1] > https://git.savannah.gnu.org/cgit/gnuboot.git/tree/resources/grub/config/grub.cfg > > Questions about the implementation > ================================== > The patch set that follows is far from optimal: > > * The 'commands/ls: add --set=VARNAME.' patch only implements > --set=VARNAME for 'ls' without other arguments, and it returns an > error otherwise. I'm not sure if it's the right solution but in > another hand implementing --set=VARNAME for all the ls command would > make the patch too big given how the implementation is done (more > on that later). > > * The patches adding --set=VARNAME 'commands/ls: add --set=VARNAME.' > changes is not very intrusive but the later patch 'commands/ls: > support --set for files/directories.' shows the broader issue very > clearly: all the prints are duplicated with some 'if (varname) { > ... }' construct. > > Since here my goal is only to add '--set=VARNAME' for 'ls' without > arguments, what would be the best way to proceed? > > Would a patch that doesn't cover all the 'ls' arguments be acceptable? > If not, I guess that the way to go would be to rework a bit the > printing as with the current way, there is too much duplication of > code and it also makes the code harder to follow which in turn makes > maintenance of this code harder. > > In this case what kind of API would be acceptable? Should we introduce > some functions that have an argument that can select where to print? > > If so would something similar to fprintf be ok? It could be used like > that 'grub_xfprintf( varname ? stdout : varname, "%s\n", "Hello > world");' and make the code more redable than with the 'commands/ls: > support --set for files/directories.' patch. > > Denis 'GNUtoo' Carikli (4): > Add grub_env_append function. > Add command to append to existing environment variables. > commands/ls: add --set=VARNAME. > commands/ls: support --set for files/directories. > > grub-core/commands/ls.c | 249 ++++++++++++++++++++++++++++++++++----- > grub-core/kern/corecmd.c | 25 ++++ > grub-core/kern/env.c | 38 ++++++ > include/grub/env.h | 1 + > 4 files changed, 282 insertions(+), 31 deletions(-) > > -- > 2.45.1 > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel >
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel