Subject: Re: [PATCH SLOF v2 4/5] disk-label: introduce helper to check fat filesystem

From: Thomas Huth <[email-masked]>
Date: Mon, 29 Jun 2015 10:47:16 +0200

On Thu, 25 Jun 2015 12:15:28 +0530
Nikunj A Dadhania <[email-masked]> wrote:

> Signed-off-by: Nikunj A Dadhania <[email-masked]>
> ---
>  slof/fs/packages/disk-label.fs | 17 +++++++++--------
>  1 file changed, 9 insertions(+), 8 deletions(-)
> 
> diff --git a/slof/fs/packages/disk-label.fs b/slof/fs/packages/disk-label.fs
> index 0995808..7ed5526 100644
> --- a/slof/fs/packages/disk-label.fs
> +++ b/slof/fs/packages/disk-label.fs
> @@ -321,6 +321,14 @@ CONSTANT /gpt-part-entry
>  
>  \ Load from first active DOS boot partition.
>  
> +: fat-bootblock? ( addr -- flag )
> +   \ byte 0-2 of the bootblock is a jump instruction in
> +   \ all FAT filesystems.
> +   \ e9 and eb are jump instructions in x86 assembler.
> +   dup c@ e9 = IF drop true EXIT THEN
> +   dup c@ eb = swap 2+ c@ 90 = and
> +;
> +
>  \ NOTE: block-size is always 512 bytes for DOS partition tables.
>  
>  : load-from-dos-boot-partition ( addr -- size )
> @@ -549,14 +557,7 @@ AA268B49521E5A8B    CONSTANT GPT-PREP-PARTITION-4
>  : try-dos-files ( -- found? )
>     no-mbr? IF false EXIT THEN
>  
> -   \ disk-buf 0 byte 0-2 is a jump instruction in all FAT
> -   \ filesystems.
> -   \ e9 and eb are jump instructions in x86 assembler.
> -   disk-buf c@ e9 <> IF
> -      disk-buf c@ eb <>
> -      disk-buf 2+ c@ 90 <> or
> -      IF false EXIT THEN
> -   THEN
> +   disk-buf fat-bootblock? 0= IF false EXIT THEN
>     s" fat-files" (interpose-filesystem)
>     true
>  ;

Reviewed-by: Thomas Huth <[email-masked]>