Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:lafenghu
trustedgrub
grubonce
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File grubonce of Package trustedgrub
#!/usr/bin/perl # Keep this sort of configurable for the future. $GRUBDIR="/boot/grub"; # Parse the menu file, and see if we can get a match for a maybe given arg. open(MENU, "<$GRUBDIR/menu.lst") || die "no menu.lst in $GRUBDIR"; $gotit = 0; $titleno = -1; $global_default = undef; while(<MENU>) { m,^\s*default\s+(.+), && $titleno == -1 && ($global_default = $1); next unless m,^\s*title\s+(.*),i; $title_name = $1; $titleno++; if (@ARGV > 0) { # Argument may be entirely numerical, in which case it is an index, # or a perl RE that leads to the first title matching. if (( $ARGV[0] =~ m,^[0-9]+$, && $titleno eq $ARGV[0] ) || ( $ARGV[0] !~ m,^[0-9]+$, && $title_name =~ m,$ARGV[0],i) ) { $gotit = 1; last; } } else { print "$titleno: $title_name\n"; } } close(MENU); print "Warning: you haven't set a global default!\n" if !defined($global_default); # Without a command line argument, we have now listet the titles and are done. exit 0 if @ARGV < 1; # Else the user wants to write the default file. We have better found a match! if ($gotit > 0) { print "Warning: your global default is 'saved'; changing default permanently!" if $global_default eq "saved"; print "Using entry #$titleno: $title_name\n"; # set the magic one-time flag $titleno |= 0x4000; open(DEFFILE, ">$GRUBDIR/default") || die "Cannot open default file for writing"; $buf = $titleno . "\0" . "\n" x 9; syswrite(DEFFILE, $buf, 10); close(DEFFILE); exit 0; } else { print $ARGV[0] . " not found in $GRUBDIR/menu.lst\n"; exit 1; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor