Package-Name: lilo
Source: http://home.san.rr.com/johninsd/pub/linux/lilo//(lilo-\d+(\.\d+)+\.src.tar\.gz)/[\0-\377]*?lilo-(\d+(.\d+)+).src.tar.gz $1
Compile-Requires: nasm
Repack:
	tar xzvfp "$(SOURCE)"
Compile:
	mv -f CHANGES COPYING INCOMPAT README* "$(PREFIX)/"
	$(MAKE) CONFIG="-DBDATA -DBUILTIN -DDSECS=3 -DIGNORECASE -DLBA32 -DM386 -DONE_SHOT -DPASS160 -DREISERFS -DREWRITE_TABLE -DSOLOCHAIN -DUNIFY -DVARSETUP"
	$(MAKE) install SBIN_DIR="$(PREFIX)" CFG_DIR="$(PREFIX)" USRSBIN_DIR="$(PREFIX)/sbin" MAN_DIR="$(PREFIX)/man" BOOT_DIR="$(PREFIX)"
Install:
	mv -f "$(PREFIX)"/{lilo,mkrescue} /sbin/
	$(MAKE) instsbin SBIN=keytab-lilo.pl
	$(MAKE) instman SECTION=5 MAN=lilo.conf
	$(MAKE) instman SECTION=8 MAN="lilo mkrescue"
Patch: <<EOT
--- common.h.old	2004-09-02 03:36:08 +0900
+++ common.h	2004-10-15 07:55:27 +0900
@@ -32,6 +32,8 @@
 
 /* special for LILO, bypass the actual open in  dev_open( , ,-1)   */
 #define O_BYPASS -1
+/* don't die on open error, just return -1 from dev_open() */
+#define O_NODIE 0x80000000
 
 #endif
 
--- device.c.old	2004-09-02 05:51:41 +0900
+++ device.c	2004-10-15 07:56:17 +0900
@@ -223,7 +223,7 @@
 	else cache_add(name,number);
     }
     if (flags == O_BYPASS) dev->fd = -1;
-    else if ((dev->fd = open(name,flags)) < 0)
+    else if ((dev->fd = open(name,flags & ~O_NODIE)) < 0 && !(flags & O_NODIE))
 	    die("open %s: %s",name,strerror(errno));
     dev->name = stralloc(name);
     return dev->fd;
@@ -953,7 +953,18 @@
 	if (mask && ipart>0) {
 	    int found;
 	    int serial;
-	   
+
+	    DEVICE d;
+	    int fd;
+	    char c;
+	    fd = dev_open(&d, dev, O_RDONLY | O_NODIE);
+	    if (fd < 0 || read(fd, &c, 1) != 1) {
+		/* no media, I/O error, etc. */
+		dev_close(&d);
+		continue;
+	    }
+	    dev_close(&d);
+
 	    for (found=i=0; i<ndevs && !found; i++) {
 		if (dev==vm[i].device) found = i+1;
 	    }
EOT

-/boot/boot.*
-/etc/lilo.conf
/boot/boot.*
/boot/map
/etc/lilo.conf
/pkg/lilo/
/sbin/lilo
/sbin/mkrescue
/usr/man/man5/lilo.conf.5.gz
/usr/man/man8/lilo.8.gz
/usr/man/man8/mkrescue.8.gz
/usr/sbin/keytab-lilo.pl
