diff options
author | hpa <hpa> | 2002-10-24 17:31:45 +0000 |
---|---|---|
committer | hpa <hpa> | 2002-10-24 17:31:45 +0000 |
commit | 816932ec84dbea9dc1f212a6ac749d077689febc (patch) | |
tree | bff6662e08d41604709fdc4d22607ae87a316a00 | |
parent | d684e72385132bd87e46e5a8fdf591da9ee8ba2c (diff) | |
download | syslinux-816932ec84dbea9dc1f212a6ac749d077689febc.tar.gz |
(Hopefully) fix bug related to very long configuration filessyslinux-2.00-pre12
ISOLINUX: support /boot/isolinux as well as /isolinux
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | getc.inc | 6 | ||||
-rw-r--r-- | isolinux.asm | 10 | ||||
-rw-r--r-- | isolinux.doc | 27 | ||||
-rw-r--r-- | parsecmd.inc | 2 |
5 files changed, 35 insertions, 13 deletions
@@ -20,6 +20,9 @@ Changes in 2.00: * Add a small script, mkdiskimage, to create a DOS-formatted hard disk image using mtools. This may be useful in conjunction with MEMDISK. + * ISOLINUX: Search for a /boot/isolinux directory as well as + /isolinux. + * ALL: Fix a bug related to very long configuration files. Changes in 1.76: * ISOLINUX: Remove code no longer used which caused hangs on @@ -52,8 +52,8 @@ open_return: ret getc: stc ; If we exit here -> EOF - mov ecx,[FBytes] - jecxz getc_ret + cmp dword [FBytes],byte 0 + je getc_ret mov si,[FPtr] cmp si,[EndOfGetCBuf] jb getc_loaded @@ -73,7 +73,7 @@ getc_oksize: sub [FClust],cx ; Reduce remaining clusters mov [FNextClust],si ; Store new next pointer pop si ; SI -> newly loaded data pop es ; Restore ES -getc_loaded: lodsb ; Load a byte +getc_loaded: lodsb ; Load a byte, increment SI mov [FPtr],si ; Update next byte pointer dec dword [FBytes] ; Update bytes left counter clc ; Not EOF diff --git a/isolinux.asm b/isolinux.asm index 9e41add4..71f1c58d 100644 --- a/isolinux.asm +++ b/isolinux.asm @@ -796,13 +796,18 @@ get_fs_structures: mov [RootDir+dir_clust],eax mov [CurDir+dir_clust],eax - ; Look for an "isolinux" directory, and if found, + ; Look for an isolinux directory, and if found, ; make it the current directory instead of the root ; directory. + mov di,boot_dir ; Search for /boot/isolinux + mov al,02h + call searchdir_iso + jnz .found_dir mov di,isolinux_dir - mov al,02h ; Search for a directory + mov al,02h ; Search for /isolinux call searchdir_iso jz .no_isolinux_dir +.found_dir: mov [CurDir+dir_len],eax mov eax,[si+file_left] mov [CurDir+dir_clust],eax @@ -1525,6 +1530,7 @@ aborted_msg db ' aborted.', CR, LF, 0 crff_msg db CR, FF, 0 default_str db 'default', 0 default_len equ ($-default_str) +boot_dir db '/boot' ; /boot/isolinux isolinux_dir db '/isolinux', 0 isolinux_cfg db 'isolinux.cfg', 0 err_disk_image db 'Cannot load disk image (invalid file)?', CR, LF, 0 diff --git a/isolinux.doc b/isolinux.doc index cc724808..502162d5 100644 --- a/isolinux.doc +++ b/isolinux.doc @@ -2,7 +2,7 @@ A bootloader for Linux using ISO 9660/El Torito CD-ROMs - Copyright (C) 1994-2001 H. Peter Anvin + Copyright (C) 1994-2002 H. Peter Anvin This program is provided under the terms of the GNU General Public License, version 2 or, at your option, any later version. There is no @@ -23,19 +23,22 @@ Make sure you have a recent enough version of mkisofs. I recommend mkisofs 1.13 (distributed with cdrecord 1.9), but 1.12 might work as well (not tested.) -To create an image, create a directory called "isolinux" underneath -the root directory of your ISO image master file tree. Copy -isolinux.bin, a config file called "isolinux.cfg" (see syslinux.doc -for details on the configuration file), and all necessary files -(kernels, initrd, display files, etc.) into this directory, then use -the following command to create your ISO image (add additional options -as appropriate, such as -J or -R): +To create an image, create a directory called "isolinux" (or, if you +prefer, "boot/isolinux") underneath the root directory of your ISO +image master file tree. Copy isolinux.bin, a config file called +"isolinux.cfg" (see syslinux.doc for details on the configuration +file), and all necessary files (kernels, initrd, display files, etc.) +into this directory, then use the following command to create your ISO +image (add additional options as appropriate, such as -J or -R): mkisofs -o <isoimage> \ -b isolinux/isolinux.bin -c isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table \ <root-of-iso-tree> +(If you named the directory boot/isolinux that should of course be +-b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat.) + ISOLINUX resolves pathnames the following way: - A pathname consists of names separated by slashes, Unix-style. @@ -65,6 +68,14 @@ I would greatly appreciate if you could try out the debugging version (isolinux-debug.bin) and let me know what it reports. + ++++ NOTE ON THE CONFIG FILE DIRECTORY ++++ + +ISOLINUX will search for the config file directory in the order +/boot/isolinux, /isolinux, /. The first directory that exists is +used, even if it contains no files. Therefore, please make sure that +these directories don't exist if you don't want ISOLINUX to use them. + + ++++ BOOTING DOS (OR OTHER SIMILAR OPERATING SYSTEMS) ++++ WARNING: This feature depends on BIOS functionality which is diff --git a/parsecmd.inc b/parsecmd.inc index 9e69319e..964fbcc3 100644 --- a/parsecmd.inc +++ b/parsecmd.inc @@ -39,7 +39,9 @@ getcommand: or al,20h ; Convert to lower case movzx ebx,al ; Hash for a one-char keyword .read_loop: + push ebx call getc + pop ebx cmp al,' ' ; Whitespace jbe .done or al,20h |