updated all base packages
authorhackbard <hackbard>
Sat, 2 Jul 2005 13:32:26 +0000 (13:32 +0000)
committerhackbard <hackbard>
Sat, 2 Jul 2005 13:32:26 +0000 (13:32 +0000)
53 files changed:
doc/CHANGELOG
misc/hdw-tools/hdw-get
misc/sysfiles/etc/inittab [deleted file]
misc/sysfiles/etc/syslog.conf [deleted file]
packages/base/automake/automake
packages/base/bash/avoid_keypad_sigsev.patch [deleted file]
packages/base/bash/avoid_wcontinued.patch [new file with mode: 0644]
packages/base/bash/bash
packages/base/bash/no_space_append.patch [deleted file]
packages/base/bash/official_fixes.patch [new file with mode: 0644]
packages/base/bash/variable_expansion.patch [deleted file]
packages/base/bash/vi_repeat.patch [deleted file]
packages/base/bdb/bdb
packages/base/bison/bison
packages/base/bzip2/bzip2
packages/base/cvs/cvs
packages/base/e2fsprogs/e2fsprogs
packages/base/file/file
packages/base/findutils/findutils
packages/base/flex/flex
packages/base/gawk/gawk
packages/base/gettext/gettext
packages/base/grep/grep
packages/base/libtool/libtool
packages/base/m4/m4
packages/base/man-pages/man-pages
packages/base/man/man
packages/base/man/man_80cols.patch [deleted file]
packages/base/man/man_conf.patch [deleted file]
packages/base/man/man_pager.patch [deleted file]
packages/base/module-init-tools/module-init-tools
packages/base/net-tools/net-tools
packages/base/perl/perl
packages/base/procps/procps
packages/base/psmisc/psmisc
packages/base/sed/sed
packages/base/shadow/shadow
packages/base/sysklogd/sysklogd
packages/base/sysklogd/syslog.conf [new file with mode: 0644]
packages/base/sysvinit/inittab [new file with mode: 0644]
packages/base/sysvinit/sysvinit
packages/base/tar/tar
packages/base/texinfo/texinfo
packages/base/udev/init_udev.sh
packages/base/udev/udev
packages/base/util-linux/cramfs.patch [new file with mode: 0644]
packages/base/util-linux/kernel_headers.patch [deleted file]
packages/base/util-linux/util-linux
packages/ia32/bootdisk/bootdisk
packages/ia32/lilo/kernel_2_6_x.patch [deleted file]
packages/ia32/lilo/lilo
packages/ia32/nasm/nasm
packages/ia32/syslinux/syslinux

index 458dfd6..d0fab00 100644 (file)
@@ -1,5 +1,6 @@
 *) 2005-07-02
 
+- updated all base packages
 - updated several toolchain packages
 - fixed kernel version for toolchain glibc build
 
index 9ff72ec..fa08cb1 100644 (file)
@@ -77,9 +77,6 @@ if [ "$update" = "1" ] ; then
        echo -en " done. (`cat $DBF | wc -l` packages)\n"
 fi
 
-# create temp directory
-mkdir -p /tmp/.hdw-get
-
 # remove
 if [ "$remove" = "1" ] ; then
        # check if packages depend on package to be removed
@@ -127,22 +124,6 @@ if [ "$remove" = "1" ] ; then
 
        if [ "$simulate" != "1" ] ; then
 
-       # care about info/dir file
-       rm -f /tmp/.hdw-get/dir* ; modify_info_dir=""
-       if [ -n "`grep usr/share/info/dir $fl_file`" ] ; then
-       modify_info_dir="1"
-       cp $inst_root/usr/share/info/dir /tmp/.hdw-get/
-       for info_obj in `grep 'usr/share/info/.*.info' $fl_file | \
-                        awk -F/ '{ print $4 }'`; do
-               info_o=`echo $info_obj | sed 's/.info//'`
-               [ "$verbose" ] && echo "deleting $info_o from info/dir"
-               grep -v \($info_o\)\. /tmp/.hdw-get/dir | \
-               grep -v ^$package\ info\ -\ added\ by\ hdw > \
-               /tmp/.hdw-get/dir~
-               mv /tmp/.hdw-get/dir~ /tmp/.hdw-get/dir
-       done
-       fi
-
        # remove the files/dirs
        ((supposed = 0))
        ((counter = 0))
@@ -163,12 +144,13 @@ if [ "$remove" = "1" ] ; then
        done
        echo -en "\ndone.\n"
 
-       # reinstall info/dir file
-       if [ "$modify_info_dir" ] ; then
-               [ "$verbose" ] && echo "restoring modified info/dir file"
-               cp /tmp/.hdw-get/dir $inst_root/usr/share/info/dir
-               rm -f /tmp/.hdw-get/dir*
-       fi
+       # care about info/dir file
+       echo "recreating info dir file ..."
+       cd $inst_root/usr/share/info
+       rm -f dir
+       for f in *; do
+               install-info $f dir 2>/dev/null
+       done
 
        fi
 
@@ -240,13 +222,6 @@ elif [ "$install" = "1" ] ; then
        fi
        
        if [ "$simulate" != "1" ] ; then
-
-       # store info/dir file
-       rm -f /tmp/.hdw-get/dir*
-       if [ -f $inst_root/usr/share/info/dir ] ; then
-               [ "$verbose" ] && echo "backing up info/dir file"
-               cp $inst_root/usr/share/info/dir /tmp/.hdw-get/
-       fi
        
        # check/install package
        if [ -f $package ] ; then
@@ -277,29 +252,13 @@ elif [ "$install" = "1" ] ; then
                exit 1
        fi
 
-       # merging info/dir file
-       if [ "$pkg" != "00-dirtree" ] ; then
-       fl_file=`ls -A $inst_root/$FL_DIR/$pkg-[0-9]* | tail -1`
-       if [ -n "`grep usr/share/info/dir $fl_file`" ] ; then
-               echo "" >> /tmp/.hdw-get/dir
-               echo "$pkg info - added by hdw `date`" >> /tmp/.hdw-get/dir
-               for info_obj in `grep 'usr/share/info/.*.info' $fl_file | \
-                                       awk -F/ '{ print $4 }'`; do
-                       info_o=`echo $info_obj | sed 's/.info//'`
-                       if [ -z "`grep \($info_o\)\. /tmp/.hdw-get/dir`" ]
-                       then
-                               [ "$verbose" ] && \
-                                       echo "merging $info_o to info/dir"
-                               grep \($info_o\)\. \
-                                       $inst_root/usr/share/info/dir >> \
-                                       /tmp/.hdw-get/dir
-                       fi
-               done
-       fi
-       fi
-       [ -f /tmp/.hdw-get/dir ] && \
-               cp /tmp/.hdw-get/dir $inst_root/usr/share/info/dir
-       rm -f /tmp/.hdw-get/dir
+       # care about info/dir file
+       echo "recreating info dir file ..."
+       cd $inst_root/usr/share/info
+       rm -f dir
+       for f in *; do
+               install-info $f dir 2>/dev/null
+       done
 
        fi
 
@@ -317,6 +276,3 @@ elif [ "$d_install" = "1" ] ; then
        fi
 fi
 
-# remove temp directory
-rm -rf /tmp/.hdw-get
-
diff --git a/misc/sysfiles/etc/inittab b/misc/sysfiles/etc/inittab
deleted file mode 100644 (file)
index 2ec8ada..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-# hdw - linux  /etc/inittab    (copied from ROCK Linux)
-#
-# man 5 inittab
-
-# default 2
-id:2:initdefault:
-
-# boot script
-si::sysinit:/etc/init.d/boot | /sbin/btee t /var/log/init.msg
-
-# 0 = halt, 6 = reboot
-# 1-5 = multi-user
-# S = single user
-l0:0:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
-l1:1:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
-l2:2:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
-l3:3:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
-l4:4:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
-l5:5:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
-l6:6:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
-ls:S:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
-~~:S:wait:/sbin/sulogin
-
-# reboot when pressing ctrl + alt + del
-ca:12345:ctrlaltdel:/sbin/shutdown -r now
-
-#  <id>:<runlevels>:<action>:<process>
-1:12345:respawn:/sbin/agetty -L -i -I '\012\015\012Maintenance Console:\012' 38400 vc/1 linux
-2:12345:respawn:/sbin/agetty -f /etc/issue 38400 vc/2 linux
-3:12345:respawn:/sbin/agetty -f /etc/issue 38400 vc/3 linux
-4:12345:respawn:/sbin/agetty -f /etc/issue 38400 vc/4 linux
-5:12345:respawn:/sbin/agetty -f /etc/issue 38400 vc/5 linux
-6:12345:respawn:/sbin/agetty -f /etc/issue 38400 vc/6 linux
diff --git a/misc/sysfiles/etc/syslog.conf b/misc/sysfiles/etc/syslog.conf
deleted file mode 100644 (file)
index 736bc2f..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# hdw - linux /etc/syslog.conf
-#
-# man 8 syslogd
-# man 8 syslog.conf
-#
-
-# we use special file for authentification stuff
-auth,authpriv.*                        -/var/log/auth.log
-
-# everything else to /var/log/sys.log
-*.*;auth,authpriv.none         -/var/log/sys.log
-
-# do more seperation
-kern.*                         -/var/log/kern.log
-mail.*                         -/var/log/mail.log
-user.*                         -/var/log/user.log
-# every warning
-*.warning                       -/var/log/warn.log
-
-# and we still want messages file :)
-*.info                         -/var/log/messages
-
-# warn the users
-*.emerg                                *
-
index ce3dcc2..1f94d8a 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 1.8.5
+# [V] 1.9.5
 # [S] 2-11
-# [D] automake-1.8.5.tar.bz2 ftp://ftp.gnu.org/pub/gnu/automake/
+# [D] automake-1.9.5.tar.bz2 ftp://ftp.gnu.org/pub/gnu/automake/
 
 extra_ver="`echo $ver | awk -F. '{ print $1 "." $2 }'`"
 
diff --git a/packages/base/bash/avoid_keypad_sigsev.patch b/packages/base/bash/avoid_keypad_sigsev.patch
deleted file mode 100644 (file)
index 60337f8..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release: 2.05b
-Patch-ID: bash205b-001
-
-Bug-Reported-by:    taviso@sdf.lonestar.org
-Bug-Reference-ID:   <200208021107.g72B723d021352@darkstar.example.net>
-Bug-Reference-URL:  http://mail.gnu.org/pipermail/bug-bash/2002-August/004980.html
-
-Bug-Description:
-
-Bash goes into an infinite loop and eventually crashes with a SIGSEGV
-when some keys on the numeric keypad are pressed, possibly in combination
-with the shift key.
-
-Patch:
-
-*** ./lib/readline/bind.c      Thu Jan 24 11:15:52 2002
---- ./lib/readline/bind.c      Wed Jul 31 09:11:18 2002
-***************
-*** 312,316 ****
-            and the function bound  to `a' to be executed when the user
-            types `abx', leaving `bx' in the input queue. */
-!        if (k.function /* && k.type == ISFUNC */)
-           {
-             map[ANYOTHERKEY] = k;
---- 312,316 ----
-            and the function bound  to `a' to be executed when the user
-            types `abx', leaving `bx' in the input queue. */
-!        if (k.function && ((k.type == ISFUNC && k.function != rl_do_lowercase_version) || k.type == ISMACR))
-           {
-             map[ANYOTHERKEY] = k;
diff --git a/packages/base/bash/avoid_wcontinued.patch b/packages/base/bash/avoid_wcontinued.patch
new file mode 100644 (file)
index 0000000..cd85f47
--- /dev/null
@@ -0,0 +1,27 @@
+diff -Naur bash-3.0.orig/jobs.c bash-3.0/jobs.c
+--- ./jobs.c   2004-10-12 08:50:11.643481280 +0000
++++ ./jobs.c   2004-10-12 08:51:35.110792320 +0000
+@@ -2476,6 +2476,7 @@
+   PROCESS *child;
+   pid_t pid;
+   int call_set_current, last_stopped_job, job, children_exited, waitpid_flags;
++  static int wcontinued_not_supported = 0;
+   call_set_current = children_exited = 0;
+   last_stopped_job = NO_JOB;
+@@ -2489,7 +2490,15 @@
+                       : 0;
+       if (sigchld || block == 0)
+       waitpid_flags |= WNOHANG;
++    retry:
++      if (wcontinued_not_supported)
++      waitpid_flags &= ~WCONTINUED;
+       pid = WAITPID (-1, &status, waitpid_flags);
++      if (pid == -1 && errno == EINVAL)
++      {
++        wcontinued_not_supported = 1;
++        goto retry;
++      }
+       /* The check for WNOHANG is to make sure we decrement sigchld only
+        if it was non-zero before we called waitpid. */
index 813e120..57ce9ad 100644 (file)
@@ -2,10 +2,10 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 2.05b
+# [V] 3.0
 # [S] 1-7 2-11
-# [D] bash-2.05b.tar.gz ftp://ftp.gnu.org/pub/gnu/bash/
-# [D] bash-doc-2.05b.tar.gz ftp://ftp.gnu.org/pub/gnu/bash/
+# [D] bash-3.0.tar.gz ftp://ftp.gnu.org/pub/gnu/bash/
+# [D] bash-doc-3.0.tar.gz ftp://ftp.gnu.org/pub/gnu/bash/
 
 confopt="$confopt --without-bash-malloc"
 
diff --git a/packages/base/bash/no_space_append.patch b/packages/base/bash/no_space_append.patch
deleted file mode 100644 (file)
index be540e7..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release: 2.05b
-Patch-ID: bash205b-003
-
-Bug-Reported-by:   jan.q.bruun-andersen@posten.se
-Bug-Reference-ID:  <BE156C6450189B4ABAF7381F0AD4724A0165674F@002exmbs002.ad.posten.se>
-Bug-Reference-URL: http://mail.gnu.org/pipermail/bug-bash/2002-July/004789.html
-
-Bug-Description:
-
-In certain cases, Bash appends a space instead of a slash to a directory
-name relative to the current directory when performing command name
-completion.  This affects partial completion of intermediate directory
-names.
-
-Patch:
-
-*** ./bashline.c       Tue May  7 15:52:42 2002
---- ./bashline.c       Sat Aug  3 11:40:16 2002
-***************
-*** 1045,1049 ****
---- 1045,1052 ----
-        else
-       {
-+ #define CMD_IS_DIR(x)        (absolute_pathname(x) == 0 && *(x) != '~' && test_for_directory (x))
-+ 
-         matches = rl_completion_matches (text, command_word_completion_function);
-+ 
-         /* If we are attempting command completion and nothing matches, we
-            do not want readline to perform filename completion for us.  We
-***************
-*** 1053,1057 ****
-         if (matches == (char **)NULL)
-           rl_ignore_some_completions_function = bash_ignore_filenames;
-!        else if (matches[1] == 0 && *matches[0] != '/')
-           /* Turn off rl_filename_completion_desired so readline doesn't
-              append a slash if there is a directory with the same name
---- 1056,1060 ----
-         if (matches == (char **)NULL)
-           rl_ignore_some_completions_function = bash_ignore_filenames;
-!        else if (matches[1] == 0 && CMD_IS_DIR(matches[0]))
-           /* Turn off rl_filename_completion_desired so readline doesn't
-              append a slash if there is a directory with the same name
-***************
-*** 1062,1066 ****
-              conflict. */
-           rl_filename_completion_desired = 0;
-!        else if (matches[0] && matches[1] && STREQ (matches[0], matches[1]) && *matches[0] != '/')
-           /* There are multiple instances of the same match (duplicate
-              completions haven't yet been removed).  In this case, all of
---- 1065,1069 ----
-              conflict. */
-           rl_filename_completion_desired = 0;
-!        else if (matches[0] && matches[1] && STREQ (matches[0], matches[1]) && CMD_IS_DIR (matches[0]))
-           /* There are multiple instances of the same match (duplicate
-              completions haven't yet been removed).  In this case, all of
diff --git a/packages/base/bash/official_fixes.patch b/packages/base/bash/official_fixes.patch
new file mode 100644 (file)
index 0000000..9f314ee
--- /dev/null
@@ -0,0 +1,703 @@
+diff -Naur bash-3.0.orig/array.c bash-3.0/array.c
+--- bash-3.0.orig/array.c      2004-05-06 12:24:13.000000000 +0000
++++ bash-3.0/array.c   2005-01-08 05:40:02.059798512 +0000
+@@ -451,7 +451,7 @@
+                        */
+                       array_dispose_element(new);
+                       free(element_value(ae));
+-                      ae->value = savestring(v);
++                      ae->value = v ? savestring(v) : (char *)NULL;
+                       return(0);
+               } else if (element_index(ae) > i) {
+                       ADD_BEFORE(ae, new);
+diff -Naur bash-3.0.orig/arrayfunc.c bash-3.0/arrayfunc.c
+--- bash-3.0.orig/arrayfunc.c  2003-12-19 05:03:09.000000000 +0000
++++ bash-3.0/arrayfunc.c       2005-01-08 05:40:01.679856272 +0000
+@@ -611,7 +611,7 @@
+   var = find_variable (t);
+   free (t);
+-  return var;
++  return (var == 0 || invisible_p (var)) ? (SHELL_VAR *)0 : var;
+ }
+ /* Return a string containing the elements in the array and subscript
+diff -Naur bash-3.0.orig/bashline.c bash-3.0/bashline.c
+--- bash-3.0.orig/bashline.c   2004-07-06 03:22:12.000000000 +0000
++++ bash-3.0/bashline.c        2005-01-08 05:40:42.016724136 +0000
+@@ -100,6 +100,7 @@
+ #endif
+ /* Helper functions for Readline. */
++static int bash_directory_expansion __P((char **));
+ static int bash_directory_completion_hook __P((char **));
+ static int filename_completion_ignore __P((char **));
+ static int bash_push_line __P((void));
+@@ -292,7 +293,7 @@
+       /* See if we have anything to do. */
+       at = strchr (rl_completer_word_break_characters, '@');
+       if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0))
+-        return;
++        return old_value;
+       /* We have something to do.  Do it. */
+       nval = (char *)xmalloc (strlen (rl_completer_word_break_characters) + 1 + on_or_off);
+@@ -1406,10 +1407,19 @@
+            filename. */
+         if (*hint_text == '~')
+           {
+-            int l, tl, vl;
++            int l, tl, vl, dl;
++            char *rd;
+             vl = strlen (val);
+             tl = strlen (hint_text);
++#if 0
+             l = vl - hint_len;        /* # of chars added */
++#else
++            rd = savestring (filename_hint);
++            bash_directory_expansion (&rd);
++            dl = strlen (rd);
++            l = vl - dl;              /* # of chars added */
++            free (rd);
++#endif
+             temp = (char *)xmalloc (l + 2 + tl);
+             strcpy (temp, hint_text);
+             strcpy (temp + tl, val + vl - l);
+@@ -2187,6 +2197,27 @@
+   return 0;
+ }
++/* Simulate the expansions that will be performed by
++   rl_filename_completion_function.  This must be called with the address of
++   a pointer to malloc'd memory. */
++static int
++bash_directory_expansion (dirname)
++     char **dirname;
++{
++  char *d;
++
++  d = savestring (*dirname);
++
++  if (rl_directory_rewrite_hook)
++    (*rl_directory_rewrite_hook) (&d);
++
++  if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d))
++    {
++      free (*dirname);
++      *dirname = d;
++    }
++}
++  
+ /* Handle symbolic link references and other directory name
+    expansions while hacking completion. */
+ static int
+@@ -2513,7 +2544,7 @@
+   static char **matches = (char **)NULL;
+   static int ind;
+   int glen;
+-  char *ret;
++  char *ret, *ttext;
+   if (state == 0)
+     {
+@@ -2523,17 +2554,22 @@
+       FREE (globorig);
+       FREE (globtext);
++      ttext = bash_tilde_expand (text, 0);
++
+       if (rl_explicit_arg)
+       {
+-        globorig = savestring (text);
+-        glen = strlen (text);
++        globorig = savestring (ttext);
++        glen = strlen (ttext);
+         globtext = (char *)xmalloc (glen + 2);
+-        strcpy (globtext, text);
++        strcpy (globtext, ttext);
+         globtext[glen] = '*';
+         globtext[glen+1] = '\0';
+       }
+       else
+-        globtext = globorig = savestring (text);
++        globtext = globorig = savestring (ttext);
++
++      if (ttext != text)
++      free (ttext);
+       matches = shell_glob_filename (globtext);
+       if (GLOB_FAILED (matches))
+diff -Naur bash-3.0.orig/braces.c bash-3.0/braces.c
+--- bash-3.0.orig/braces.c     2003-12-04 16:09:52.000000000 +0000
++++ bash-3.0/braces.c  2005-01-08 05:40:50.317462232 +0000
+@@ -340,8 +340,8 @@
+   
+   if (lhs_t == ST_CHAR)
+     {
+-      lhs_v = lhs[0];
+-      rhs_v = rhs[0];
++      lhs_v = (unsigned char)lhs[0];
++      rhs_v = (unsigned char)rhs[0];
+     }
+   else
+     {
+@@ -402,6 +402,8 @@
+       {
+         pass_next = 1;
+         i++;
++        if (quoted == 0)
++          level++;
+         continue;
+       }
+ #endif
+diff -Naur bash-3.0.orig/builtins/trap.def bash-3.0/builtins/trap.def
+--- bash-3.0.orig/builtins/trap.def    2004-05-28 02:26:19.000000000 +0000
++++ bash-3.0/builtins/trap.def 2005-01-08 05:40:04.443436144 +0000
+@@ -23,7 +23,7 @@
+ $BUILTIN trap
+ $FUNCTION trap_builtin
+-$SHORT_DOC trap [-lp] [[arg] signal_spec ...]
++$SHORT_DOC trap [-lp] [arg signal_spec ...]
+ The command ARG is to be read and executed when the shell receives
+ signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC
+ is supplied) or `-', each specified signal is reset to its original
+@@ -87,7 +87,7 @@
+ trap_builtin (list)
+      WORD_LIST *list;
+ {
+-  int list_signal_names, display, result, opt;
++  int list_signal_names, display, result, opt, first_signal;
+   list_signal_names = display = 0;
+   result = EXECUTION_SUCCESS;
+@@ -118,14 +118,19 @@
+   else
+     {
+       char *first_arg;
+-      int operation, sig;
++      int operation, sig, first_signal;
+       operation = SET;
+       first_arg = list->word->word;
++      first_signal = first_arg && *first_arg && all_digits (first_arg) && signal_object_p (first_arg, opt);
++
++      /* Backwards compatibility */
++      if (first_signal)
++      operation = REVERT;
+       /* When in posix mode, the historical behavior of looking for a
+        missing first argument is disabled.  To revert to the original
+        signal handling disposition, use `-' as the first argument. */
+-      if (posixly_correct == 0 && first_arg && *first_arg &&
++      else if (posixly_correct == 0 && first_arg && *first_arg &&
+               (*first_arg != '-' || first_arg[1]) &&
+               signal_object_p (first_arg, opt) && list->next == 0)
+       operation = REVERT;
+diff -Naur bash-3.0.orig/doc/bashref.texi bash-3.0/doc/bashref.texi
+--- bash-3.0.orig/doc/bashref.texi     2004-06-26 18:26:07.000000000 +0000
++++ bash-3.0/doc/bashref.texi  2005-01-08 05:40:04.494428392 +0000
+@@ -5953,7 +5953,8 @@
+ @item
+ The @code{trap} builtin doesn't check the first argument for a possible
+ signal specification and revert the signal handling to the original
+-disposition if it is.  If users want to reset the handler for a given
++disposition if it is, unless that argument consists solely of digits and
++is a valid signal number.  If users want to reset the handler for a given
+ signal to the original disposition, they should use @samp{-} as the
+ first argument.
+diff -Naur bash-3.0.orig/general.c bash-3.0/general.c
+--- bash-3.0.orig/general.c    2004-04-15 03:20:13.000000000 +0000
++++ bash-3.0/general.c 2005-01-08 05:40:51.913219640 +0000
+@@ -267,7 +267,7 @@
+   c = string[indx = 0];
+ #if defined (ARRAY_VARS)
+-  if ((legal_variable_starter (c) == 0) && (flags && c != '[')) /* ] */
++  if ((legal_variable_starter (c) == 0) && (flags == 0 || c != '[')) /* ] */
+ #else
+   if (legal_variable_starter (c) == 0)
+ #endif
+diff -Naur bash-3.0.orig/include/shmbutil.h bash-3.0/include/shmbutil.h
+--- bash-3.0.orig/include/shmbutil.h   2004-04-19 13:59:42.000000000 +0000
++++ bash-3.0/include/shmbutil.h        2005-01-08 05:40:05.724241432 +0000
+@@ -31,6 +31,8 @@
+ extern size_t xmbsrtowcs __P((wchar_t *, const char **, size_t, mbstate_t *));
+ extern size_t xdupmbstowcs __P((wchar_t **, char ***, const char *));
++extern size_t mbstrlen __P((const char *));
++
+ extern char *xstrchr __P((const char *, int));
+ #ifndef MB_INVALIDCH
+@@ -38,6 +40,9 @@
+ #define MB_NULLWCH(x)         ((x) == 0)
+ #endif
++#define MBSLEN(s)     (((s) && (s)[0]) ? ((s)[1] ? mbstrlen (s) : 1) : 0)
++#define MB_STRLEN(s)  ((MB_CUR_MAX > 1) ? MBSLEN (s) : STRLEN (s))
++
+ #else /* !HANDLE_MULTIBYTE */
+ #undef MB_LEN_MAX
+@@ -54,6 +59,8 @@
+ #define MB_NULLWCH(x)         (0)
+ #endif
++#define MB_STRLEN(s)          (STRLEN(s))
++
+ #endif /* !HANDLE_MULTIBYTE */
+ /* Declare and initialize a multibyte state.  Call must be terminated
+diff -Naur bash-3.0.orig/jobs.c bash-3.0/jobs.c
+--- bash-3.0.orig/jobs.c       2004-04-23 20:28:25.000000000 +0000
++++ bash-3.0/jobs.c    2005-01-08 05:40:40.567944384 +0000
+@@ -1778,8 +1778,13 @@
+   if (pipefail_opt)
+     {
+       fail = 0;
+-      for (p = jobs[job]->pipe; p->next != jobs[job]->pipe; p = p->next)
+-        if (p->status != EXECUTION_SUCCESS) fail = p->status;
++      p = jobs[job]->pipe;
++      do
++      {
++        if (p->status != EXECUTION_SUCCESS) fail = p->status;
++        p = p->next;
++      }
++      while (p != jobs[job]->pipe);
+       return fail;
+     }
+diff -Naur bash-3.0.orig/lib/readline/display.c bash-3.0/lib/readline/display.c
+--- bash-3.0.orig/lib/readline/display.c       2004-05-28 02:57:51.000000000 +0000
++++ bash-3.0/lib/readline/display.c    2005-01-08 05:40:08.574808080 +0000
+@@ -201,7 +201,7 @@
+      int *lp, *lip, *niflp, *vlp;
+ {
+   char *r, *ret, *p;
+-  int l, rl, last, ignoring, ninvis, invfl, ind, pind, physchars;
++  int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars;
+   /* Short-circuit if we can. */
+   if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (pmt, RL_PROMPT_START_IGNORE) == 0)
+@@ -222,6 +222,7 @@
+   r = ret = (char *)xmalloc (l + 1);
+   invfl = 0;  /* invisible chars in first line of prompt */
++  invflset = 0;       /* we only want to set invfl once */
+   for (rl = ignoring = last = ninvis = physchars = 0, p = pmt; p && *p; p++)
+     {
+@@ -249,7 +250,10 @@
+             while (l--)
+               *r++ = *p++;
+             if (!ignoring)
+-              rl += ind - pind;
++              {
++                rl += ind - pind;
++                physchars += _rl_col_width (pmt, pind, ind);
++              }
+             else
+               ninvis += ind - pind;
+             p--;                      /* compensate for later increment */
+@@ -259,16 +263,19 @@
+           {
+             *r++ = *p;
+             if (!ignoring)
+-              rl++;                   /* visible length byte counter */
++              {
++                rl++;                 /* visible length byte counter */
++                physchars++;
++              }
+             else
+               ninvis++;               /* invisible chars byte counter */
+           }
+-        if (rl >= _rl_screenwidth)
+-          invfl = ninvis;
+-
+-        if (ignoring == 0)
+-          physchars++;
++        if (invflset == 0 && rl >= _rl_screenwidth)
++          {
++            invfl = ninvis;
++            invflset = 1;
++          }
+       }
+     }
+@@ -351,14 +358,14 @@
+       local_prompt = expand_prompt (p, &prompt_visible_length,
+                                      &prompt_last_invisible,
+                                      (int *)NULL,
+-                                     (int *)NULL);
++                                     &prompt_physical_chars);
+       c = *t; *t = '\0';
+       /* The portion of the prompt string up to and including the
+        final newline is now null-terminated. */
+       local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
+                                                  (int *)NULL,
+                                                  &prompt_invis_chars_first_line,
+-                                                 &prompt_physical_chars);
++                                                 (int *)NULL);
+       *t = c;
+       return (prompt_prefix_length);
+     }
+@@ -417,7 +424,7 @@
+   register int in, out, c, linenum, cursor_linenum;
+   register char *line;
+   int c_pos, inv_botlin, lb_botlin, lb_linenum;
+-  int newlines, lpos, temp, modmark;
++  int newlines, lpos, temp, modmark, n0, num;
+   char *prompt_this_line;
+ #if defined (HANDLE_MULTIBYTE)
+   wchar_t wc;
+@@ -573,6 +580,7 @@
+ #if defined (HANDLE_MULTIBYTE)
+   memset (_rl_wrapped_line, 0, vis_lbsize);
++  num = 0;
+ #endif
+   /* prompt_invis_chars_first_line is the number of invisible characters in
+@@ -591,13 +599,32 @@
+          probably too much work for the benefit gained.  How many people have
+          prompts that exceed two physical lines?
+          Additional logic fix from Edward Catmur <ed@catmur.co.uk> */
++#if defined (HANDLE_MULTIBYTE)
++      n0 = num;
++      temp = local_prompt ? strlen (local_prompt) : 0;
++      while (num < temp)
++      {
++        if (_rl_col_width  (local_prompt, n0, num) > _rl_screenwidth)
++          {
++            num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY);
++            break;
++          }
++        num++;
++      }
++      temp = num +
++#else
+       temp = ((newlines + 1) * _rl_screenwidth) +
++#endif /* !HANDLE_MULTIBYTE */
+              ((local_prompt_prefix == 0) ? ((newlines == 0) ? prompt_invis_chars_first_line
+                                                           : ((newlines == 1) ? wrap_offset : 0))
+                                        : ((newlines == 0) ? wrap_offset :0));
+              
+       inv_lbreaks[++newlines] = temp;
++#if defined (HANDLE_MULTIBYTE)
++      lpos -= _rl_col_width (local_prompt, n0, num);
++#else
+       lpos -= _rl_screenwidth;
++#endif
+     }
+   prompt_last_screen_line = newlines;
+diff -Naur bash-3.0.orig/lib/readline/mbutil.c bash-3.0/lib/readline/mbutil.c
+--- bash-3.0.orig/lib/readline/mbutil.c        2004-01-14 14:44:52.000000000 +0000
++++ bash-3.0/lib/readline/mbutil.c     2005-01-08 05:40:39.252144416 +0000
+@@ -126,11 +126,11 @@
+   if (find_non_zero)
+     {
+       tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
+-      while (wcwidth (wc) == 0)
++      while (tmp > 0 && wcwidth (wc) == 0)
+       {
+         point += tmp;
+         tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
+-        if (tmp == (size_t)(0) || tmp == (size_t)(-1) || tmp == (size_t)(-2))
++        if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp))
+           break;
+       }
+     }
+diff -Naur bash-3.0.orig/lib/readline/misc.c bash-3.0/lib/readline/misc.c
+--- bash-3.0.orig/lib/readline/misc.c  2004-07-07 12:56:32.000000000 +0000
++++ bash-3.0/lib/readline/misc.c       2005-01-08 05:40:07.040041400 +0000
+@@ -276,12 +276,6 @@
+       _rl_saved_line_for_history->line = savestring (rl_line_buffer);
+       _rl_saved_line_for_history->data = (char *)rl_undo_list;
+     }
+-  else if (STREQ (rl_line_buffer, _rl_saved_line_for_history->line) == 0)
+-    {
+-      free (_rl_saved_line_for_history->line);
+-      _rl_saved_line_for_history->line = savestring (rl_line_buffer);
+-      _rl_saved_line_for_history->data = (char *)rl_undo_list;        /* XXX possible memleak */
+-    }
+   return 0;
+ }
+diff -Naur bash-3.0.orig/lib/readline/vi_mode.c bash-3.0/lib/readline/vi_mode.c
+--- bash-3.0.orig/lib/readline/vi_mode.c       2004-07-13 18:08:27.000000000 +0000
++++ bash-3.0/lib/readline/vi_mode.c    2005-01-08 05:40:25.349257976 +0000
+@@ -272,10 +272,12 @@
+   switch (key)
+     {
+     case '?':
++      _rl_free_saved_history_line ();
+       rl_noninc_forward_search (count, key);
+       break;
+     case '/':
++      _rl_free_saved_history_line ();
+       rl_noninc_reverse_search (count, key);
+       break;
+@@ -690,7 +692,7 @@
+ {
+   wchar_t wc;
+   char mb[MB_LEN_MAX+1];
+-  int mblen;
++  int mblen, p;
+   mbstate_t ps;
+   memset (&ps, 0, sizeof (mbstate_t));
+@@ -713,11 +715,14 @@
+       /* Vi is kind of strange here. */
+       if (wc)
+       {
++        p = rl_point;
+         mblen = wcrtomb (mb, wc, &ps);
+         if (mblen >= 0)
+           mb[mblen] = '\0';
+         rl_begin_undo_group ();
+-        rl_delete (1, 0);
++        rl_vi_delete (1, 0);
++        if (rl_point < p)     /* Did we retreat at EOL? */
++          rl_point++; /* XXX - should we advance more than 1 for mbchar? */
+         rl_insert_text (mb);
+         rl_end_undo_group ();
+         rl_vi_check ();
+@@ -1310,12 +1315,16 @@
+       rl_vi_delete (1, c);
+ #if defined (HANDLE_MULTIBYTE)
+       if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+-      while (_rl_insert_char (1, c))
+-        {
+-          RL_SETSTATE (RL_STATE_MOREINPUT);
+-          c = rl_read_key ();
+-          RL_UNSETSTATE (RL_STATE_MOREINPUT);
+-        }
++      {
++        if (rl_point < p)             /* Did we retreat at EOL? */
++          rl_point++;
++        while (_rl_insert_char (1, c))
++          {
++            RL_SETSTATE (RL_STATE_MOREINPUT);
++            c = rl_read_key ();
++            RL_UNSETSTATE (RL_STATE_MOREINPUT);
++          }
++      }
+       else
+ #endif
+       {
+diff -Naur bash-3.0.orig/patchlevel.h bash-3.0/patchlevel.h
+--- bash-3.0.orig/patchlevel.h 2001-08-22 12:05:39.000000000 +0000
++++ bash-3.0/patchlevel.h      2005-01-08 05:40:53.584965496 +0000
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 0
++#define PATCHLEVEL 16
+ #endif /* _PATCHLEVEL_H_ */
+diff -Naur bash-3.0.orig/pcomplete.c bash-3.0/pcomplete.c
+--- bash-3.0.orig/pcomplete.c  2004-01-08 15:36:17.000000000 +0000
++++ bash-3.0/pcomplete.c       2005-01-08 05:40:02.049800032 +0000
+@@ -863,6 +863,8 @@
+   if (array_p (v) == 0)
+     v = convert_var_to_array (v);
+   v = assign_array_var_from_word_list (v, lwords);
++
++  VUNSETATTR (v, att_invisible);
+   return v;
+ }
+ #endif /* ARRAY_VARS */
+@@ -1022,6 +1024,8 @@
+   if (array_p (v) == 0)
+     v = convert_var_to_array (v);
++  VUNSETATTR (v, att_invisible);
++
+   a = array_cell (v);
+   if (a == 0 || array_empty (a))
+     sl = (STRINGLIST *)NULL;
+diff -Naur bash-3.0.orig/subst.c bash-3.0/subst.c
+--- bash-3.0.orig/subst.c      2004-07-04 17:56:13.000000000 +0000
++++ bash-3.0/subst.c   2005-01-08 05:40:53.574967016 +0000
+@@ -4691,6 +4691,26 @@
+         legal_identifier (name + 1));                         /* ${#PS1} */
+ }
++#if defined (HANDLE_MULTIBYTE)
++size_t
++mbstrlen (s)
++     const char *s;
++{
++  size_t clen, nc;
++  mbstate_t mbs;
++
++  nc = 0;
++  memset (&mbs, 0, sizeof (mbs));
++  while ((clen = mbrlen(s, MB_CUR_MAX, &mbs)) != 0 && (MB_INVALIDCH(clen) == 0))
++    {
++      s += clen;
++      nc++;
++    }
++  return nc;
++}
++#endif
++      
++
+ /* Handle the parameter brace expansion that requires us to return the
+    length of a parameter. */
+ static intmax_t
+@@ -4746,14 +4766,14 @@
+       if (legal_number (name + 1, &arg_index))                /* ${#1} */
+       {
+         t = get_dollar_var_value (arg_index);
+-        number = STRLEN (t);
++        number = MB_STRLEN (t);
+         FREE (t);
+       }
+ #if defined (ARRAY_VARS)
+-      else if ((var = find_variable (name + 1)) && array_p (var))
++      else if ((var = find_variable (name + 1)) && (invisible_p (var) == 0) && array_p (var))
+       {
+         t = array_reference (array_cell (var), 0);
+-        number = STRLEN (t);
++        number = MB_STRLEN (t);
+       }
+ #endif
+       else                            /* ${#PS1} */
+@@ -4766,7 +4786,7 @@
+         if (list)
+           dispose_words (list);
+-        number = STRLEN (t);
++        number = MB_STRLEN (t);
+         FREE (t);
+       }
+     }
+@@ -4871,7 +4891,7 @@
+     {
+     case VT_VARIABLE:
+     case VT_ARRAYMEMBER:
+-      len = strlen (value);
++      len = MB_STRLEN (value);
+       break;
+     case VT_POSPARMS:
+       len = number_of_args () + 1;
+@@ -4879,8 +4899,9 @@
+ #if defined (ARRAY_VARS)
+     case VT_ARRAYVAR:
+       a = (ARRAY *)value;
+-      /* For arrays, the first value deals with array indices. */
+-      len = array_max_index (a);      /* arrays index from 0 to n - 1 */
++      /* For arrays, the first value deals with array indices.  Negative
++       offsets count from one past the array's maximum index. */
++      len = array_max_index (a) + (*e1p < 0); /* arrays index from 0 to n - 1 */
+       break;
+ #endif
+     }
+@@ -4891,7 +4912,7 @@
+   if (*e1p < 0)               /* negative offsets count from end */
+     *e1p += len;
+-  if (*e1p >= len || *e1p < 0)
++  if (*e1p > len || *e1p < 0)
+     return (-1);
+ #if defined (ARRAY_VARS)
+@@ -4982,7 +5003,7 @@
+       else
+       return -1;
+     }
+-  else if ((v = find_variable (varname)) && array_p (v))
++  else if ((v = find_variable (varname)) && (invisible_p (v) == 0) && array_p (v))
+     {
+       vtype = VT_ARRAYMEMBER;
+       *varp = v;
+diff -Naur bash-3.0.orig/tests/array.right bash-3.0/tests/array.right
+--- bash-3.0.orig/tests/array.right    2003-10-05 03:25:10.000000000 +0000
++++ bash-3.0/tests/array.right 2005-01-08 05:40:53.582965800 +0000
+@@ -170,8 +170,8 @@
+ three five seven
+ positive offset - expect five seven
+ five seven
+-negative offset - expect five seven
+-five seven
++negative offset to unset element - expect seven
++seven
+ positive offset 2 - expect seven
+ seven
+ negative offset 2 - expect seven
+diff -Naur bash-3.0.orig/tests/array.tests bash-3.0/tests/array.tests
+--- bash-3.0.orig/tests/array.tests    2003-10-05 03:25:00.000000000 +0000
++++ bash-3.0/tests/array.tests 2005-01-08 05:40:53.580966104 +0000
+@@ -322,7 +322,7 @@
+ echo positive offset - expect five seven
+ echo ${av[@]:5:2}
+-echo negative offset - expect five seven
++echo negative offset to unset element - expect seven
+ echo ${av[@]: -2:2}
+ echo positive offset 2 - expect seven
+diff -Naur bash-3.0.orig/tests/dbg-support.tests bash-3.0/tests/dbg-support.tests
+--- bash-3.0.orig/tests/dbg-support.tests      2003-03-25 20:33:03.000000000 +0000
++++ bash-3.0/tests/dbg-support.tests   2005-01-08 05:40:02.065797600 +0000
+@@ -62,8 +62,8 @@
+ trap 'print_debug_trap $LINENO' DEBUG
+ trap 'print_return_trap $LINENO' RETURN
+-# Funcname is now an array. Vanilla Bash 2.05 doesn't have FUNCNAME array.
+-echo "FUNCNAME" ${FUNCNAME[0]}
++# Funcname is now an array, but you still can't see it outside a function
++echo "FUNCNAME" ${FUNCNAME[0]:-main}
+ # We should trace into the below. 
+ # Start easy with a simple function.
+diff -Naur bash-3.0.orig/tests/errors.right bash-3.0/tests/errors.right
+--- bash-3.0.orig/tests/errors.right   2004-05-28 02:26:03.000000000 +0000
++++ bash-3.0/tests/errors.right        2005-01-08 05:40:04.502427176 +0000
+@@ -85,7 +85,7 @@
+ ./errors.tests: line 213: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0")
+ ./errors.tests: line 216: trap: NOSIG: invalid signal specification
+ ./errors.tests: line 219: trap: -s: invalid option
+-trap: usage: trap [-lp] [[arg] signal_spec ...]
++trap: usage: trap [-lp] [arg signal_spec ...]
+ ./errors.tests: line 225: return: can only `return' from a function or sourced script
+ ./errors.tests: line 229: break: 0: loop count out of range
+ ./errors.tests: line 233: continue: 0: loop count out of range
+diff -Naur bash-3.0.orig/variables.c bash-3.0/variables.c
+--- bash-3.0.orig/variables.c  2004-07-04 17:57:26.000000000 +0000
++++ bash-3.0/variables.c       2005-01-08 05:40:01.842831496 +0000
+@@ -1419,11 +1419,11 @@
+   v = init_dynamic_array_var ("GROUPS", get_groupset, null_array_assign, att_noassign);
+ #  if defined (DEBUGGER)
+-  v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, (att_invisible|att_noassign));
+-  v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, (att_invisible|att_noassign));
++  v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign);
++  v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign);
+ #  endif /* DEBUGGER */
+-  v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, (att_invisible|att_noassign));
+-  v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, (att_invisible|att_noassign));
++  v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign);
++  v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign);
+ #endif
+   v = init_funcname_var ();
+@@ -1599,7 +1599,10 @@
+   /* local foo; local foo;  is a no-op. */
+   old_var = find_variable (name);
+   if (old_var && local_p (old_var) && old_var->context == variable_context)
+-    return (old_var);
++    {
++      VUNSETATTR (old_var, att_invisible);
++      return (old_var);
++    }
+   was_tmpvar = old_var && tempvar_p (old_var);
+   if (was_tmpvar)
diff --git a/packages/base/bash/variable_expansion.patch b/packages/base/bash/variable_expansion.patch
deleted file mode 100644 (file)
index 1487a89..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release: 2.05b
-Patch-ID: bash205b-004
-
-Bug-Reported-by:   c.f.a.johnson@rogers.com
-Bug-Reference-ID:  <aji8sb$1aa9bi$2@ID-136730.news.dfncis.de>
-Bug-Reference-URL: http://mail.gnu.org/pipermail/bug-bash/2002-August/005074.html
-
-Bug-Description:
-
-A bug in the bash variable expansion code causes leading blanks in a
-variable's value to be ignored when computing its length.
-
-Patch:
-
-*** ./subst.c  Mon Jun 24 07:59:45 2002
---- ./subst.c  Sat Aug 17 17:28:46 2002
-***************
-*** 1639,1647 ****
-  /* This performs word splitting and quoted null character removal on
-     STRING. */
-! #if 0
-! #define issep(c)     ((separators)[1] ? (member ((c), separators)) : (c) == (separators)[0])
-! #else
-! #define issep(c)     ((separators)[1] ? isifs(c) : (c) == (separators)[0])
-! #endif
-  
-  WORD_LIST *
---- 1639,1646 ----
-  /* This performs word splitting and quoted null character removal on
-     STRING. */
-! #define issep(c) \
-!      (((separators)[0]) ? ((separators)[1] ? isifs(c) \
-!                                            : (c) == (separators)[0]) \
-!                         : 0)
-  
-  WORD_LIST *
-
-
diff --git a/packages/base/bash/vi_repeat.patch b/packages/base/bash/vi_repeat.patch
deleted file mode 100644 (file)
index 25abb06..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release: 2.05b
-Patch-ID: bash205b-002
-
-Bug-Reported-by:  rwhron@earthlink.net
-Bug-Reference-ID: <20020724000454.GA15210@rushmore> (bug-bash)
-Bug-Reference-URL: http://mail.gnu.org/pipermail/bug-bash/2002-July/004856.html
-
-Bug-Description:
-
-Repeating an edit in vi-mode with `.' does not work.
-
-Patch:
-
-*** ./lib/readline/readline.c  Wed Mar 13 17:10:46 2002
---- ./lib/readline/readline.c  Tue Jul 30 17:46:44 2002
-***************
-*** 685,688 ****
---- 685,689 ----
-  #if defined (VI_MODE)
-    if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
-+       key != ANYOTHERKEY &&
-        _rl_vi_textmod_command (key))
-      _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
-
index e2f72d9..b482bc7 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 4.2.52
+# [V] 4.3.28
 # [S] 2-7
-# [D] db-4.2.52.tar.gz http://sleepycat.com/update/snapshot/
+# [D] http://downloads.sleepycat.com/
 
 srcdir="db-$ver"
 make_conf="LIBSO_LIBS=-lpthread LIBXSO_LIBS=-lpthread"
@@ -14,5 +14,7 @@ build_main()  {
        cd build_unix
        ../dist/configure $confopt --enable-compat185 --enable-cxx &&
        make $make_conf &&
-       make $install_conf install
+       make $install_conf install &&
+       chown root.root $prefix/{bin/db_*,lib/libdb*,include/db*} &&
+       chown -R root.root $docdir
                }
index 4b5d4ac..18b67cc 100644 (file)
@@ -2,21 +2,6 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 1.875d
+# [V] 2.0
 # [S] 1-8 2-9
-# [D] bison-1.875d.tar.bz2 ftp://alpha.gnu.org/pub/gnu/bison/
-## [D] bison-1.50.tar.bz2 ftp://ftp.gnu.org/pub/gnu/bison/
-## [D] bison-1.875a.tar.bz2 ftp://ftp.tuniv.szczecin.pl/pub/Linux/alpha-gnu/bison/
-
-post_install() {
-       if [ ! -f $prefix/bin/yacc ] ; then
-               cat > $prefix/bin/yacc <<- EOF
-#!/bin/sh
-# use 'bison -y' as yacc ...
-
-exec $prefix/bin/bison -y "\$@"
-
-EOF
-               chmod 755 $prefix/bin/yacc
-       fi
-               }
+# [D] bison-2.0.tar.gz ftp://ftp.gnu.org/pub/gnu/bison/
index c971118..1179682 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 1.0.2
+# [V] 1.0.3
 # [S] 1-3 2-12
-# [D] bzip2-1.0.2.tar.gz ftp://sources.redhat.com/pub/bzip2/v102/
+# [D] bzip2-1.0.3.tar.gz ftp://sources.redhat.com/pub/bzip2/v102/
 
 e_ver=`echo $ver | awk -F. '{ print $1 "." $2 }'`
 
@@ -20,7 +20,6 @@ if [ "$hdw_status" = "2" ] ; then
                cp -a libbz2.so* $root/lib &&
                ln -svf ../../lib/libbz2.so.${e_ver} $root/usr/lib/libbz2.so &&
                rm $root/usr/bin/{bunzip2,bzcat,bzip2} &&
-               mv $root/usr/bin/{bzip2recover,bzless,bzmore} $root/bin &&
                ln -svf bzip2 $root/bin/bunzip2 &&
                ln -svf bzip2 $root/bin/bzcat
                        }
index 99a80cd..c568290 100644 (file)
@@ -2,6 +2,6 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 1.11.17
+# [V] 1.11.20
 # [S] 2-18
-# [D] cvs-1.11.17.tar.bz2 http://cougaar.org/frs/download.php/122/
+# [D] cvs-1.11.20.tar.bz2 https://ccvs.cvshome.org/files/documents/19/861/
index a565082..f047722 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 1.35
+# [V] 1.38
 # [S] 2-13
-# [D] e2fsprogs-1.35.tar.gz http://puzzle.dl.sourceforge.net/sourceforge/e2fsprogs/
+# [D] e2fsprogs-1.38.tar.gz http://mesh.dl.sourceforge.net/sourceforge/e2fsprogs/
 
 confopt="$confopt --with-root-prefix=\"$root\""
 confopt="$confopt --enable-elf-shlibs --disable-evms"
index ccbf18f..85fed3c 100644 (file)
@@ -2,6 +2,6 @@
 #
 # author: hackdaworld.dyndns.org
 #
-# [V] 4.09
+# [V] 4.13
 # [S] 2-11
-# [D] file-4.09.tar.gz ftp://ftp.astron.com/pub/file/
+# [D] file-4.13.tar.gz ftp://ftp.gw.com/mirrors/pub/unix/file/
index d7f89ef..c059429 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 4.1.20
+# [V] 4.2.23
 # [S] 1-4 2-7
-# [D] findutils-4.1.20.tar.gz ftp://alpha.gnu.org/gnu/findutils/
+# [D] findutils-4.2.23.tar.gz ftp://ftp.gnu.org/pub/gnu/findutils/
 
 if [ "$hdw_status" = "2" ] ; then
        confopt=${confopt//--local* /--localstatedir=$root/var/lib/locate }
index b563c3b..8ec1f52 100644 (file)
@@ -14,4 +14,6 @@ if [ "$hdw_status" = "2" ] ; then
        post_install()  {
                ln -sfv libfl.a $prefix/lib/libl.a
                        }
+       [ ! -f $prefix/bin/lex ] && cp $confdir/lex_wrapper $prefix/bin/lex
+       chmod 755 $prefix/bin/lex
 fi
index c40264e..3d2cf5b 100644 (file)
@@ -2,8 +2,8 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 3.1.3
+# [V] 3.1.4
 # [S] 1-1 2-7
-# [D] gawk-3.1.3.tar.bz2 ftp://ftp.gnu.org/pub/gnu/gawk/
+# [D] gawk-3.1.4.tar.bz2 ftp://ftp.gnu.org/pub/gnu/gawk/
 
 [ "$hdw_status" = "2" ] && confopt="$confopt --libexecdir=$root/usr/lib"
index e7e8e68..a9b283d 100644 (file)
@@ -2,6 +2,6 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 0.14.1
+# [V] 0.14.5
 # [S] 2-10
-# [D] gettext-0.14.1.tar.gz ftp://ftp.gnu.org/pub/gnu/gettext/
+# [D] gettext-0.14.5.tar.gz ftp://ftp.gnu.org/pub/gnu/gettext/
index eeeda07..b2ff7d5 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 2.5
+# [V] 2.5.1
 # [S] 1-5 2-13
-# [D] grep-2.5.tar.bz2 ftp://ftp.gnu.org/pub/gnu/grep/
+# [D] grep-2.5.1.tar.bz2 ftp://ftp.gnu.org/pub/gnu/grep/
 
 confopt="$confopt --with-included-regex"
 [ "$hdw_status" = "1" ] && confopt="$confopt --disable-perl-regexp"
index c6c72cd..1c963b0 100644 (file)
@@ -2,6 +2,6 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 1.5.6
+# [V] 1.5.18
 # [S] 2-11
-# [D] libtool-1.5.6.tar.gz ftp://ftp.gnu.org/pub/gnu/libtool/
+# [D] libtool-1.5.18.tar.gz ftp://ftp.gnu.org/pub/gnu/libtool/
index bb91ed0..a5552f5 100644 (file)
@@ -2,6 +2,6 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 1.4.1
+# [V] 1.4.3
 # [S] 1-7 2-8
-# [D] m4-1.4.1.tar.gz ftp://ftp.gnu.org/pub/gnu/m4/
+# [D] m4-1.4.3.tar.gz ftp://ftp.gnu.org/pub/gnu/m4/
index 46c745e..cc93740 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 1.67
+# [V] 2.05
 # [S] 2-2
-# [D] man-pages-1.67.tar.bz2 ftp://ftp.kernel.org/pub/linux/docs/manpages/
+# [D] man-pages-2.05.tar.bz2 ftp://ftp.kernel.org/pub/linux/docs/manpages/
 
 build_main()   {
        make install
index c4d86f6..202e8ac 100644 (file)
@@ -2,8 +2,16 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 1.5m2
+# [V] 1.5p
 # [S] 2-13
-# [D] man-1.5m2.tar.bz2 ftp://ftp.kernel.org/pub/linux/utils/man/
+# [D] man-1.5p.tar.bz2 ftp://ftp.kernel.org/pub/linux/utils/man/
 
 confopt="-confdir=$root/etc"
+
+pre_install()  {
+       sed "s%-is%&R%g" configure > tmp~
+       mv tmp~ configure
+       chmod 700 configure
+       sed "s%MANPATH./usr/man%#&%g" src/man.conf.in > tmp~
+       mv tmp~ src/man.conf.in
+               }
diff --git a/packages/base/man/man_80cols.patch b/packages/base/man/man_80cols.patch
deleted file mode 100644 (file)
index a4c8713..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -Naur man-1.5l.orig/src/man.c man-1.5l/src/man.c
---- man-1.5l.orig/src/man.c    2002-12-17 16:28:14.000000000 -0700
-+++ man-1.5l/src/man.c 2003-04-24 16:49:05.000000000 -0600
-@@ -546,7 +546,9 @@
-              /* we should set line length and title line length */
-              /* however, a .lt command here fails, only
-                 .ev 1; .lt ...; .ev helps for my version of groff */
--             sprintf(eos(bufh), "echo \".ll %d.%di\"; ", ll/10, ll%10);
-+                /* use the LL register instead of .ll to keep up with
-+                * changes in the groff-1.18 series */
-+                sprintf(eos(bufh), "echo \".nr LL %d.%di\"; ", ll/10, ll%10);
- #if 0
-              sprintf(eos(bufh), "echo \".lt %d.%di\"; ", ll/10, ll%10);
- #endif
diff --git a/packages/base/man/man_conf.patch b/packages/base/man/man_conf.patch
deleted file mode 100644 (file)
index 034c98d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- ./src/man.conf.in.orig     2004-07-29 00:38:20.000000000 +0200
-+++ ./src/man.conf.in  2004-07-29 00:39:24.000000000 +0200
-@@ -36,7 +36,7 @@
- #
- # Every automatically generated MANPATH includes these fields
- #
--MANPATH       /usr/man
-+#MANPATH      /usr/man
- MANPATH /usr/share/man
- MANPATH       /usr/local/man
- MANPATH       /usr/X11R6/man
-@@ -92,7 +92,7 @@
- # causes problems, add the -c option to TROFF, NROFF, JNROFF.
- #
- TROFF         @troff@
--NROFF         @nroff@
-+NROFF         @nroff@ -c
- JNROFF                @jnroff@
- EQN           @eqn@
- NEQN          @neqn@
diff --git a/packages/base/man/man_pager.patch b/packages/base/man/man_pager.patch
deleted file mode 100644 (file)
index fc10c4a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur man-1.5l.orig/configure man-1.5l/configure
---- man-1.5l.orig/configure    2003-03-10 13:21:00.000000000 -0700
-+++ man-1.5l/configure 2003-04-24 16:50:30.000000000 -0600
-@@ -26,7 +26,7 @@
- # (Indeed, -r may cause the terminal to get into funny states.
- # Very inconvenient. For viewing pages in strange locales, set LC_*.)
- #
--DEFAULTLESSOPT="-is"
-+DEFAULTLESSOPT="-isR"
- #
- # Note that not creating any cat directories (/var/cache/man or so)
- # and not making man suid or sgid is recommended.
index c887d04..028708e 100644 (file)
@@ -2,15 +2,19 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 3.0
+# [V] 3.1
 # [S] 2-15
-# [D] module-init-tools-3.0.tar.bz2 ftp://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/
+# [D] module-init-tools-3.1.tar.bz2 ftp://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/
 
 confopt=${confopt//--prefix* /--prefix="" }
 confopt="$confopt --enable-zlib"
 
+pre_install()  {
+       touch modprobe.conf.5
+               }
+
 post_install() {
        # creating modprobe.* stuff
-       touch $root/etc/modprobe.conf
-       cp modprobe.devfs $root/etc
+       [ ! -f $root/etc/modprobe.conf ] touch $root/etc/modprobe.conf
+       [ ! -f $root/etc/modprobe.devfs ] cp modprobe.devfs $root/etc
                }
index 196f69b..2540b49 100644 (file)
@@ -5,9 +5,9 @@
 # [V] 1.60
 # [S] 2-8
 # [D] net-tools-1.60.tar.bz2 http://www.tazenda.demon.co.uk/phil/net-tools/
-# [D] iana-etc-1.00.tar.bz2 http://www.sethwklein.net/projects/iana-etc/downloads/
+# [D] iana-etc-1.04.tar.bz2 http://www.sethwklein.net/projects/iana-etc/downloads/
 
-extraver=1.00
+extraver=1.04
 
 pre_install()  {
        mv lib/x25_sr.c lib/x25_sr.c.orig
index 98285f4..d9794f4 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 5.8.4
+# [V] 5.9.2
 # [S] 1-9 2-10
-# [D] perl-5.8.4.tar.gz ftp://ftp.cpan.org/pub/CPAN/src/
+# [D] perl-5.9.2.tar.gz ftp://ftp.cpan.org/pub/CPAN/src/
 
 e_ver=`echo $ver | awk -F. '{ print $1 }'`
 confopt="--prefix=$prefix -Dstatic_ext='IO Fcntl POSIX'"
index 21f38f4..7587a71 100644 (file)
@@ -2,10 +2,6 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 3.2.1
+# [V] 3.2.5
 # [S] 2-15
-# [D] procps-3.2.1.tar.gz http://procps.sourceforge.net/
-
-post_install() {
-       rm -f $root/lib/libproc.so
-               }
+# [D] procps-3.2.5.tar.gz http://procps.sourceforge.net/
index 2730eba..eeeac8e 100644 (file)
@@ -2,13 +2,13 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 21.5
+# [V] 21.6
 # [S] 2-15
-# [D] psmisc-21.5.tar.gz http://puzzle.dl.sourceforge.net/sourceforge/psmisc/
+# [D] psmisc-21.6.tar.gz http://mesh.dl.sourceforge.net/sourceforge/psmisc/
 
 confopt="$confopt --exec-prefix=$root/"
 
 post_install() {
-       ln -sfv pstree $prefix/bin/pstree.x11
+       mv $root/bin/pstree* $prefix/bin
        ln -sfv killall $root/bin/pidof
                }
index 4da9559..0436236 100644 (file)
@@ -2,8 +2,8 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 4.1
+# [V] 4.1.4
 # [S] 1-5 2-9
-# [D] sed-4.1.tar.gz ftp://ftp.gnu.org/pub/gnu/sed/
+# [D] sed-4.1.4.tar.gz ftp://ftp.gnu.org/pub/gnu/sed/
 
 [ "$hdw_status" = "2" ] && confopt=${confopt//--bindir* /--bindir=$root/bin }
index e695f4b..40cdbc7 100644 (file)
@@ -2,16 +2,17 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 4.0.4.1
+# [V] 4.0.10
 # [S] 2-15
-# [D] shadow-4.0.4.1.tar.bz2 ftp://ftp.pld.org.pl/software/shadow/
+# [D] shadow-4.0.10.tar.bz2 ftp://ftp.pld.org.pl/software/shadow/
 
-confopt="$confopt --enable-shared"
+confopt="$confopt --libdir=$root/lib --enable-shared"
 
 pre_install()  {
-       echo '#define HAVE_SETLOCALE 1' >> config.h
-       cp libmisc/xmalloc.c libmisc/xmalloc.c.orig
-       sed '/extern char/d' libmisc/xmalloc.c.orig > libmisc/xmalloc.c
+       sed 's/groups$(EXEEXT) //' src/Makefile > tmp~
+       mv tmp~ src/Makefile
+       sed '/groups/d' man/Makefile > tmp~
+       mv tmp~ man/Makefile
                }
 
 post_install() {
@@ -19,11 +20,10 @@ post_install()      {
        sed -e 's%/var/spool/mail%/var/mail%' \
                -e 's%#MD5_CRYPT_ENAB.no%MD5_CRYPT_ENAB yes%' \
                etc/login.defs.linux > $root/etc/login.defs
-       rm -f $root/bin/groups
-       mv $prefix/bin/vigr $prefix/sbin
-       mv $prefix/bin/{login,passwd} $root/bin
-       mv $prefix/lib/lib{shadow,misc}.so.0* $root/lib
+       for i in login passwd; do
+               [ -f $prefix/bin/$i ] && mv $prefix/bin/$i $root/bin
+       done
+       mv $root/lib/libshadow.*a $prefix/lib
        ln -sf ../../lib/libshadow.so.0 $prefix/lib/libshadow.so
-       ln -sf ../../lib/libmisc.so.0 $prefix/lib/libmisc.so
        mkdir -p $root/etc/default
                }
index df0b4af..792d045 100644 (file)
@@ -8,3 +8,7 @@
 
 make_conf=""
 install_conf=""
+
+post_install() {
+       cp $confdir/syslog.conf $root/etc
+               }
diff --git a/packages/base/sysklogd/syslog.conf b/packages/base/sysklogd/syslog.conf
new file mode 100644 (file)
index 0000000..d0bc610
--- /dev/null
@@ -0,0 +1,25 @@
+# hdw - linux /etc/syslog.conf
+#
+# man 8 syslogd
+# man 8 syslog.conf
+#
+
+# we use special file for authentification stuff
+auth,authpriv.*                        -/var/log/auth.log
+
+# everything else to /var/log/sys.log
+*.*;auth,authpriv.none         -/var/log/sys.log
+
+# do more seperation
+kern.*                         -/var/log/kern.log
+mail.*                         -/var/log/mail.log
+user.*                         -/var/log/user.log
+# every warning
+*.warning                      -/var/log/warn.log
+
+# and we still want messages file :)
+*.info                         -/var/log/messages
+
+# warn the users
+*.emerg                                *
+
diff --git a/packages/base/sysvinit/inittab b/packages/base/sysvinit/inittab
new file mode 100644 (file)
index 0000000..2ec8ada
--- /dev/null
@@ -0,0 +1,33 @@
+# hdw - linux  /etc/inittab    (copied from ROCK Linux)
+#
+# man 5 inittab
+
+# default 2
+id:2:initdefault:
+
+# boot script
+si::sysinit:/etc/init.d/boot | /sbin/btee t /var/log/init.msg
+
+# 0 = halt, 6 = reboot
+# 1-5 = multi-user
+# S = single user
+l0:0:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
+l1:1:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
+l2:2:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
+l3:3:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
+l4:4:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
+l5:5:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
+l6:6:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
+ls:S:wait:/etc/init.d/rc | /sbin/btee a /var/log/init.msg
+~~:S:wait:/sbin/sulogin
+
+# reboot when pressing ctrl + alt + del
+ca:12345:ctrlaltdel:/sbin/shutdown -r now
+
+#  <id>:<runlevels>:<action>:<process>
+1:12345:respawn:/sbin/agetty -L -i -I '\012\015\012Maintenance Console:\012' 38400 vc/1 linux
+2:12345:respawn:/sbin/agetty -f /etc/issue 38400 vc/2 linux
+3:12345:respawn:/sbin/agetty -f /etc/issue 38400 vc/3 linux
+4:12345:respawn:/sbin/agetty -f /etc/issue 38400 vc/4 linux
+5:12345:respawn:/sbin/agetty -f /etc/issue 38400 vc/5 linux
+6:12345:respawn:/sbin/agetty -f /etc/issue 38400 vc/6 linux
index 60482fd..5c8c98b 100644 (file)
@@ -2,9 +2,12 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 2.85
+# [V] 2.86
 # [S] 2-15
-# [D] sysvinit-2.85.tar.gz ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/
+# [D] sysvinit-2.86.tar.gz ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/
+
+make_conf="-C src"
+install_conf="-C src"
 
 pre_install()  {
        sed 's%Sending processes%& started by init%g' \
@@ -12,5 +15,6 @@ pre_install() {
        mv tmp~ src/init.c
                }
 
-make_conf="-C src"
-install_conf="-C src"
+post_install() {
+       cp $confdir/inittab $root/etc
+               }
index 892a89c..1c58541 100644 (file)
@@ -2,6 +2,6 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 1.14
+# [V] 1.15
 # [S] 1-6 2-15
-# [D] tar-1.14.tar.bz2 ftp://ftp.gnu.org/pub/gnu/tar/
+# [D] tar-1.15.tar.bz2 ftp://ftp.gnu.org/pub/gnu/tar/
index 90e9413..a2ac91e 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 4.7
+# [V] 4.8
 # [S] 1-6 2-10
-# [D] texinfo-4.7.tar.bz2 ftp://ftp.gnu.org/pub/gnu/texinfo/
+# [D] texinfo-4.8.tar.bz2 ftp://ftp.gnu.org/pub/gnu/texinfo/
 
 if [ "$hdw_status" = "2" ] ; then
        post_install()  {
index 138928a..9596c60 100644 (file)
@@ -63,7 +63,7 @@ case "$1"
 in
        start)
                echo -n "starting udev ..."
-               echo "/sbin/udev" > /proc/sys/kernel/hotplug
+               #echo "/sbin/udev" > /proc/sys/kernel/hotplug
                if [ ! -d $sysfs_dir/block ] ; then
                        echo "fatal: sysfs not mounted"
                        exit 1
index 8169a38..31d0779 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 025
+# [V] 059
 # [S] 1-9 2-15
-# [D] udev-027.tar.bz2 http://www.kernel.org/pub/linux/utils/kernel/hotplug/
+# [D] udev-059.tar.bz2 http://www.kernel.org/pub/linux/utils/kernel/hotplug/
 
 make_conf="udevdir=/dev $make_conf"
 install_conf="udevdir=/dev"
@@ -15,14 +15,6 @@ u_root=$root
 if [ "$hdw_status" = "1" ] ; then
        make_conf="prefix=$prefix etcdir=$prefix/etc $make_conf"
        install_conf="DESTDIR=$prefix $install_conf"
-       pre_install()   {
-               mv udevstart.c udevstart.c.orig
-               sed "s%/sbin/udev%$u_root/sbin/udev%g" udevstart.c.orig > \
-                       udevstart.c
-               mv etc/udev/udev.conf.in etc/udev/udev.conf.in.orig
-               sed "s%/etc%$u_root/etc%g" etc/udev/udev.conf.in.orig > \
-                       etc/udev/udev.conf.in
-                       }
 fi
 
 post_install() {
diff --git a/packages/base/util-linux/cramfs.patch b/packages/base/util-linux/cramfs.patch
new file mode 100644 (file)
index 0000000..05615bb
--- /dev/null
@@ -0,0 +1,83 @@
+diff -Naur util-linux-2.12p/disk-utils/fsck.cramfs.c util-linux-2.12p-new/disk-utils/fsck.cramfs.c
+--- util-linux-2.12p/disk-utils/fsck.cramfs.c  2004-12-11 14:53:16.000000000 +0000
++++ util-linux-2.12p-new/disk-utils/fsck.cramfs.c      2004-12-26 00:53:10.665199086 +0000
+@@ -76,16 +76,7 @@
+ #define PAD_SIZE 512
+-#include <asm/page.h>
+-#ifdef PAGE_SIZE
+-#define PAGE_CACHE_SIZE ((int) PAGE_SIZE)
+-#elif defined __ia64__
+-#define PAGE_CACHE_SIZE (16384)
+-#elif defined __alpha__
+-#define PAGE_CACHE_SIZE (8192)
+-#else
+-#define PAGE_CACHE_SIZE (4096)
+-#endif
++#define PAGE_CACHE_SIZE  page_size
+ /* Guarantee access to at least 8kB at a time */
+ #define ROMBUFFER_BITS        13
+@@ -95,11 +86,13 @@
+ static unsigned long read_buffer_block = ~0UL;
+ /* Uncompressing data structures... */
+-static char outbuffer[PAGE_CACHE_SIZE*2];
++static char *outbuffer;
+ z_stream stream;
+ #endif /* INCLUDE_FS_TESTS */
++static size_t page_size;
++
+ /* Input status of 0 to print help and exit without an error. */
+ static void usage(int status)
+ {
+@@ -464,9 +457,17 @@
+       int c;                  /* for getopt */
+       int start = 0;
++      page_size = sysconf(_SC_PAGESIZE);
++      
+       if (argc)
+               progname = argv[0];
++      outbuffer = malloc(page_size * 2);
++      if (!outbuffer) {
++              fprintf(stderr, _("failed to allocate outbuffer\n"));
++              exit(8);
++      }
++
+       /* command line options */
+       while ((c = getopt(argc, argv, "hx:v")) != EOF) {
+               switch (c) {
+diff -Naur util-linux-2.12p/disk-utils/mkfs.cramfs.c util-linux-2.12p-new/disk-utils/mkfs.cramfs.c
+--- util-linux-2.12p/disk-utils/mkfs.cramfs.c  2004-12-11 14:56:01.000000000 +0000
++++ util-linux-2.12p-new/disk-utils/mkfs.cramfs.c      2004-12-26 00:53:10.666198928 +0000
+@@ -46,16 +46,8 @@
+ static const char *progname = "mkcramfs";
+ static int verbose = 0;
+-#ifdef __ia64__
+-#define PAGE_CACHE_SIZE (16384)
+-#elif defined __alpha__
+-#define PAGE_CACHE_SIZE (8192)
+-#else
+-#define PAGE_CACHE_SIZE (4096)
+-#endif
+-
+ /* The kernel assumes PAGE_CACHE_SIZE as block size. */
+-static unsigned int blksize = PAGE_CACHE_SIZE; /* settable via -b option */
++static unsigned int blksize;                   /* settable via -b option */
+ static long total_blocks = 0, total_nodes = 1; /* pre-count the root node */
+ static int image_length = 0;
+@@ -730,6 +722,7 @@
+       u32 crc = crc32(0L, Z_NULL, 0);
+       int c;
++      blksize = sysconf(_SC_PAGESIZE);
+       total_blocks = 0;
+       if (argc) {
diff --git a/packages/base/util-linux/kernel_headers.patch b/packages/base/util-linux/kernel_headers.patch
deleted file mode 100644 (file)
index 3ab82b0..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
---- util-linux-2.12.orig/disk-utils/blockdev.c 2002-03-08 22:57:02.000000000 +0000
-+++ util-linux-2.12/disk-utils/blockdev.c      2004-01-30 19:49:39.000000000 +0000
-@@ -9,6 +9,7 @@
- #include <string.h>
- #include <unistd.h>
- #include <sys/ioctl.h>
-+#include <linux/version.h>
- #include "nls.h"
-@@ -24,8 +25,13 @@
- #define BLKRASET   _IO(0x12,98)
- #define BLKRAGET   _IO(0x12,99)
- #define BLKSSZGET  _IO(0x12,104)
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
- #define BLKBSZGET  _IOR(0x12,112,sizeof(int))
- #define BLKBSZSET  _IOW(0x12,113,sizeof(int))
-+#else
-+#define BLKBSZGET  _IOR(0x12,112,int)
-+#define BLKBSZSET  _IOW(0x12,113,int)
-+#endif
- #endif
- /* Maybe <linux/hdreg.h> could be included */
---- util-linux-2.12.orig/disk-utils/elvtune.c  2002-03-08 22:57:49.000000000 +0000
-+++ util-linux-2.12/disk-utils/elvtune.c       2004-01-30 19:49:39.000000000 +0000
-@@ -26,6 +26,8 @@
- #include <sys/ioctl.h>
- #include <unistd.h>
- #include <stdlib.h>
-+#include <linux/version.h>
-+
- #include "nls.h"
- /* this has to match with the kernel structure */
-@@ -37,8 +39,13 @@
-       int max_bomb_segments;
- } blkelv_ioctl_arg_t;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
- #define BLKELVGET   _IOR(0x12,106,sizeof(blkelv_ioctl_arg_t))
- #define BLKELVSET   _IOW(0x12,107,sizeof(blkelv_ioctl_arg_t))
-+#else
-+#define BLKELVGET   _IOR(0x12,106,blkelv_ioctl_arg_t)
-+#define BLKELVSET   _IOW(0x12,107,blkelv_ioctl_arg_t)
-+#endif
- static void
- usage(void) {
---- util-linux-2.12.orig/fdisk/common.h        2003-07-13 13:59:53.000000000 +0000
-+++ util-linux-2.12/fdisk/common.h     2004-01-30 19:49:39.000000000 +0000
-@@ -2,11 +2,18 @@
- /* including <linux/fs.h> fails */
- #include <sys/ioctl.h>
-+#include <linux/version.h>
-+
- #define BLKRRPART    _IO(0x12,95)    /* re-read partition table */
- #define BLKGETSIZE   _IO(0x12,96)    /* return device size */
- #define BLKFLSBUF    _IO(0x12,97)    /* flush buffer cache */
- #define BLKSSZGET    _IO(0x12,104)   /* get block device sector size */
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
- #define BLKGETSIZE64 _IOR(0x12,114,8) /* 8 = sizeof(u64) */
-+#else
-+#define BLKGETSIZE64 _IOR(0x12,114,unsigned long long)
-+#endif
- /* including <linux/hdreg.h> also fails */
- struct hd_geometry {
---- util-linux-2.12.orig/mount/my_dev_t.h      2003-07-16 20:05:50.000000000 +0000
-+++ util-linux-2.12/mount/my_dev_t.h   2004-01-30 19:49:39.000000000 +0000
-@@ -4,4 +4,10 @@
- /* for ancient systems use "unsigned short" */
- #include <linux/posix_types.h>
-+#include <linux/version.h>
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
- #define my_dev_t __kernel_dev_t
-+#else
-+#define my_dev_t int
-+#endif
index a5cf895..b950aa7 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 2.12a
+# [V] 2.12q
 # [S] 1-8 2-15
-# [D] util-linux-2.12a.tar.bz2 ftp://ftp.kernel.org/pub/linux/utils/util-linux/
+# [D] util-linux-2.12q.tar.bz2 ftp://ftp.kernel.org/pub/linux/utils/util-linux/
 
 if [ "$hdw_status" = "1" ]; then
        pre_install()   {
index 100943c..e75e51c 100644 (file)
@@ -2,8 +2,8 @@
 
 # author: hackbard@hackdaworld.dyndns.org
 
-# [V] 1.00-pre9
-# [D] busybox-1.00-pre9.tar.bz2 http://www.busybox.net/downloads/
+# [V] 1.00-pre10
+# [D] busybox-1.00-pre10.tar.bz2 http://www.busybox.net/downloads/
 # [S] 2-19
 
 skip=1
diff --git a/packages/ia32/lilo/kernel_2_6_x.patch b/packages/ia32/lilo/kernel_2_6_x.patch
deleted file mode 100644 (file)
index a141c73..0000000
+++ /dev/null
@@ -1,4832 +0,0 @@
-diff -Nur lilo-22.5.9-orig/Makefile lilo-22.5.9/Makefile
---- lilo-22.5.9-orig/Makefile  2004-07-10 02:41:41.000000000 +0200
-+++ lilo-22.5.9/Makefile       2004-07-10 03:10:28.000000000 +0200
-@@ -84,7 +84,7 @@
- LD86=ld86 -0
- NASM=nasm
--CFLAGS=$(OPT) -Wall -g $(PCONFIG)
-+CFLAGS=$(OPT) -Wall -g $(PCONFIG) -I./kernel-headers
- LDFLAGS=#-Xlinker -qmagic
- LIBS=
-diff -Nur lilo-22.5.9-orig/kernel-headers/asm/boot.h lilo-22.5.9/kernel-headers/asm/boot.h
---- lilo-22.5.9-orig/kernel-headers/asm/boot.h 1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/asm/boot.h      2004-07-10 02:56:48.000000000 +0200
-@@ -0,0 +1,15 @@
-+#ifndef _LINUX_BOOT_H
-+#define _LINUX_BOOT_H
-+
-+/* Don't touch these, unless you really know what you're doing. */
-+#define DEF_INITSEG   0x9000
-+#define DEF_SYSSEG    0x1000
-+#define DEF_SETUPSEG  0x9020
-+#define DEF_SYSSIZE   0x7F00
-+
-+/* Internal svga startup constants */
-+#define NORMAL_VGA    0xffff          /* 80x25 mode */
-+#define EXTENDED_VGA  0xfffe          /* 80x50 mode */
-+#define ASK_VGA               0xfffd          /* ask for it at bootup */
-+
-+#endif
-diff -Nur lilo-22.5.9-orig/kernel-headers/asm/ioctl.h lilo-22.5.9/kernel-headers/asm/ioctl.h
---- lilo-22.5.9-orig/kernel-headers/asm/ioctl.h        1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/asm/ioctl.h     2004-07-10 02:56:48.000000000 +0200
-@@ -0,0 +1,75 @@
-+/* $Id: kernel_2_6_x.patch,v 1.1 2004-07-21 08:58:08 hackbard Exp $
-+ *
-+ * linux/ioctl.h for Linux by H.H. Bergman.
-+ */
-+
-+#ifndef _ASMI386_IOCTL_H
-+#define _ASMI386_IOCTL_H
-+
-+/* ioctl command encoding: 32 bits total, command in lower 16 bits,
-+ * size of the parameter structure in the lower 14 bits of the
-+ * upper 16 bits.
-+ * Encoding the size of the parameter structure in the ioctl request
-+ * is useful for catching programs compiled with old versions
-+ * and to avoid overwriting user space outside the user buffer area.
-+ * The highest 2 bits are reserved for indicating the ``access mode''.
-+ * NOTE: This limits the max parameter size to 16kB -1 !
-+ */
-+
-+/*
-+ * The following is for compatibility across the various Linux
-+ * platforms.  The i386 ioctl numbering scheme doesn't really enforce
-+ * a type field.  De facto, however, the top 8 bits of the lower 16
-+ * bits are indeed used as a type field, so we might just as well make
-+ * this explicit here.  Please be sure to use the decoding macros
-+ * below from now on.
-+ */
-+#define _IOC_NRBITS   8
-+#define _IOC_TYPEBITS 8
-+#define _IOC_SIZEBITS 14
-+#define _IOC_DIRBITS  2
-+
-+#define _IOC_NRMASK   ((1 << _IOC_NRBITS)-1)
-+#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1)
-+#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1)
-+#define _IOC_DIRMASK  ((1 << _IOC_DIRBITS)-1)
-+
-+#define _IOC_NRSHIFT  0
-+#define _IOC_TYPESHIFT        (_IOC_NRSHIFT+_IOC_NRBITS)
-+#define _IOC_SIZESHIFT        (_IOC_TYPESHIFT+_IOC_TYPEBITS)
-+#define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS)
-+
-+/*
-+ * Direction bits.
-+ */
-+#define _IOC_NONE     0U
-+#define _IOC_WRITE    1U
-+#define _IOC_READ     2U
-+
-+#define _IOC(dir,type,nr,size) \
-+      (((dir)  << _IOC_DIRSHIFT) | \
-+       ((type) << _IOC_TYPESHIFT) | \
-+       ((nr)   << _IOC_NRSHIFT) | \
-+       ((size) << _IOC_SIZESHIFT))
-+
-+/* used to create numbers */
-+#define _IO(type,nr)          _IOC(_IOC_NONE,(type),(nr),0)
-+#define _IOR(type,nr,size)    _IOC(_IOC_READ,(type),(nr),sizeof(size))
-+#define _IOW(type,nr,size)    _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
-+#define _IOWR(type,nr,size)   _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
-+
-+/* used to decode ioctl numbers.. */
-+#define _IOC_DIR(nr)          (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
-+#define _IOC_TYPE(nr)         (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
-+#define _IOC_NR(nr)           (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
-+#define _IOC_SIZE(nr)         (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
-+
-+/* ...and for the drivers/sound files... */
-+
-+#define IOC_IN                (_IOC_WRITE << _IOC_DIRSHIFT)
-+#define IOC_OUT               (_IOC_READ << _IOC_DIRSHIFT)
-+#define IOC_INOUT     ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
-+#define IOCSIZE_MASK  (_IOC_SIZEMASK << _IOC_SIZESHIFT)
-+#define IOCSIZE_SHIFT (_IOC_SIZESHIFT)
-+
-+#endif /* _ASMI386_IOCTL_H */
-diff -Nur lilo-22.5.9-orig/kernel-headers/asm/page.h lilo-22.5.9/kernel-headers/asm/page.h
---- lilo-22.5.9-orig/kernel-headers/asm/page.h 1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/asm/page.h      2004-07-10 02:56:48.000000000 +0200
-@@ -0,0 +1,142 @@
-+#ifndef _I386_PAGE_H
-+#define _I386_PAGE_H
-+
-+/* PAGE_SHIFT determines the page size */
-+#define PAGE_SHIFT    12
-+#define PAGE_SIZE     (1UL << PAGE_SHIFT)
-+#define PAGE_MASK     (~(PAGE_SIZE-1))
-+
-+#ifdef __KERNEL__
-+#ifndef __ASSEMBLY__
-+
-+#include <linux/config.h>
-+
-+#ifdef CONFIG_X86_USE_3DNOW
-+
-+#include <asm/mmx.h>
-+
-+#define clear_page(page)      mmx_clear_page((void *)(page))
-+#define copy_page(to,from)    mmx_copy_page(to,from)
-+
-+#else
-+
-+/*
-+ *    On older X86 processors its not a win to use MMX here it seems.
-+ *    Maybe the K6-III ?
-+ */
-+ 
-+#define clear_page(page)      memset((void *)(page), 0, PAGE_SIZE)
-+#define copy_page(to,from)    memcpy((void *)(to), (void *)(from), PAGE_SIZE)
-+
-+#endif
-+
-+#define clear_user_page(page, vaddr)  clear_page(page)
-+#define copy_user_page(to, from, vaddr)       copy_page(to, from)
-+
-+/*
-+ * These are used to make use of C type-checking..
-+ */
-+#if CONFIG_X86_PAE
-+typedef struct { unsigned long pte_low, pte_high; } pte_t;
-+typedef struct { unsigned long long pmd; } pmd_t;
-+typedef struct { unsigned long long pgd; } pgd_t;
-+#define pte_val(x)    ((x).pte_low | ((unsigned long long)(x).pte_high << 32))
-+#else
-+typedef struct { unsigned long pte_low; } pte_t;
-+typedef struct { unsigned long pmd; } pmd_t;
-+typedef struct { unsigned long pgd; } pgd_t;
-+#define pte_val(x)    ((x).pte_low)
-+#endif
-+#define PTE_MASK      PAGE_MASK
-+
-+typedef struct { unsigned long pgprot; } pgprot_t;
-+
-+#define pmd_val(x)    ((x).pmd)
-+#define pgd_val(x)    ((x).pgd)
-+#define pgprot_val(x) ((x).pgprot)
-+
-+#define __pte(x) ((pte_t) { (x) } )
-+#define __pmd(x) ((pmd_t) { (x) } )
-+#define __pgd(x) ((pgd_t) { (x) } )
-+#define __pgprot(x)   ((pgprot_t) { (x) } )
-+
-+#endif /* !__ASSEMBLY__ */
-+
-+/* to align the pointer to the (next) page boundary */
-+#define PAGE_ALIGN(addr)      (((addr)+PAGE_SIZE-1)&PAGE_MASK)
-+
-+/*
-+ * This handles the memory map.. We could make this a config
-+ * option, but too many people screw it up, and too few need
-+ * it.
-+ *
-+ * A __PAGE_OFFSET of 0xC0000000 means that the kernel has
-+ * a virtual address space of one gigabyte, which limits the
-+ * amount of physical memory you can use to about 950MB. 
-+ *
-+ * If you want more physical memory than this then see the CONFIG_HIGHMEM4G
-+ * and CONFIG_HIGHMEM64G options in the kernel configuration.
-+ */
-+
-+#define __PAGE_OFFSET         (0xC0000000)
-+
-+/*
-+ * This much address space is reserved for vmalloc() and iomap()
-+ * as well as fixmap mappings.
-+ */
-+#define __VMALLOC_RESERVE     (128 << 20)
-+
-+#ifndef __ASSEMBLY__
-+
-+/*
-+ * Tell the user there is some problem. Beep too, so we can
-+ * see^H^H^Hhear bugs in early bootup as well!
-+ * The offending file and line are encoded after the "officially
-+ * undefined" opcode for parsing in the trap handler.
-+ */
-+
-+#if 1 /* Set to zero for a slightly smaller kernel */
-+#define BUG()                         \
-+ __asm__ __volatile__(        "ud2\n"         \
-+                      "\t.word %c0\n" \
-+                      "\t.long %c1\n" \
-+                       : : "i" (__LINE__), "i" (__FILE__))
-+#else
-+#define BUG() __asm__ __volatile__("ud2\n")
-+#endif
-+
-+#define PAGE_BUG(page) do { \
-+      BUG(); \
-+} while (0)
-+
-+/* Pure 2^n version of get_order */
-+static __inline__ int get_order(unsigned long size)
-+{
-+      int order;
-+
-+      size = (size-1) >> (PAGE_SHIFT-1);
-+      order = -1;
-+      do {
-+              size >>= 1;
-+              order++;
-+      } while (size);
-+      return order;
-+}
-+
-+#endif /* __ASSEMBLY__ */
-+
-+#define PAGE_OFFSET           ((unsigned long)__PAGE_OFFSET)
-+#define VMALLOC_RESERVE               ((unsigned long)__VMALLOC_RESERVE)
-+#define __MAXMEM              (-__PAGE_OFFSET-__VMALLOC_RESERVE)
-+#define MAXMEM                        ((unsigned long)(-PAGE_OFFSET-VMALLOC_RESERVE))
-+#define __pa(x)                       ((unsigned long)(x)-PAGE_OFFSET)
-+#define __va(x)                       ((void *)((unsigned long)(x)+PAGE_OFFSET))
-+#define virt_to_page(kaddr)   (mem_map + (__pa(kaddr) >> PAGE_SHIFT))
-+#define VALID_PAGE(page)      ((page - mem_map) < max_mapnr)
-+
-+#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
-+                               VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
-+
-+#endif /* __KERNEL__ */
-+
-+#endif /* _I386_PAGE_H */
-diff -Nur lilo-22.5.9-orig/kernel-headers/asm/types.h lilo-22.5.9/kernel-headers/asm/types.h
---- lilo-22.5.9-orig/kernel-headers/asm/types.h        1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/asm/types.h     2004-07-10 02:56:48.000000000 +0200
-@@ -0,0 +1,57 @@
-+#ifndef _I386_TYPES_H
-+#define _I386_TYPES_H
-+
-+typedef unsigned short umode_t;
-+
-+/*
-+ * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
-+ * header files exported to user space
-+ */
-+
-+typedef __signed__ char __s8;
-+typedef unsigned char __u8;
-+
-+typedef __signed__ short __s16;
-+typedef unsigned short __u16;
-+
-+typedef __signed__ int __s32;
-+typedef unsigned int __u32;
-+
-+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
-+typedef __signed__ long long __s64;
-+typedef unsigned long long __u64;
-+#endif
-+
-+/*
-+ * These aren't exported outside the kernel to avoid name space clashes
-+ */
-+#ifdef __KERNEL__
-+
-+#include <linux/config.h>
-+
-+typedef signed char s8;
-+typedef unsigned char u8;
-+
-+typedef signed short s16;
-+typedef unsigned short u16;
-+
-+typedef signed int s32;
-+typedef unsigned int u32;
-+
-+typedef signed long long s64;
-+typedef unsigned long long u64;
-+
-+#define BITS_PER_LONG 32
-+
-+/* DMA addresses come in generic and 64-bit flavours.  */
-+
-+#ifdef CONFIG_HIGHMEM64G
-+typedef u64 dma_addr_t;
-+#else
-+typedef u32 dma_addr_t;
-+#endif
-+typedef u64 dma64_addr_t;
-+
-+#endif /* __KERNEL__ */
-+
-+#endif
-diff -Nur lilo-22.5.9-orig/kernel-headers/asm/unistd.h lilo-22.5.9/kernel-headers/asm/unistd.h
---- lilo-22.5.9-orig/kernel-headers/asm/unistd.h       1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/asm/unistd.h    2004-07-10 02:55:27.000000000 +0200
-@@ -0,0 +1,386 @@
-+#ifndef _ASM_I386_UNISTD_H_
-+#define _ASM_I386_UNISTD_H_
-+
-+/*
-+ * This file contains the system call numbers.
-+ */
-+
-+#define __NR_exit               1
-+#define __NR_fork               2
-+#define __NR_read               3
-+#define __NR_write              4
-+#define __NR_open               5
-+#define __NR_close              6
-+#define __NR_waitpid            7
-+#define __NR_creat              8
-+#define __NR_link               9
-+#define __NR_unlink            10
-+#define __NR_execve            11
-+#define __NR_chdir             12
-+#define __NR_time              13
-+#define __NR_mknod             14
-+#define __NR_chmod             15
-+#define __NR_lchown            16
-+#define __NR_break             17
-+#define __NR_oldstat           18
-+#define __NR_lseek             19
-+#define __NR_getpid            20
-+#define __NR_mount             21
-+#define __NR_umount            22
-+#define __NR_setuid            23
-+#define __NR_getuid            24
-+#define __NR_stime             25
-+#define __NR_ptrace            26
-+#define __NR_alarm             27
-+#define __NR_oldfstat          28
-+#define __NR_pause             29
-+#define __NR_utime             30
-+#define __NR_stty              31
-+#define __NR_gtty              32
-+#define __NR_access            33
-+#define __NR_nice              34
-+#define __NR_ftime             35
-+#define __NR_sync              36
-+#define __NR_kill              37
-+#define __NR_rename            38
-+#define __NR_mkdir             39
-+#define __NR_rmdir             40
-+#define __NR_dup               41
-+#define __NR_pipe              42
-+#define __NR_times             43
-+#define __NR_prof              44
-+#define __NR_brk               45
-+#define __NR_setgid            46
-+#define __NR_getgid            47
-+#define __NR_signal            48
-+#define __NR_geteuid           49
-+#define __NR_getegid           50
-+#define __NR_acct              51
-+#define __NR_umount2           52
-+#define __NR_lock              53
-+#define __NR_ioctl             54
-+#define __NR_fcntl             55
-+#define __NR_mpx               56
-+#define __NR_setpgid           57
-+#define __NR_ulimit            58
-+#define __NR_oldolduname       59
-+#define __NR_umask             60
-+#define __NR_chroot            61
-+#define __NR_ustat             62
-+#define __NR_dup2              63
-+#define __NR_getppid           64
-+#define __NR_getpgrp           65
-+#define __NR_setsid            66
-+#define __NR_sigaction                 67
-+#define __NR_sgetmask          68
-+#define __NR_ssetmask          69
-+#define __NR_setreuid          70
-+#define __NR_setregid          71
-+#define __NR_sigsuspend                72
-+#define __NR_sigpending                73
-+#define __NR_sethostname       74
-+#define __NR_setrlimit                 75
-+#define __NR_getrlimit                 76     /* Back compatible 2Gig limited rlimit */
-+#define __NR_getrusage                 77
-+#define __NR_gettimeofday      78
-+#define __NR_settimeofday      79
-+#define __NR_getgroups                 80
-+#define __NR_setgroups                 81
-+#define __NR_select            82
-+#define __NR_symlink           83
-+#define __NR_oldlstat          84
-+#define __NR_readlink          85
-+#define __NR_uselib            86
-+#define __NR_swapon            87
-+#define __NR_reboot            88
-+#define __NR_readdir           89
-+#define __NR_mmap              90
-+#define __NR_munmap            91
-+#define __NR_truncate          92
-+#define __NR_ftruncate                 93
-+#define __NR_fchmod            94
-+#define __NR_fchown            95
-+#define __NR_getpriority       96
-+#define __NR_setpriority       97
-+#define __NR_profil            98
-+#define __NR_statfs            99
-+#define __NR_fstatfs          100
-+#define __NR_ioperm           101
-+#define __NR_socketcall               102
-+#define __NR_syslog           103
-+#define __NR_setitimer                104
-+#define __NR_getitimer                105
-+#define __NR_stat             106
-+#define __NR_lstat            107
-+#define __NR_fstat            108
-+#define __NR_olduname         109
-+#define __NR_iopl             110
-+#define __NR_vhangup          111
-+#define __NR_idle             112
-+#define __NR_vm86old          113
-+#define __NR_wait4            114
-+#define __NR_swapoff          115
-+#define __NR_sysinfo          116
-+#define __NR_ipc              117
-+#define __NR_fsync            118
-+#define __NR_sigreturn                119
-+#define __NR_clone            120
-+#define __NR_setdomainname    121
-+#define __NR_uname            122
-+#define __NR_modify_ldt               123
-+#define __NR_adjtimex         124
-+#define __NR_mprotect         125
-+#define __NR_sigprocmask      126
-+#define __NR_create_module    127
-+#define __NR_init_module      128
-+#define __NR_delete_module    129
-+#define __NR_get_kernel_syms  130
-+#define __NR_quotactl         131
-+#define __NR_getpgid          132
-+#define __NR_fchdir           133
-+#define __NR_bdflush          134
-+#define __NR_sysfs            135
-+#define __NR_personality      136
-+#define __NR_afs_syscall      137 /* Syscall for Andrew File System */
-+#define __NR_setfsuid         138
-+#define __NR_setfsgid         139
-+#define __NR__llseek          140
-+#define __NR_getdents         141
-+#define __NR__newselect               142
-+#define __NR_flock            143
-+#define __NR_msync            144
-+#define __NR_readv            145
-+#define __NR_writev           146
-+#define __NR_getsid           147
-+#define __NR_fdatasync                148
-+#define __NR__sysctl          149
-+#define __NR_mlock            150
-+#define __NR_munlock          151
-+#define __NR_mlockall         152
-+#define __NR_munlockall               153
-+#define __NR_sched_setparam           154
-+#define __NR_sched_getparam           155
-+#define __NR_sched_setscheduler               156
-+#define __NR_sched_getscheduler               157
-+#define __NR_sched_yield              158
-+#define __NR_sched_get_priority_max   159
-+#define __NR_sched_get_priority_min   160
-+#define __NR_sched_rr_get_interval    161
-+#define __NR_nanosleep                162
-+#define __NR_mremap           163
-+#define __NR_setresuid                164
-+#define __NR_getresuid                165
-+#define __NR_vm86             166
-+#define __NR_query_module     167
-+#define __NR_poll             168
-+#define __NR_nfsservctl               169
-+#define __NR_setresgid                170
-+#define __NR_getresgid                171
-+#define __NR_prctl              172
-+#define __NR_rt_sigreturn     173
-+#define __NR_rt_sigaction     174
-+#define __NR_rt_sigprocmask   175
-+#define __NR_rt_sigpending    176
-+#define __NR_rt_sigtimedwait  177
-+#define __NR_rt_sigqueueinfo  178
-+#define __NR_rt_sigsuspend    179
-+#define __NR_pread            180
-+#define __NR_pwrite           181
-+#define __NR_chown            182
-+#define __NR_getcwd           183
-+#define __NR_capget           184
-+#define __NR_capset           185
-+#define __NR_sigaltstack      186
-+#define __NR_sendfile         187
-+#define __NR_getpmsg          188     /* some people actually want streams */
-+#define __NR_putpmsg          189     /* some people actually want streams */
-+#define __NR_vfork            190
-+#define __NR_ugetrlimit               191     /* SuS compliant getrlimit */
-+#define __NR_mmap2            192
-+#define __NR_truncate64               193
-+#define __NR_ftruncate64      194
-+#define __NR_stat64           195
-+#define __NR_lstat64          196
-+#define __NR_fstat64          197
-+#define __NR_lchown32         198
-+#define __NR_getuid32         199
-+#define __NR_getgid32         200
-+#define __NR_geteuid32                201
-+#define __NR_getegid32                202
-+#define __NR_setreuid32               203
-+#define __NR_setregid32               204
-+#define __NR_getgroups32      205
-+#define __NR_setgroups32      206
-+#define __NR_fchown32         207
-+#define __NR_setresuid32      208
-+#define __NR_getresuid32      209
-+#define __NR_setresgid32      210
-+#define __NR_getresgid32      211
-+#define __NR_chown32          212
-+#define __NR_setuid32         213
-+#define __NR_setgid32         214
-+#define __NR_setfsuid32               215
-+#define __NR_setfsgid32               216
-+#define __NR_pivot_root               217
-+#define __NR_mincore          218
-+#define __NR_madvise          219
-+#define __NR_madvise1         219     /* delete when C lib stub is removed */
-+#define __NR_getdents64               220
-+#define __NR_fcntl64          221
-+#define __NR_security         223     /* syscall for security modules */
-+#define __NR_gettid           224
-+#define __NR_readahead                225
-+#define __NR_setxattr         226
-+#define __NR_lsetxattr                227
-+#define __NR_fsetxattr                228
-+#define __NR_getxattr         229
-+#define __NR_lgetxattr                230
-+#define __NR_fgetxattr                231
-+#define __NR_listxattr                232
-+#define __NR_llistxattr               233
-+#define __NR_flistxattr               234
-+#define __NR_removexattr      235
-+#define __NR_lremovexattr     236
-+#define __NR_fremovexattr     237
-+#define __NR_tkill            238
-+#define __NR_sendfile64               239
-+#define __NR_futex            240
-+#define __NR_sched_setaffinity        241
-+#define __NR_sched_getaffinity        242
-+#define __NR_set_thread_area  243
-+#define __NR_get_thread_area  244
-+#define __NR_io_setup         245
-+#define __NR_io_destroy               246
-+#define __NR_io_getevents     247
-+#define __NR_io_submit                248
-+#define __NR_io_cancel                249
-+#define __NR_alloc_hugepages  250
-+#define __NR_free_hugepages   251
-+#define __NR_exit_group               252
-+
-+/* user-visible error numbers are in the range -1 - -124: see <asm-i386/errno.h> */
-+
-+#define __syscall_return(type, res) \
-+do { \
-+      if ((unsigned long)(res) >= (unsigned long)(-125)) { \
-+              errno = -(res); \
-+              res = -1; \
-+      } \
-+      return (type) (res); \
-+} while (0)
-+
-+/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
-+#define _syscall0(type,name) \
-+type name(void) \
-+{ \
-+long __res; \
-+__asm__ volatile ("int $0x80" \
-+      : "=a" (__res) \
-+      : "0" (__NR_##name)); \
-+__syscall_return(type,__res); \
-+}
-+
-+#define _syscall1(type,name,type1,arg1) \
-+type name(type1 arg1) \
-+{ \
-+long __res; \
-+__asm__ volatile ("int $0x80" \
-+      : "=a" (__res) \
-+      : "0" (__NR_##name),"b" ((long)(arg1))); \
-+__syscall_return(type,__res); \
-+}
-+
-+#define _syscall2(type,name,type1,arg1,type2,arg2) \
-+type name(type1 arg1,type2 arg2) \
-+{ \
-+long __res; \
-+__asm__ volatile ("int $0x80" \
-+      : "=a" (__res) \
-+      : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \
-+__syscall_return(type,__res); \
-+}
-+
-+#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
-+type name(type1 arg1,type2 arg2,type3 arg3) \
-+{ \
-+long __res; \
-+__asm__ volatile ("int $0x80" \
-+      : "=a" (__res) \
-+      : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
-+                "d" ((long)(arg3))); \
-+__syscall_return(type,__res); \
-+}
-+
-+#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
-+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
-+{ \
-+long __res; \
-+__asm__ volatile ("int $0x80" \
-+      : "=a" (__res) \
-+      : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
-+        "d" ((long)(arg3)),"S" ((long)(arg4))); \
-+__syscall_return(type,__res); \
-+} 
-+
-+#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
-+        type5,arg5) \
-+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
-+{ \
-+long __res; \
-+__asm__ volatile ("int $0x80" \
-+      : "=a" (__res) \
-+      : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
-+        "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5))); \
-+__syscall_return(type,__res); \
-+}
-+
-+#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
-+        type5,arg5,type6,arg6) \
-+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \
-+{ \
-+long __res; \
-+__asm__ volatile ("push %%ebp ; movl %%eax,%%ebp ; movl %1,%%eax ; int $0x80 ; pop %%ebp" \
-+      : "=a" (__res) \
-+      : "i" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \
-+        "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5)), \
-+        "0" ((long)(arg6))); \
-+__syscall_return(type,__res); \
-+}
-+
-+#ifdef __KERNEL_SYSCALLS__
-+
-+/*
-+ * we need this inline - forking from kernel space will result
-+ * in NO COPY ON WRITE (!!!), until an execve is executed. This
-+ * is no problem, but for the stack. This is handled by not letting
-+ * main() use the stack at all after fork(). Thus, no function
-+ * calls - which means inline code for fork too, as otherwise we
-+ * would use the stack upon exit from 'fork()'.
-+ *
-+ * Actually only pause and fork are needed inline, so that there
-+ * won't be any messing with the stack from main(), but we define
-+ * some others too.
-+ */
-+#define __NR__exit __NR_exit
-+static inline _syscall0(int,pause)
-+static inline _syscall0(int,sync)
-+static inline _syscall0(pid_t,setsid)
-+static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
-+static inline _syscall3(int,read,int,fd,char *,buf,off_t,count)
-+static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count)
-+static inline _syscall1(int,dup,int,fd)
-+static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
-+static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
-+static inline _syscall1(int,close,int,fd)
-+static inline _syscall1(int,_exit,int,exitcode)
-+static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
-+static inline _syscall1(int,delete_module,const char *,name)
-+
-+static inline pid_t wait(int * wait_stat)
-+{
-+      return waitpid(-1,wait_stat,0);
-+}
-+
-+#endif
-+
-+#endif /* _ASM_I386_UNISTD_H_ */
-diff -Nur lilo-22.5.9-orig/kernel-headers/linux/config.h lilo-22.5.9/kernel-headers/linux/config.h
---- lilo-22.5.9-orig/kernel-headers/linux/config.h     1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/linux/config.h  2004-07-10 02:59:15.000000000 +0200
-@@ -0,0 +1,6 @@
-+#ifndef _LINUX_CONFIG_H
-+#define _LINUX_CONFIG_H
-+
-+#include <linux/autoconf.h>
-+
-+#endif
-diff -Nur lilo-22.5.9-orig/kernel-headers/linux/fd.h lilo-22.5.9/kernel-headers/linux/fd.h
---- lilo-22.5.9-orig/kernel-headers/linux/fd.h 1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/linux/fd.h      2004-07-10 02:59:14.000000000 +0200
-@@ -0,0 +1,372 @@
-+#ifndef _LINUX_FD_H
-+#define _LINUX_FD_H
-+
-+#include <linux/ioctl.h>
-+
-+/* New file layout: Now the ioctl definitions immediately follow the
-+ * definitions of the structures that they use */
-+
-+/*
-+ * Geometry
-+ */
-+struct floppy_struct {
-+      unsigned int    size,           /* nr of sectors total */
-+                      sect,           /* sectors per track */
-+                      head,           /* nr of heads */
-+                      track,          /* nr of tracks */
-+                      stretch;        /* !=0 means double track steps */
-+#define FD_STRETCH 1
-+#define FD_SWAPSIDES 2
-+
-+      unsigned char   gap,            /* gap1 size */
-+
-+                      rate,           /* data rate. |= 0x40 for perpendicular */
-+#define FD_2M 0x4
-+#define FD_SIZECODEMASK 0x38
-+#define FD_SIZECODE(floppy) (((((floppy)->rate&FD_SIZECODEMASK)>> 3)+ 2) %8)
-+#define FD_SECTSIZE(floppy) ( (floppy)->rate & FD_2M ? \
-+                           512 : 128 << FD_SIZECODE(floppy) )
-+#define FD_PERP 0x40
-+
-+                      spec1,          /* stepping rate, head unload time */
-+                      fmt_gap;        /* gap2 size */
-+      const char      * name; /* used only for predefined formats */
-+};
-+
-+
-+/* commands needing write access have 0x40 set */
-+/* commands needing super user access have 0x80 set */
-+
-+#define FDCLRPRM _IO(2, 0x41)
-+/* clear user-defined parameters */
-+
-+#define FDSETPRM _IOW(2, 0x42, struct floppy_struct) 
-+#define FDSETMEDIAPRM FDSETPRM
-+/* set user-defined parameters for current media */
-+
-+#define FDDEFPRM _IOW(2, 0x43, struct floppy_struct) 
-+#define FDGETPRM _IOR(2, 0x04, struct floppy_struct)
-+#define FDDEFMEDIAPRM FDDEFPRM
-+#define FDGETMEDIAPRM FDGETPRM
-+/* set/get disk parameters */
-+
-+
-+#define       FDMSGON  _IO(2,0x45)
-+#define       FDMSGOFF _IO(2,0x46)
-+/* issue/don't issue kernel messages on media type change */
-+
-+
-+/* 
-+ * Formatting (obsolete)
-+ */
-+#define FD_FILL_BYTE 0xF6 /* format fill byte. */
-+
-+struct format_descr {
-+      unsigned int device,head,track;
-+};
-+
-+#define FDFMTBEG _IO(2,0x47)
-+/* begin formatting a disk */
-+#define       FDFMTTRK _IOW(2,0x48, struct format_descr)
-+/* format the specified track */
-+#define FDFMTEND _IO(2,0x49)
-+/* end formatting a disk */
-+
-+
-+/*
-+ * Error thresholds
-+ */
-+struct floppy_max_errors {
-+      unsigned int
-+        abort,      /* number of errors to be reached before aborting */
-+        read_track, /* maximal number of errors permitted to read an
-+                     * entire track at once */
-+        reset,      /* maximal number of errors before a reset is tried */
-+        recal,      /* maximal number of errors before a recalibrate is
-+                     * tried */
-+
-+        /*
-+         * Threshold for reporting FDC errors to the console.
-+         * Setting this to zero may flood your screen when using
-+         * ultra cheap floppies ;-)
-+         */
-+        reporting;
-+
-+};
-+
-+#define FDSETEMSGTRESH        _IO(2,0x4a)
-+/* set fdc error reporting threshold */
-+
-+#define FDFLUSH  _IO(2,0x4b)
-+/* flush buffers for media; either for verifying media, or for
-+ * handling a media change without closing the file descriptor */
-+
-+#define FDSETMAXERRS _IOW(2, 0x4c, struct floppy_max_errors)
-+#define FDGETMAXERRS _IOR(2, 0x0e, struct floppy_max_errors)
-+/* set/get abortion and read_track threshold. See also floppy_drive_params
-+ * structure */
-+
-+
-+typedef char floppy_drive_name[16];
-+#define FDGETDRVTYP _IOR(2, 0x0f, floppy_drive_name)
-+/* get drive type: 5 1/4 or 3 1/2 */
-+
-+
-+/*
-+ * Drive parameters (user modifiable)
-+ */
-+struct floppy_drive_params {
-+      signed char cmos;               /* CMOS type */
-+      
-+      /* Spec2 is (HLD<<1 | ND), where HLD is head load time (1=2ms, 2=4 ms 
-+       * etc) and ND is set means no DMA. Hardcoded to 6 (HLD=6ms, use DMA).
-+       */
-+      unsigned long max_dtr;          /* Step rate, usec */
-+      unsigned long hlt;              /* Head load/settle time, msec */
-+      unsigned long hut;              /* Head unload time (remnant of 
-+                                       * 8" drives) */
-+      unsigned long srt;              /* Step rate, usec */
-+
-+      unsigned long spinup;           /* time needed for spinup (expressed
-+                                       * in jiffies) */
-+      unsigned long spindown;         /* timeout needed for spindown */
-+      unsigned char spindown_offset;  /* decides in which position the disk
-+                                       * will stop */
-+      unsigned char select_delay;     /* delay to wait after select */
-+      unsigned char rps;              /* rotations per second */
-+      unsigned char tracks;           /* maximum number of tracks */
-+      unsigned long timeout;          /* timeout for interrupt requests */
-+      
-+      unsigned char interleave_sect;  /* if there are more sectors, use 
-+                                       * interleave */
-+      
-+      struct floppy_max_errors max_errors;
-+      
-+      char flags;                     /* various flags, including ftd_msg */
-+/*
-+ * Announce successful media type detection and media information loss after
-+ * disk changes.
-+ * Also used to enable/disable printing of overrun warnings.
-+ */
-+
-+#define FTD_MSG 0x10
-+#define FD_BROKEN_DCL 0x20
-+#define FD_DEBUG 0x02
-+#define FD_SILENT_DCL_CLEAR 0x4
-+#define FD_INVERTED_DCL 0x80 /* must be 0x80, because of hardware 
-+                              considerations */
-+
-+      char read_track;                /* use readtrack during probing? */
-+
-+/*
-+ * Auto-detection. Each drive type has eight formats which are
-+ * used in succession to try to read the disk. If the FDC cannot lock onto
-+ * the disk, the next format is tried. This uses the variable 'probing'.
-+ */
-+      short autodetect[8];            /* autodetected formats */
-+      
-+      int checkfreq; /* how often should the drive be checked for disk 
-+                      * changes */
-+      int native_format; /* native format of this drive */
-+};
-+
-+enum {
-+      FD_NEED_TWADDLE_BIT,    /* more magic */
-+      FD_VERIFY_BIT,          /* inquire for write protection */
-+      FD_DISK_NEWCHANGE_BIT,  /* change detected, and no action undertaken yet
-+                               * to clear media change status */
-+      FD_UNUSED_BIT,
-+      FD_DISK_CHANGED_BIT,    /* disk has been changed since last i/o */
-+      FD_DISK_WRITABLE_BIT    /* disk is writable */
-+};
-+
-+#define FDSETDRVPRM _IOW(2, 0x90, struct floppy_drive_params)
-+#define FDGETDRVPRM _IOR(2, 0x11, struct floppy_drive_params)
-+/* set/get drive parameters */
-+
-+
-+/*
-+ * Current drive state (not directly modifiable by user, readonly)
-+ */
-+struct floppy_drive_struct {
-+      unsigned long flags;
-+/* values for these flags */
-+#define FD_NEED_TWADDLE (1 << FD_NEED_TWADDLE_BIT)
-+#define FD_VERIFY (1 << FD_VERIFY_BIT)
-+#define FD_DISK_NEWCHANGE (1 << FD_DISK_NEWCHANGE_BIT)
-+#define FD_DISK_CHANGED (1 << FD_DISK_CHANGED_BIT)
-+#define FD_DISK_WRITABLE (1 << FD_DISK_WRITABLE_BIT)
-+
-+      unsigned long spinup_date;
-+      unsigned long select_date;
-+      unsigned long first_read_date;
-+      short probed_format;
-+      short track; /* current track */
-+      short maxblock; /* id of highest block read */
-+      short maxtrack; /* id of highest half track read */
-+      int generation; /* how many diskchanges? */
-+
-+/*
-+ * (User-provided) media information is _not_ discarded after a media change
-+ * if the corresponding keep_data flag is non-zero. Positive values are
-+ * decremented after each probe.
-+ */
-+      int keep_data;
-+      
-+      /* Prevent "aliased" accesses. */
-+      int fd_ref;
-+      int fd_device;
-+      unsigned long last_checked; /* when was the drive last checked for a disk 
-+                         * change? */
-+      
-+      char *dmabuf;
-+      int bufblocks;
-+};
-+
-+#define FDGETDRVSTAT _IOR(2, 0x12, struct floppy_drive_struct)
-+#define FDPOLLDRVSTAT _IOR(2, 0x13, struct floppy_drive_struct)
-+/* get drive state: GET returns the cached state, POLL polls for new state */
-+
-+
-+/*
-+ * reset FDC
-+ */
-+enum reset_mode {
-+      FD_RESET_IF_NEEDED,     /* reset only if the reset flags is set */
-+      FD_RESET_IF_RAWCMD,     /* obsolete */
-+      FD_RESET_ALWAYS         /* reset always */
-+};
-+#define FDRESET _IO(2, 0x54)
-+
-+
-+/*
-+ * FDC state
-+ */
-+struct floppy_fdc_state {     
-+      int spec1;              /* spec1 value last used */
-+      int spec2;              /* spec2 value last used */
-+      int dtr;
-+      unsigned char version;  /* FDC version code */
-+      unsigned char dor;
-+      unsigned long address;  /* io address */
-+      unsigned int rawcmd:2;
-+      unsigned int reset:1;
-+      unsigned int need_configure:1;
-+      unsigned int perp_mode:2;
-+      unsigned int has_fifo:1;
-+      unsigned int driver_version;    /* version code for floppy driver */
-+#define FD_DRIVER_VERSION 0x100
-+/* user programs using the floppy API should use floppy_fdc_state to
-+ * get the version number of the floppy driver that they are running
-+ * on. If this version number is bigger than the one compiled into the
-+ * user program (the FD_DRIVER_VERSION define), it should be prepared
-+ * to bigger structures
-+ */
-+
-+      unsigned char track[4];
-+      /* Position of the heads of the 4 units attached to this FDC,
-+       * as stored on the FDC. In the future, the position as stored
-+       * on the FDC might not agree with the actual physical
-+       * position of these drive heads. By allowing such
-+       * disagreement, it will be possible to reset the FDC without
-+       * incurring the expensive cost of repositioning all heads.
-+       * Right now, these positions are hard wired to 0. */
-+
-+};
-+
-+#define FDGETFDCSTAT _IOR(2, 0x15, struct floppy_fdc_state)
-+
-+
-+/*
-+ * Asynchronous Write error tracking
-+ */
-+struct floppy_write_errors {
-+      /* Write error logging.
-+       *
-+       * These fields can be cleared with the FDWERRORCLR ioctl.
-+       * Only writes that were attempted but failed due to a physical media
-+       * error are logged.  write(2) calls that fail and return an error code
-+       * to the user process are not counted.
-+       */
-+
-+      unsigned int write_errors;  /* number of physical write errors 
-+                                   * encountered */
-+      
-+      /* position of first and last write errors */
-+      unsigned long first_error_sector;
-+      int           first_error_generation;
-+      unsigned long last_error_sector;
-+      int           last_error_generation;
-+      
-+      unsigned int badness; /* highest retry count for a read or write 
-+                             * operation */
-+};
-+
-+#define FDWERRORCLR  _IO(2, 0x56)
-+/* clear write error and badness information */
-+#define FDWERRORGET  _IOR(2, 0x17, struct floppy_write_errors)
-+/* get write error and badness information */
-+
-+
-+/*
-+ * Raw commands
-+ */
-+/* new interface flag: now we can do them in batches */
-+#define FDHAVEBATCHEDRAWCMD
-+
-+struct floppy_raw_cmd {
-+      unsigned int flags;
-+#define FD_RAW_READ 1
-+#define FD_RAW_WRITE 2
-+#define FD_RAW_NO_MOTOR 4
-+#define FD_RAW_DISK_CHANGE 4 /* out: disk change flag was set */
-+#define FD_RAW_INTR 8    /* wait for an interrupt */
-+#define FD_RAW_SPIN 0x10 /* spin up the disk for this command */
-+#define FD_RAW_NO_MOTOR_AFTER 0x20 /* switch the motor off after command 
-+                                  * completion */
-+#define FD_RAW_NEED_DISK 0x40  /* this command needs a disk to be present */
-+#define FD_RAW_NEED_SEEK 0x80  /* this command uses an implied seek (soft) */
-+
-+/* more "in" flags */
-+#define FD_RAW_MORE 0x100  /* more records follow */
-+#define FD_RAW_STOP_IF_FAILURE 0x200 /* stop if we encounter a failure */
-+#define FD_RAW_STOP_IF_SUCCESS 0x400 /* stop if command successful */
-+#define FD_RAW_SOFTFAILURE 0x800 /* consider the return value for failure
-+                                * detection too */
-+
-+/* more "out" flags */
-+#define FD_RAW_FAILURE 0x10000 /* command sent to fdc, fdc returned error */
-+#define FD_RAW_HARDFAILURE 0x20000 /* fdc had to be reset, or timed out */
-+
-+      void *data;
-+      char *kernel_data; /* location of data buffer in the kernel */
-+      struct floppy_raw_cmd *next; /* used for chaining of raw cmd's 
-+                                    * within the kernel */
-+      long length; /* in: length of dma transfer. out: remaining bytes */
-+      long phys_length; /* physical length, if different from dma length */
-+      int buffer_length; /* length of allocated buffer */
-+
-+      unsigned char rate;
-+      unsigned char cmd_count;
-+      unsigned char cmd[16];
-+      unsigned char reply_count;
-+      unsigned char reply[16];
-+      int track;
-+      int resultcode;
-+
-+      int reserved1;
-+      int reserved2;
-+};
-+
-+#define FDRAWCMD _IO(2, 0x58)
-+/* send a raw command to the fdc. Structure size not included, because of
-+ * batches */
-+
-+#define FDTWADDLE _IO(2, 0x59)
-+/* flicker motor-on bit before reading a sector. Experimental */
-+
-+
-+#define FDEJECT _IO(2, 0x5a)
-+/* eject the disk */
-+
-+#endif
-diff -Nur lilo-22.5.9-orig/kernel-headers/linux/fs.h lilo-22.5.9/kernel-headers/linux/fs.h
---- lilo-22.5.9-orig/kernel-headers/linux/fs.h 1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/linux/fs.h      2004-07-10 02:59:14.000000000 +0200
-@@ -0,0 +1,1675 @@
-+#ifndef _LINUX_FS_H
-+#define _LINUX_FS_H
-+
-+/*
-+ * This file has definitions for some important file table
-+ * structures etc.
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/linkage.h>
-+#include <linux/limits.h>
-+#include <linux/wait.h>
-+#include <linux/types.h>
-+#include <linux/vfs.h>
-+#include <linux/net.h>
-+#include <linux/kdev_t.h>
-+#include <linux/ioctl.h>
-+#include <linux/list.h>
-+#include <linux/dcache.h>
-+#include <linux/stat.h>
-+#include <linux/cache.h>
-+#include <linux/stddef.h>
-+#include <linux/string.h>
-+
-+#include <asm/atomic.h>
-+#include <asm/bitops.h>
-+
-+struct poll_table_struct;
-+
-+
-+/*
-+ * It's silly to have NR_OPEN bigger than NR_FILE, but you can change
-+ * the file limit at runtime and only root can increase the per-process
-+ * nr_file rlimit, so it's safe to set up a ridiculously high absolute
-+ * upper limit on files-per-process.
-+ *
-+ * Some programs (notably those using select()) may have to be 
-+ * recompiled to take full advantage of the new limits..  
-+ */
-+
-+/* Fixed constants first: */
-+#undef NR_OPEN
-+#define NR_OPEN (1024*1024)   /* Absolute upper limit on fd num */
-+#define INR_OPEN 1024         /* Initial setting for nfile rlimits */
-+
-+#define BLOCK_SIZE_BITS 10
-+#define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
-+
-+/* And dynamically-tunable limits and defaults: */
-+struct files_stat_struct {
-+      int nr_files;           /* read only */
-+      int nr_free_files;      /* read only */
-+      int max_files;          /* tunable */
-+};
-+extern struct files_stat_struct files_stat;
-+
-+struct inodes_stat_t {
-+      int nr_inodes;
-+      int nr_unused;
-+      int dummy[5];
-+};
-+extern struct inodes_stat_t inodes_stat;
-+
-+extern int leases_enable, dir_notify_enable, lease_break_time;
-+
-+#define NR_FILE  8192 /* this can well be larger on a larger system */
-+#define NR_RESERVED_FILES 10 /* reserved for root */
-+#define NR_SUPER 256
-+
-+#define MAY_EXEC 1
-+#define MAY_WRITE 2
-+#define MAY_READ 4
-+
-+#define FMODE_READ 1
-+#define FMODE_WRITE 2
-+
-+#define READ 0
-+#define WRITE 1
-+#define READA 2               /* read-ahead  - don't block if no resources */
-+#define SPECIAL 4     /* For non-blockdevice requests in request queue */
-+
-+#define SEL_IN                1
-+#define SEL_OUT               2
-+#define SEL_EX                4
-+
-+/* public flags for file_system_type */
-+#define FS_REQUIRES_DEV 1 
-+#define FS_NO_DCACHE  2 /* Only dcache the necessary things. */
-+#define FS_NO_PRELIM  4 /* prevent preloading of dentries, even if
-+                         * FS_NO_DCACHE is not set.
-+                         */
-+#define FS_SINGLE     8 /* Filesystem that can have only one superblock */
-+#define FS_NOMOUNT    16 /* Never mount from userland */
-+#define FS_LITTER     32 /* Keeps the tree in dcache */
-+#define FS_ODD_RENAME 32768   /* Temporary stuff; will go away as soon
-+                                * as nfs_rename() will be cleaned up
-+                                */
-+/*
-+ * These are the fs-independent mount-flags: up to 32 flags are supported
-+ */
-+#define MS_RDONLY      1      /* Mount read-only */
-+#define MS_NOSUID      2      /* Ignore suid and sgid bits */
-+#define MS_NODEV       4      /* Disallow access to device special files */
-+#define MS_NOEXEC      8      /* Disallow program execution */
-+#define MS_SYNCHRONOUS        16      /* Writes are synced at once */
-+#define MS_REMOUNT    32      /* Alter flags of a mounted FS */
-+#define MS_MANDLOCK   64      /* Allow mandatory locks on an FS */
-+#define MS_NOATIME    1024    /* Do not update access times. */
-+#define MS_NODIRATIME 2048    /* Do not update directory access times */
-+#define MS_BIND               4096
-+#define MS_MOVE               8192
-+#define MS_REC                16384
-+#define MS_VERBOSE    32768
-+#define MS_ACTIVE     (1<<30)
-+#define MS_NOUSER     (1<<31)
-+
-+/*
-+ * Superblock flags that can be altered by MS_REMOUNT
-+ */
-+#define MS_RMT_MASK   (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_NOATIME|\
-+                       MS_NODIRATIME)
-+
-+/*
-+ * Old magic mount flag and mask
-+ */
-+#define MS_MGC_VAL 0xC0ED0000
-+#define MS_MGC_MSK 0xffff0000
-+
-+/* Inode flags - they have nothing to superblock flags now */
-+
-+#define S_SYNC                1       /* Writes are synced at once */
-+#define S_NOATIME     2       /* Do not update access times */
-+#define S_QUOTA               4       /* Quota initialized for file */
-+#define S_APPEND      8       /* Append-only file */
-+#define S_IMMUTABLE   16      /* Immutable file */
-+#define S_DEAD                32      /* removed, but still open directory */
-+#define S_NOQUOTA     64      /* Inode is not counted to quota */
-+
-+/*
-+ * Note that nosuid etc flags are inode-specific: setting some file-system
-+ * flags just means all the inodes inherit those flags by default. It might be
-+ * possible to override it selectively if you really wanted to with some
-+ * ioctl() that is not currently implemented.
-+ *
-+ * Exception: MS_RDONLY is always applied to the entire file system.
-+ *
-+ * Unfortunately, it is possible to change a filesystems flags with it mounted
-+ * with files in use.  This means that all of the inodes will not have their
-+ * i_flags updated.  Hence, i_flags no longer inherit the superblock mount
-+ * flags, so these have to be checked separately. -- rmk@arm.uk.linux.org
-+ */
-+#define __IS_FLG(inode,flg) ((inode)->i_sb->s_flags & (flg))
-+
-+#define IS_RDONLY(inode) ((inode)->i_sb->s_flags & MS_RDONLY)
-+#define IS_SYNC(inode)                (__IS_FLG(inode, MS_SYNCHRONOUS) || ((inode)->i_flags & S_SYNC))
-+#define IS_MANDLOCK(inode)    __IS_FLG(inode, MS_MANDLOCK)
-+
-+#define IS_QUOTAINIT(inode)   ((inode)->i_flags & S_QUOTA)
-+#define IS_NOQUOTA(inode)     ((inode)->i_flags & S_NOQUOTA)
-+#define IS_APPEND(inode)      ((inode)->i_flags & S_APPEND)
-+#define IS_IMMUTABLE(inode)   ((inode)->i_flags & S_IMMUTABLE)
-+#define IS_NOATIME(inode)     (__IS_FLG(inode, MS_NOATIME) || ((inode)->i_flags & S_NOATIME))
-+#define IS_NODIRATIME(inode)  __IS_FLG(inode, MS_NODIRATIME)
-+
-+#define IS_DEADDIR(inode)     ((inode)->i_flags & S_DEAD)
-+
-+/* the read-only stuff doesn't really belong here, but any other place is
-+   probably as bad and I don't want to create yet another include file. */
-+
-+#define BLKROSET   _IO(0x12,93)       /* set device read-only (0 = read-write) */
-+#define BLKROGET   _IO(0x12,94)       /* get read-only status (0 = read_write) */
-+#define BLKRRPART  _IO(0x12,95)       /* re-read partition table */
-+#define BLKGETSIZE _IO(0x12,96)       /* return device size /512 (long *arg) */
-+#define BLKFLSBUF  _IO(0x12,97)       /* flush buffer cache */
-+#define BLKRASET   _IO(0x12,98)       /* Set read ahead for block device */
-+#define BLKRAGET   _IO(0x12,99)       /* get current read ahead setting */
-+#define BLKFRASET  _IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */
-+#define BLKFRAGET  _IO(0x12,101)/* get filesystem (mm/filemap.c) read-ahead */
-+#define BLKSECTSET _IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */
-+#define BLKSECTGET _IO(0x12,103)/* get max sectors per request (ll_rw_blk.c) */
-+#define BLKSSZGET  _IO(0x12,104)/* get block device sector size */
-+#if 0
-+#define BLKPG      _IO(0x12,105)/* See blkpg.h */
-+#define BLKELVGET  _IOR(0x12,106,sizeof(blkelv_ioctl_arg_t))/* elevator get */
-+#define BLKELVSET  _IOW(0x12,107,sizeof(blkelv_ioctl_arg_t))/* elevator set */
-+/* This was here just to show that the number is taken -
-+   probably all these _IO(0x12,*) ioctls should be moved to blkpg.h. */
-+#endif
-+/* A jump here: 108-111 have been used for various private purposes. */
-+#define BLKBSZGET  _IOR(0x12,112,sizeof(int))
-+#define BLKBSZSET  _IOW(0x12,113,sizeof(int))
-+#define BLKGETSIZE64 _IOR(0x12,114,sizeof(u64))       /* return device size in bytes (u64 *arg) */
-+
-+#define BMAP_IOCTL 1          /* obsolete - kept for compatibility */
-+#define FIBMAP           _IO(0x00,1)  /* bmap access */
-+#define FIGETBSZ   _IO(0x00,2)        /* get the block size used for bmap */
-+
-+#ifdef __KERNEL__
-+
-+#include <asm/semaphore.h>
-+#include <asm/byteorder.h>
-+
-+extern void update_atime (struct inode *);
-+extern void update_mctime (struct inode *);
-+#define UPDATE_ATIME(inode) update_atime (inode)
-+
-+extern void buffer_init(unsigned long);
-+extern void inode_init(unsigned long);
-+extern void mnt_init(unsigned long);
-+extern void files_init(unsigned long mempages);
-+
-+/* bh state bits */
-+enum bh_state_bits {
-+      BH_Uptodate,    /* 1 if the buffer contains valid data */
-+      BH_Dirty,       /* 1 if the buffer is dirty */
-+      BH_Lock,        /* 1 if the buffer is locked */
-+      BH_Req,         /* 0 if the buffer has been invalidated */
-+      BH_Mapped,      /* 1 if the buffer has a disk mapping */
-+      BH_New,         /* 1 if the buffer is new and not yet written out */
-+      BH_Async,       /* 1 if the buffer is under end_buffer_io_async I/O */
-+      BH_Wait_IO,     /* 1 if we should write out this buffer */
-+      BH_Launder,     /* 1 if we can throttle on this buffer */
-+      BH_Attached,    /* 1 if b_inode_buffers is linked into a list */
-+      BH_JBD,         /* 1 if it has an attached journal_head */
-+      BH_Sync,        /* 1 if the buffer is a sync read */
-+
-+      BH_PrivateStart,/* not a state bit, but the first bit available
-+                       * for private allocation by other entities
-+                       */
-+};
-+
-+#define MAX_BUF_PER_PAGE (PAGE_CACHE_SIZE / 512)
-+
-+/*
-+ * Try to keep the most commonly used fields in single cache lines (16
-+ * bytes) to improve performance.  This ordering should be
-+ * particularly beneficial on 32-bit processors.
-+ * 
-+ * We use the first 16 bytes for the data which is used in searches
-+ * over the block hash lists (ie. getblk() and friends).
-+ * 
-+ * The second 16 bytes we use for lru buffer scans, as used by
-+ * sync_buffers() and refill_freelist().  -- sct
-+ */
-+struct buffer_head {
-+      /* First cache line: */
-+      struct buffer_head *b_next;     /* Hash queue list */
-+      unsigned long b_blocknr;        /* block number */
-+      unsigned short b_size;          /* block size */
-+      unsigned short b_list;          /* List that this buffer appears */
-+      kdev_t b_dev;                   /* device (B_FREE = free) */
-+
-+      atomic_t b_count;               /* users using this block */
-+      kdev_t b_rdev;                  /* Real device */
-+      unsigned long b_state;          /* buffer state bitmap (see above) */
-+      unsigned long b_flushtime;      /* Time when (dirty) buffer should be written */
-+
-+      struct buffer_head *b_next_free;/* lru/free list linkage */
-+      struct buffer_head *b_prev_free;/* doubly linked list of buffers */
-+      struct buffer_head *b_this_page;/* circular list of buffers in one page */
-+      struct buffer_head *b_reqnext;  /* request queue */
-+
-+      struct buffer_head **b_pprev;   /* doubly linked list of hash-queue */
-+      char * b_data;                  /* pointer to data block */
-+      struct page *b_page;            /* the page this bh is mapped to */
-+      void (*b_end_io)(struct buffer_head *bh, int uptodate); /* I/O completion */
-+      void *b_private;                /* reserved for b_end_io */
-+
-+      unsigned long b_rsector;        /* Real buffer location on disk */
-+      wait_queue_head_t b_wait;
-+
-+      struct list_head     b_inode_buffers;   /* doubly linked list of inode dirty buffers */
-+};
-+
-+typedef void (bh_end_io_t)(struct buffer_head *bh, int uptodate);
-+void init_buffer(struct buffer_head *, bh_end_io_t *, void *);
-+
-+#define __buffer_state(bh, state)     (((bh)->b_state & (1UL << BH_##state)) != 0)
-+
-+#define buffer_uptodate(bh)   __buffer_state(bh,Uptodate)
-+#define buffer_dirty(bh)      __buffer_state(bh,Dirty)
-+#define buffer_locked(bh)     __buffer_state(bh,Lock)
-+#define buffer_req(bh)                __buffer_state(bh,Req)
-+#define buffer_mapped(bh)     __buffer_state(bh,Mapped)
-+#define buffer_new(bh)                __buffer_state(bh,New)
-+#define buffer_async(bh)      __buffer_state(bh,Async)
-+#define buffer_launder(bh)    __buffer_state(bh,Launder)
-+
-+#define bh_offset(bh)         ((unsigned long)(bh)->b_data & ~PAGE_MASK)
-+
-+extern void set_bh_page(struct buffer_head *bh, struct page *page, unsigned long offset);
-+
-+#define touch_buffer(bh)      mark_page_accessed(bh->b_page)
-+
-+
-+#include <linux/pipe_fs_i.h>
-+#include <linux/minix_fs_i.h>
-+#include <linux/ext2_fs_i.h>
-+#include <linux/ext3_fs_i.h>
-+#include <linux/hpfs_fs_i.h>
-+#include <linux/ntfs_fs_i.h>
-+#include <linux/msdos_fs_i.h>
-+#include <linux/umsdos_fs_i.h>
-+#include <linux/iso_fs_i.h>
-+#include <linux/nfs_fs_i.h>
-+#include <linux/sysv_fs_i.h>
-+#include <linux/affs_fs_i.h>
-+#include <linux/ufs_fs_i.h>
-+#include <linux/efs_fs_i.h>
-+#include <linux/coda_fs_i.h>
-+#include <linux/romfs_fs_i.h>
-+#include <linux/shmem_fs.h>
-+#include <linux/smb_fs_i.h>
-+#include <linux/hfs_fs_i.h>
-+#include <linux/adfs_fs_i.h>
-+#include <linux/qnx4_fs_i.h>
-+#include <linux/reiserfs_fs_i.h>
-+#include <linux/bfs_fs_i.h>
-+#include <linux/udf_fs_i.h>
-+#include <linux/ncp_fs_i.h>
-+#include <linux/proc_fs_i.h>
-+#include <linux/usbdev_fs_i.h>
-+#include <linux/jffs2_fs_i.h>
-+#include <linux/cramfs_fs_sb.h>
-+
-+/*
-+ * Attribute flags.  These should be or-ed together to figure out what
-+ * has been changed!
-+ */
-+#define ATTR_MODE     1
-+#define ATTR_UID      2
-+#define ATTR_GID      4
-+#define ATTR_SIZE     8
-+#define ATTR_ATIME    16
-+#define ATTR_MTIME    32
-+#define ATTR_CTIME    64
-+#define ATTR_ATIME_SET        128
-+#define ATTR_MTIME_SET        256
-+#define ATTR_FORCE    512     /* Not a change, but a change it */
-+#define ATTR_ATTR_FLAG        1024
-+
-+/*
-+ * This is the Inode Attributes structure, used for notify_change().  It
-+ * uses the above definitions as flags, to know which values have changed.
-+ * Also, in this manner, a Filesystem can look at only the values it cares
-+ * about.  Basically, these are the attributes that the VFS layer can
-+ * request to change from the FS layer.
-+ *
-+ * Derek Atkins <warlord@MIT.EDU> 94-10-20
-+ */
-+struct iattr {
-+      unsigned int    ia_valid;
-+      umode_t         ia_mode;
-+      uid_t           ia_uid;
-+      gid_t           ia_gid;
-+      loff_t          ia_size;
-+      time_t          ia_atime;
-+      time_t          ia_mtime;
-+      time_t          ia_ctime;
-+      unsigned int    ia_attr_flags;
-+};
-+
-+/*
-+ * This is the inode attributes flag definitions
-+ */
-+#define ATTR_FLAG_SYNCRONOUS  1       /* Syncronous write */
-+#define ATTR_FLAG_NOATIME     2       /* Don't update atime */
-+#define ATTR_FLAG_APPEND      4       /* Append-only file */
-+#define ATTR_FLAG_IMMUTABLE   8       /* Immutable file */
-+#define ATTR_FLAG_NODIRATIME  16      /* Don't update atime for directory */
-+
-+/*
-+ * Includes for diskquotas and mount structures.
-+ */
-+#include <linux/quota.h>
-+#include <linux/mount.h>
-+
-+/*
-+ * oh the beauties of C type declarations.
-+ */
-+struct page;
-+struct address_space;
-+struct kiobuf;
-+
-+struct address_space_operations {
-+      int (*writepage)(struct page *);
-+      int (*readpage)(struct file *, struct page *);
-+      int (*sync_page)(struct page *);
-+      /*
-+       * ext3 requires that a successful prepare_write() call be followed
-+       * by a commit_write() call - they must be balanced
-+       */
-+      int (*prepare_write)(struct file *, struct page *, unsigned, unsigned);
-+      int (*commit_write)(struct file *, struct page *, unsigned, unsigned);
-+      /* Unfortunately this kludge is needed for FIBMAP. Don't use it */
-+      int (*bmap)(struct address_space *, long);
-+      int (*flushpage) (struct page *, unsigned long);
-+      int (*releasepage) (struct page *, int);
-+#define KERNEL_HAS_O_DIRECT /* this is for modules out of the kernel */
-+      int (*direct_IO)(int, struct inode *, struct kiobuf *, unsigned long, int);
-+#define KERNEL_HAS_DIRECT_FILEIO /* Unfortunate kludge due to lack of foresight */
-+      int (*direct_fileIO)(int, struct file *, struct kiobuf *, unsigned long, int);
-+      void (*removepage)(struct page *); /* called when page gets removed from the inode */
-+};
-+
-+struct address_space {
-+      struct list_head        clean_pages;    /* list of clean pages */
-+      struct list_head        dirty_pages;    /* list of dirty pages */
-+      struct list_head        locked_pages;   /* list of locked pages */
-+      unsigned long           nrpages;        /* number of total pages */
-+      struct address_space_operations *a_ops; /* methods */
-+      struct inode            *host;          /* owner: inode, block_device */
-+      struct vm_area_struct   *i_mmap;        /* list of private mappings */
-+      struct vm_area_struct   *i_mmap_shared; /* list of shared mappings */
-+      spinlock_t              i_shared_lock;  /* and spinlock protecting it */
-+      int                     gfp_mask;       /* how to allocate the pages */
-+};
-+
-+struct char_device {
-+      struct list_head        hash;
-+      atomic_t                count;
-+      dev_t                   dev;
-+      atomic_t                openers;
-+      struct semaphore        sem;
-+};
-+
-+struct block_device {
-+      struct list_head        bd_hash;
-+      atomic_t                bd_count;
-+      struct inode *          bd_inode;
-+      dev_t                   bd_dev;  /* not a kdev_t - it's a search key */
-+      int                     bd_openers;
-+      const struct block_device_operations *bd_op;
-+      struct semaphore        bd_sem; /* open/close mutex */
-+      struct list_head        bd_inodes;
-+};
-+
-+struct inode {
-+      struct list_head        i_hash;
-+      struct list_head        i_list;
-+      struct list_head        i_dentry;
-+      
-+      struct list_head        i_dirty_buffers;
-+      struct list_head        i_dirty_data_buffers;
-+
-+      unsigned long           i_ino;
-+      atomic_t                i_count;
-+      kdev_t                  i_dev;
-+      umode_t                 i_mode;
-+      nlink_t                 i_nlink;
-+      uid_t                   i_uid;
-+      gid_t                   i_gid;
-+      kdev_t                  i_rdev;
-+      loff_t                  i_size;
-+      time_t                  i_atime;
-+      time_t                  i_mtime;
-+      time_t                  i_ctime;
-+      unsigned int            i_blkbits;
-+      unsigned long           i_blksize;
-+      unsigned long           i_blocks;
-+      unsigned long           i_version;
-+      unsigned short          i_bytes;
-+      struct semaphore        i_sem;
-+      struct rw_semaphore     i_alloc_sem;
-+      struct semaphore        i_zombie;
-+      struct inode_operations *i_op;
-+      struct file_operations  *i_fop; /* former ->i_op->default_file_ops */
-+      struct super_block      *i_sb;
-+      wait_queue_head_t       i_wait;
-+      struct file_lock        *i_flock;
-+      struct address_space    *i_mapping;
-+      struct address_space    i_data;
-+      struct dquot            *i_dquot[MAXQUOTAS];
-+      /* These three should probably be a union */
-+      struct list_head        i_devices;
-+      struct pipe_inode_info  *i_pipe;
-+      struct block_device     *i_bdev;
-+      struct char_device      *i_cdev;
-+
-+      unsigned long           i_dnotify_mask; /* Directory notify events */
-+      struct dnotify_struct   *i_dnotify; /* for directory notifications */
-+
-+      unsigned long           i_state;
-+
-+      unsigned int            i_flags;
-+      unsigned char           i_sock;
-+
-+      atomic_t                i_writecount;
-+      unsigned int            i_attr_flags;
-+      __u32                   i_generation;
-+      union {
-+              struct minix_inode_info         minix_i;
-+              struct ext2_inode_info          ext2_i;
-+              struct ext3_inode_info          ext3_i;
-+              struct hpfs_inode_info          hpfs_i;
-+              struct ntfs_inode_info          ntfs_i;
-+              struct msdos_inode_info         msdos_i;
-+              struct umsdos_inode_info        umsdos_i;
-+              struct iso_inode_info           isofs_i;
-+              struct nfs_inode_info           nfs_i;
-+              struct sysv_inode_info          sysv_i;
-+              struct affs_inode_info          affs_i;
-+              struct ufs_inode_info           ufs_i;
-+              struct efs_inode_info           efs_i;
-+              struct romfs_inode_info         romfs_i;
-+              struct shmem_inode_info         shmem_i;
-+              struct coda_inode_info          coda_i;
-+              struct smb_inode_info           smbfs_i;
-+              struct hfs_inode_info           hfs_i;
-+              struct adfs_inode_info          adfs_i;
-+              struct qnx4_inode_info          qnx4_i;
-+              struct reiserfs_inode_info      reiserfs_i;
-+              struct bfs_inode_info           bfs_i;
-+              struct udf_inode_info           udf_i;
-+              struct ncp_inode_info           ncpfs_i;
-+              struct proc_inode_info          proc_i;
-+              struct socket                   socket_i;
-+              struct usbdev_inode_info        usbdev_i;
-+              struct jffs2_inode_info         jffs2_i;
-+              void                            *generic_ip;
-+      } u;
-+};
-+
-+static inline void inode_add_bytes(struct inode *inode, loff_t bytes)
-+{
-+      inode->i_blocks += bytes >> 9;
-+      bytes &= 511;
-+      inode->i_bytes += bytes;
-+      if (inode->i_bytes >= 512) {
-+              inode->i_blocks++;
-+              inode->i_bytes -= 512;
-+      }
-+}
-+
-+static inline void inode_sub_bytes(struct inode *inode, loff_t bytes)
-+{
-+      inode->i_blocks -= bytes >> 9;
-+      bytes &= 511;
-+      if (inode->i_bytes < bytes) {
-+              inode->i_blocks--;
-+              inode->i_bytes += 512;
-+      }
-+      inode->i_bytes -= bytes;
-+}
-+
-+static inline loff_t inode_get_bytes(struct inode *inode)
-+{
-+      return (((loff_t)inode->i_blocks) << 9) + inode->i_bytes;
-+}
-+
-+static inline void inode_set_bytes(struct inode *inode, loff_t bytes)
-+{
-+      inode->i_blocks = bytes >> 9;
-+      inode->i_bytes = bytes & 511;
-+}
-+
-+struct fown_struct {
-+      int pid;                /* pid or -pgrp where SIGIO should be sent */
-+      uid_t uid, euid;        /* uid/euid of process setting the owner */
-+      int signum;             /* posix.1b rt signal to be delivered on IO */
-+};
-+
-+struct file {
-+      struct list_head        f_list;
-+      struct dentry           *f_dentry;
-+      struct vfsmount         *f_vfsmnt;
-+      struct file_operations  *f_op;
-+      atomic_t                f_count;
-+      unsigned int            f_flags;
-+      mode_t                  f_mode;
-+      loff_t                  f_pos;
-+      unsigned long           f_reada, f_ramax, f_raend, f_ralen, f_rawin;
-+      struct fown_struct      f_owner;
-+      unsigned int            f_uid, f_gid;
-+      int                     f_error;
-+
-+      unsigned long           f_version;
-+
-+      /* needed for tty driver, and maybe others */
-+      void                    *private_data;
-+
-+      /* preallocated helper kiobuf to speedup O_DIRECT */
-+      struct kiobuf           *f_iobuf;
-+      long                    f_iobuf_lock;
-+};
-+extern spinlock_t files_lock;
-+#define file_list_lock() spin_lock(&files_lock);
-+#define file_list_unlock() spin_unlock(&files_lock);
-+
-+#define get_file(x)   atomic_inc(&(x)->f_count)
-+#define file_count(x) atomic_read(&(x)->f_count)
-+
-+extern int init_private_file(struct file *, struct dentry *, int);
-+
-+#define       MAX_NON_LFS     ((1UL<<31) - 1)
-+
-+/* Page cache limit. The filesystems should put that into their s_maxbytes 
-+   limits, otherwise bad things can happen in VM. */ 
-+#if BITS_PER_LONG==32
-+#define MAX_LFS_FILESIZE      (((u64)PAGE_CACHE_SIZE << (BITS_PER_LONG-1))-1) 
-+#elif BITS_PER_LONG==64
-+#define MAX_LFS_FILESIZE      0x7fffffffffffffff
-+#endif
-+
-+#define FL_POSIX      1
-+#define FL_FLOCK      2
-+#define FL_BROKEN     4       /* broken flock() emulation */
-+#define FL_ACCESS     8       /* for processes suspended by mandatory locking */
-+#define FL_LOCKD      16      /* lock held by rpc.lockd */
-+#define FL_LEASE      32      /* lease held on this file */
-+
-+/*
-+ * The POSIX file lock owner is determined by
-+ * the "struct files_struct" in the thread group
-+ * (or NULL for no owner - BSD locks).
-+ *
-+ * Lockd stuffs a "host" pointer into this.
-+ */
-+typedef struct files_struct *fl_owner_t;
-+
-+struct file_lock {
-+      struct file_lock *fl_next;      /* singly linked list for this inode  */
-+      struct list_head fl_link;       /* doubly linked list of all locks */
-+      struct list_head fl_block;      /* circular list of blocked processes */
-+      fl_owner_t fl_owner;
-+      unsigned int fl_pid;
-+      wait_queue_head_t fl_wait;
-+      struct file *fl_file;
-+      unsigned char fl_flags;
-+      unsigned char fl_type;
-+      loff_t fl_start;
-+      loff_t fl_end;
-+
-+      void (*fl_notify)(struct file_lock *);  /* unblock callback */
-+      void (*fl_insert)(struct file_lock *);  /* lock insertion callback */
-+      void (*fl_remove)(struct file_lock *);  /* lock removal callback */
-+
-+      struct fasync_struct *  fl_fasync; /* for lease break notifications */
-+      unsigned long fl_break_time;    /* for nonblocking lease breaks */
-+
-+      union {
-+              struct nfs_lock_info    nfs_fl;
-+      } fl_u;
-+};
-+
-+/* The following constant reflects the upper bound of the file/locking space */
-+#ifndef OFFSET_MAX
-+#define INT_LIMIT(x)  (~((x)1 << (sizeof(x)*8 - 1)))
-+#define OFFSET_MAX    INT_LIMIT(loff_t)
-+#define OFFT_OFFSET_MAX       INT_LIMIT(off_t)
-+#endif
-+
-+extern struct list_head file_lock_list;
-+
-+#include <linux/fcntl.h>
-+
-+extern int fcntl_getlk(unsigned int, struct flock *);
-+extern int fcntl_setlk(unsigned int, unsigned int, struct flock *);
-+
-+extern int fcntl_getlk64(unsigned int, struct flock64 *);
-+extern int fcntl_setlk64(unsigned int, unsigned int, struct flock64 *);
-+
-+/* fs/locks.c */
-+extern void locks_init_lock(struct file_lock *);
-+extern void locks_copy_lock(struct file_lock *, struct file_lock *);
-+extern void locks_remove_posix(struct file *, fl_owner_t);
-+extern void locks_remove_flock(struct file *);
-+extern struct file_lock *posix_test_lock(struct file *, struct file_lock *);
-+extern int posix_lock_file(struct file *, struct file_lock *, unsigned int);
-+extern void posix_block_lock(struct file_lock *, struct file_lock *);
-+extern void posix_unblock_lock(struct file_lock *);
-+extern int posix_locks_deadlock(struct file_lock *, struct file_lock *);
-+extern int __get_lease(struct inode *inode, unsigned int flags);
-+extern time_t lease_get_mtime(struct inode *);
-+extern int lock_may_read(struct inode *, loff_t start, unsigned long count);
-+extern int lock_may_write(struct inode *, loff_t start, unsigned long count);
-+extern void steal_locks(fl_owner_t from);
-+
-+struct fasync_struct {
-+      int     magic;
-+      int     fa_fd;
-+      struct  fasync_struct   *fa_next; /* singly linked list */
-+      struct  file            *fa_file;
-+};
-+
-+#define FASYNC_MAGIC 0x4601
-+
-+/* SMP safe fasync helpers: */
-+extern int fasync_helper(int, struct file *, int, struct fasync_struct **);
-+/* can be called from interrupts */
-+extern void kill_fasync(struct fasync_struct **, int, int);
-+/* only for net: no internal synchronization */
-+extern void __kill_fasync(struct fasync_struct *, int, int);
-+
-+struct nameidata {
-+      struct dentry *dentry;
-+      struct vfsmount *mnt;
-+      struct qstr last;
-+      unsigned int flags;
-+      int last_type;
-+};
-+
-+/*
-+ *    Umount options
-+ */
-+
-+#define MNT_FORCE     0x00000001      /* Attempt to forcibily umount */
-+#define MNT_DETACH    0x00000002      /* Just detach from the tree */
-+
-+#include <linux/minix_fs_sb.h>
-+#include <linux/ext2_fs_sb.h>
-+#include <linux/ext3_fs_sb.h>
-+#include <linux/hpfs_fs_sb.h>
-+#include <linux/ntfs_fs_sb.h>
-+#include <linux/msdos_fs_sb.h>
-+#include <linux/iso_fs_sb.h>
-+#include <linux/nfs_fs_sb.h>
-+#include <linux/sysv_fs_sb.h>
-+#include <linux/affs_fs_sb.h>
-+#include <linux/ufs_fs_sb.h>
-+#include <linux/efs_fs_sb.h>
-+#include <linux/romfs_fs_sb.h>
-+#include <linux/smb_fs_sb.h>
-+#include <linux/hfs_fs_sb.h>
-+#include <linux/adfs_fs_sb.h>
-+#include <linux/qnx4_fs_sb.h>
-+#include <linux/reiserfs_fs_sb.h>
-+#include <linux/bfs_fs_sb.h>
-+#include <linux/udf_fs_sb.h>
-+#include <linux/ncp_fs_sb.h>
-+#include <linux/usbdev_fs_sb.h>
-+#include <linux/cramfs_fs_sb.h>
-+#include <linux/jffs2_fs_sb.h>
-+
-+extern struct list_head super_blocks;
-+extern spinlock_t sb_lock;
-+
-+#define sb_entry(list)        list_entry((list), struct super_block, s_list)
-+#define S_BIAS (1<<30)
-+struct super_block {
-+      struct list_head        s_list;         /* Keep this first */
-+      kdev_t                  s_dev;
-+      unsigned long           s_blocksize;
-+      unsigned char           s_blocksize_bits;
-+      unsigned char           s_dirt;
-+      unsigned long long      s_maxbytes;     /* Max file size */
-+      struct file_system_type *s_type;
-+      struct super_operations *s_op;
-+      struct dquot_operations *dq_op;
-+      struct quotactl_ops     *s_qcop;
-+      unsigned long           s_flags;
-+      unsigned long           s_magic;
-+      struct dentry           *s_root;
-+      struct rw_semaphore     s_umount;
-+      struct semaphore        s_lock;
-+      int                     s_count;
-+      atomic_t                s_active;
-+
-+      struct list_head        s_dirty;        /* dirty inodes */
-+      struct list_head        s_locked_inodes;/* inodes being synced */
-+      struct list_head        s_files;
-+
-+      struct block_device     *s_bdev;
-+      struct list_head        s_instances;
-+      struct quota_info       s_dquot;        /* Diskquota specific options */
-+
-+      union {
-+              struct minix_sb_info    minix_sb;
-+              struct ext2_sb_info     ext2_sb;
-+              struct ext3_sb_info     ext3_sb;
-+              struct hpfs_sb_info     hpfs_sb;
-+              struct ntfs_sb_info     ntfs_sb;
-+              struct msdos_sb_info    msdos_sb;
-+              struct isofs_sb_info    isofs_sb;
-+              struct nfs_sb_info      nfs_sb;
-+              struct sysv_sb_info     sysv_sb;
-+              struct affs_sb_info     affs_sb;
-+              struct ufs_sb_info      ufs_sb;
-+              struct efs_sb_info      efs_sb;
-+              struct shmem_sb_info    shmem_sb;
-+              struct romfs_sb_info    romfs_sb;
-+              struct smb_sb_info      smbfs_sb;
-+              struct hfs_sb_info      hfs_sb;
-+              struct adfs_sb_info     adfs_sb;
-+              struct qnx4_sb_info     qnx4_sb;
-+              struct reiserfs_sb_info reiserfs_sb;
-+              struct bfs_sb_info      bfs_sb;
-+              struct udf_sb_info      udf_sb;
-+              struct ncp_sb_info      ncpfs_sb;
-+              struct usbdev_sb_info   usbdevfs_sb;
-+              struct jffs2_sb_info    jffs2_sb;
-+              struct cramfs_sb_info   cramfs_sb;
-+              void                    *generic_sbp;
-+      } u;
-+      /*
-+       * The next field is for VFS *only*. No filesystems have any business
-+       * even looking at it. You had been warned.
-+       */
-+      struct semaphore s_vfs_rename_sem;      /* Kludge */
-+
-+      /* The next field is used by knfsd when converting a (inode number based)
-+       * file handle into a dentry. As it builds a path in the dcache tree from
-+       * the bottom up, there may for a time be a subpath of dentrys which is not
-+       * connected to the main tree.  This semaphore ensure that there is only ever
-+       * one such free path per filesystem.  Note that unconnected files (or other
-+       * non-directories) are allowed, but not unconnected diretories.
-+       */
-+      struct semaphore s_nfsd_free_path_sem;
-+};
-+
-+/*
-+ * VFS helper functions..
-+ */
-+extern int vfs_create(struct inode *, struct dentry *, int);
-+extern int vfs_mkdir(struct inode *, struct dentry *, int);
-+extern int vfs_mknod(struct inode *, struct dentry *, int, dev_t);
-+extern int vfs_symlink(struct inode *, struct dentry *, const char *);
-+extern int vfs_link(struct dentry *, struct inode *, struct dentry *);
-+extern int vfs_rmdir(struct inode *, struct dentry *);
-+extern int vfs_unlink(struct inode *, struct dentry *);
-+extern int vfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *);
-+
-+/*
-+ * File types
-+ */
-+#define DT_UNKNOWN    0
-+#define DT_FIFO               1
-+#define DT_CHR                2
-+#define DT_DIR                4
-+#define DT_BLK                6
-+#define DT_REG                8
-+#define DT_LNK                10
-+#define DT_SOCK               12
-+#define DT_WHT                14
-+
-+/*
-+ * This is the "filldir" function type, used by readdir() to let
-+ * the kernel specify what kind of dirent layout it wants to have.
-+ * This allows the kernel to read directories into kernel space or
-+ * to have different dirent layouts depending on the binary type.
-+ */
-+typedef int (*filldir_t)(void *, const char *, int, loff_t, ino_t, unsigned);
-+
-+struct block_device_operations {
-+      int (*open) (struct inode *, struct file *);
-+      int (*release) (struct inode *, struct file *);
-+      int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long);
-+      int (*check_media_change) (kdev_t);
-+      int (*revalidate) (kdev_t);
-+      struct module *owner;
-+};
-+
-+/*
-+ * NOTE:
-+ * read, write, poll, fsync, readv, writev can be called
-+ *   without the big kernel lock held in all filesystems.
-+ */
-+struct file_operations {
-+      struct module *owner;
-+      loff_t (*llseek) (struct file *, loff_t, int);
-+      ssize_t (*read) (struct file *, char *, size_t, loff_t *);
-+      ssize_t (*write) (struct file *, const char *, size_t, loff_t *);
-+      int (*readdir) (struct file *, void *, filldir_t);
-+      unsigned int (*poll) (struct file *, struct poll_table_struct *);
-+      int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
-+      int (*mmap) (struct file *, struct vm_area_struct *);
-+      int (*open) (struct inode *, struct file *);
-+      int (*flush) (struct file *);
-+      int (*release) (struct inode *, struct file *);
-+      int (*fsync) (struct file *, struct dentry *, int datasync);
-+      int (*fasync) (int, struct file *, int);
-+      int (*lock) (struct file *, int, struct file_lock *);
-+      ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *);
-+      ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *);
-+      ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
-+      unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
-+};
-+
-+struct inode_operations {
-+      int (*create) (struct inode *,struct dentry *,int);
-+      struct dentry * (*lookup) (struct inode *,struct dentry *);
-+      int (*link) (struct dentry *,struct inode *,struct dentry *);
-+      int (*unlink) (struct inode *,struct dentry *);
-+      int (*symlink) (struct inode *,struct dentry *,const char *);
-+      int (*mkdir) (struct inode *,struct dentry *,int);
-+      int (*rmdir) (struct inode *,struct dentry *);
-+      int (*mknod) (struct inode *,struct dentry *,int,int);
-+      int (*rename) (struct inode *, struct dentry *,
-+                      struct inode *, struct dentry *);
-+      int (*readlink) (struct dentry *, char *,int);
-+      int (*follow_link) (struct dentry *, struct nameidata *);
-+      void (*truncate) (struct inode *);
-+      int (*permission) (struct inode *, int);
-+      int (*revalidate) (struct dentry *);
-+      int (*setattr) (struct dentry *, struct iattr *);
-+      int (*getattr) (struct dentry *, struct iattr *);
-+      int (*setxattr) (struct dentry *, const char *, void *, size_t, int);
-+      ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
-+      ssize_t (*listxattr) (struct dentry *, char *, size_t);
-+      int (*removexattr) (struct dentry *, const char *);
-+};
-+
-+struct seq_file;
-+
-+/*
-+ * NOTE: write_inode, delete_inode, clear_inode, put_inode can be called
-+ * without the big kernel lock held in all filesystems.
-+ */
-+struct super_operations {
-+      struct inode *(*alloc_inode)(struct super_block *sb);
-+      void (*destroy_inode)(struct inode *);
-+
-+      void (*read_inode) (struct inode *);
-+  
-+      /* reiserfs kludge.  reiserfs needs 64 bits of information to
-+      ** find an inode.  We are using the read_inode2 call to get
-+      ** that information.  We don't like this, and are waiting on some
-+      ** VFS changes for the real solution.
-+      ** iget4 calls read_inode2, iff it is defined
-+      */
-+      void (*read_inode2) (struct inode *, void *) ;
-+      void (*dirty_inode) (struct inode *);
-+      void (*write_inode) (struct inode *, int);
-+      void (*put_inode) (struct inode *);
-+      void (*delete_inode) (struct inode *);
-+      void (*put_super) (struct super_block *);
-+      void (*write_super) (struct super_block *);
-+      int (*sync_fs) (struct super_block *);
-+      void (*write_super_lockfs) (struct super_block *);
-+      void (*unlockfs) (struct super_block *);
-+      int (*statfs) (struct super_block *, struct statfs *);
-+      int (*remount_fs) (struct super_block *, int *, char *);
-+      void (*clear_inode) (struct inode *);
-+      void (*umount_begin) (struct super_block *);
-+
-+      /* Following are for knfsd to interact with "interesting" filesystems
-+       * Currently just reiserfs, but possibly FAT and others later
-+       *
-+       * fh_to_dentry is given a filehandle fragement with length, and a type flag
-+       *   and must return a dentry for the referenced object or, if "parent" is
-+       *   set, a dentry for the parent of the object.
-+       *   If a dentry cannot be found, a "root" dentry should be created and
-+       *   flaged as DCACHE_NFSD_DISCONNECTED. nfsd_iget is an example implementation.
-+       *
-+       * dentry_to_fh is given a dentry and must generate the filesys specific
-+       *   part of the file handle.  Available length is passed in *lenp and used
-+       *   length should be returned therein.
-+       *   If need_parent is set, then dentry_to_fh should encode sufficient information
-+       *   to find the (current) parent.
-+       *   dentry_to_fh should return a 1byte "type" which will be passed back in
-+       *   the fhtype arguement to fh_to_dentry.  Type of 0 is reserved.
-+       *   If filesystem was exportable before the introduction of fh_to_dentry,
-+       *   types 1 and 2 should be used is that same way as the generic code.
-+       *   Type 255 means error.
-+       *
-+       * Lengths are in units of 4bytes, not bytes.
-+       */
-+      struct dentry * (*fh_to_dentry)(struct super_block *sb, __u32 *fh, int len, int fhtype, int parent);
-+      int (*dentry_to_fh)(struct dentry *, __u32 *fh, int *lenp, int need_parent);
-+      int (*show_options)(struct seq_file *, struct vfsmount *);
-+};
-+
-+/* Inode state bits.. */
-+#define I_DIRTY_SYNC          1 /* Not dirty enough for O_DATASYNC */
-+#define I_DIRTY_DATASYNC      2 /* Data-related inode changes pending */
-+#define I_DIRTY_PAGES         4 /* Data-related inode changes pending */
-+#define I_LOCK                        8
-+#define I_FREEING             16
-+#define I_CLEAR                       32
-+
-+#define I_DIRTY (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES)
-+
-+extern void __mark_inode_dirty(struct inode *, int);
-+static inline void mark_inode_dirty(struct inode *inode)
-+{
-+      __mark_inode_dirty(inode, I_DIRTY);
-+}
-+
-+static inline void mark_inode_dirty_sync(struct inode *inode)
-+{
-+      __mark_inode_dirty(inode, I_DIRTY_SYNC);
-+}
-+
-+static inline void mark_inode_dirty_pages(struct inode *inode)
-+{
-+      __mark_inode_dirty(inode, I_DIRTY_PAGES);
-+}
-+
-+struct file_system_type {
-+      const char *name;
-+      int fs_flags;
-+      struct super_block *(*read_super) (struct super_block *, void *, int);
-+      struct module *owner;
-+      struct file_system_type * next;
-+      struct list_head fs_supers;
-+};
-+
-+#define DECLARE_FSTYPE(var,type,read,flags) \
-+struct file_system_type var = { \
-+      name:           type, \
-+      read_super:     read, \
-+      fs_flags:       flags, \
-+      owner:          THIS_MODULE, \
-+}
-+
-+#define DECLARE_FSTYPE_DEV(var,type,read) \
-+      DECLARE_FSTYPE(var,type,read,FS_REQUIRES_DEV)
-+
-+/* Alas, no aliases. Too much hassle with bringing module.h everywhere */
-+#define fops_get(fops) \
-+      (((fops) && (fops)->owner)      \
-+              ? ( try_inc_mod_count((fops)->owner) ? (fops) : NULL ) \
-+              : (fops))
-+
-+#define fops_put(fops) \
-+do {  \
-+      if ((fops) && (fops)->owner) \
-+              __MOD_DEC_USE_COUNT((fops)->owner);     \
-+} while(0)
-+
-+extern int register_filesystem(struct file_system_type *);
-+extern int unregister_filesystem(struct file_system_type *);
-+extern struct vfsmount *kern_mount(struct file_system_type *);
-+extern int may_umount(struct vfsmount *);
-+extern long do_mount(char *, char *, char *, unsigned long, void *);
-+
-+#define kern_umount mntput
-+
-+extern int vfs_statfs(struct super_block *, struct statfs *);
-+
-+/* Return value for VFS lock functions - tells locks.c to lock conventionally
-+ * REALLY kosha for root NFS and nfs_lock
-+ */ 
-+#define LOCK_USE_CLNT 1
-+
-+#define FLOCK_VERIFY_READ  1
-+#define FLOCK_VERIFY_WRITE 2
-+
-+extern int locks_mandatory_locked(struct inode *);
-+extern int locks_mandatory_area(int, struct inode *, struct file *, loff_t, size_t);
-+
-+/*
-+ * Candidates for mandatory locking have the setgid bit set
-+ * but no group execute bit -  an otherwise meaningless combination.
-+ */
-+#define MANDATORY_LOCK(inode) \
-+      (IS_MANDLOCK(inode) && ((inode)->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID)
-+
-+static inline int locks_verify_locked(struct inode *inode)
-+{
-+      if (MANDATORY_LOCK(inode))
-+              return locks_mandatory_locked(inode);
-+      return 0;
-+}
-+
-+static inline int locks_verify_area(int read_write, struct inode *inode,
-+                                  struct file *filp, loff_t offset,
-+                                  size_t count)
-+{
-+      if (inode->i_flock && MANDATORY_LOCK(inode))
-+              return locks_mandatory_area(read_write, inode, filp, offset, count);
-+      return 0;
-+}
-+
-+static inline int locks_verify_truncate(struct inode *inode,
-+                                  struct file *filp,
-+                                  loff_t size)
-+{
-+      if (inode->i_flock && MANDATORY_LOCK(inode))
-+              return locks_mandatory_area(
-+                      FLOCK_VERIFY_WRITE, inode, filp,
-+                      size < inode->i_size ? size : inode->i_size,
-+                      (size < inode->i_size ? inode->i_size - size
-+                       : size - inode->i_size)
-+              );
-+      return 0;
-+}
-+
-+static inline int get_lease(struct inode *inode, unsigned int mode)
-+{
-+      if (inode->i_flock)
-+              return __get_lease(inode, mode);
-+      return 0;
-+}
-+
-+/* fs/open.c */
-+
-+asmlinkage long sys_open(const char *, int, int);
-+asmlinkage long sys_close(unsigned int);      /* yes, it's really unsigned */
-+extern int do_truncate(struct dentry *, loff_t start);
-+
-+extern struct file *filp_open(const char *, int, int);
-+extern struct file * dentry_open(struct dentry *, struct vfsmount *, int);
-+extern int filp_close(struct file *, fl_owner_t id);
-+extern char * getname(const char *);
-+
-+/* fs/dcache.c */
-+extern void vfs_caches_init(unsigned long);
-+
-+#define __getname()   kmem_cache_alloc(names_cachep, SLAB_KERNEL)
-+#define putname(name) kmem_cache_free(names_cachep, (void *)(name))
-+
-+enum {BDEV_FILE, BDEV_SWAP, BDEV_FS, BDEV_RAW};
-+extern int register_blkdev(unsigned int, const char *, struct block_device_operations *);
-+extern int unregister_blkdev(unsigned int, const char *);
-+extern struct block_device *bdget(dev_t);
-+extern int bd_acquire(struct inode *inode);
-+extern void bd_forget(struct inode *inode);
-+extern void bdput(struct block_device *);
-+extern struct char_device *cdget(dev_t);
-+extern void cdput(struct char_device *);
-+extern int blkdev_open(struct inode *, struct file *);
-+extern int blkdev_close(struct inode *, struct file *);
-+extern struct file_operations def_blk_fops;
-+extern struct address_space_operations def_blk_aops;
-+extern struct file_operations def_fifo_fops;
-+extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long);
-+extern int blkdev_get(struct block_device *, mode_t, unsigned, int);
-+extern int blkdev_put(struct block_device *, int);
-+
-+/* fs/devices.c */
-+extern const struct block_device_operations *get_blkfops(unsigned int);
-+extern int register_chrdev(unsigned int, const char *, struct file_operations *);
-+extern int unregister_chrdev(unsigned int, const char *);
-+extern int chrdev_open(struct inode *, struct file *);
-+extern const char * bdevname(kdev_t);
-+extern const char * cdevname(kdev_t);
-+extern const char * kdevname(kdev_t);
-+extern void init_special_inode(struct inode *, umode_t, int);
-+
-+/* Invalid inode operations -- fs/bad_inode.c */
-+extern void make_bad_inode(struct inode *);
-+extern int is_bad_inode(struct inode *);
-+
-+extern struct file_operations read_fifo_fops;
-+extern struct file_operations write_fifo_fops;
-+extern struct file_operations rdwr_fifo_fops;
-+extern struct file_operations read_pipe_fops;
-+extern struct file_operations write_pipe_fops;
-+extern struct file_operations rdwr_pipe_fops;
-+
-+extern int fs_may_remount_ro(struct super_block *);
-+
-+extern int FASTCALL(try_to_free_buffers(struct page *, unsigned int));
-+extern void refile_buffer(struct buffer_head * buf);
-+extern void create_empty_buffers(struct page *, kdev_t, unsigned long);
-+extern void end_buffer_io_sync(struct buffer_head *bh, int uptodate);
-+
-+/* reiserfs_writepage needs this */
-+extern void set_buffer_async_io(struct buffer_head *bh) ;
-+
-+#define BUF_CLEAN     0
-+#define BUF_LOCKED    1       /* Buffers scheduled for write */
-+#define BUF_DIRTY     2       /* Dirty buffers, not yet scheduled for write */
-+#define NR_LIST               3
-+
-+static inline void get_bh(struct buffer_head * bh)
-+{
-+        atomic_inc(&(bh)->b_count);
-+}
-+
-+static inline void put_bh(struct buffer_head *bh)
-+{
-+        smp_mb__before_atomic_dec();
-+        atomic_dec(&bh->b_count);
-+}
-+
-+/*
-+ * This is called by bh->b_end_io() handlers when I/O has completed.
-+ */
-+static inline void mark_buffer_uptodate(struct buffer_head * bh, int on)
-+{
-+      if (on)
-+              set_bit(BH_Uptodate, &bh->b_state);
-+      else
-+              clear_bit(BH_Uptodate, &bh->b_state);
-+}
-+
-+#define atomic_set_buffer_clean(bh) test_and_clear_bit(BH_Dirty, &(bh)->b_state)
-+
-+static inline void __mark_buffer_clean(struct buffer_head *bh)
-+{
-+      refile_buffer(bh);
-+}
-+
-+static inline void mark_buffer_clean(struct buffer_head * bh)
-+{
-+      if (atomic_set_buffer_clean(bh))
-+              __mark_buffer_clean(bh);
-+}
-+
-+extern void FASTCALL(__mark_dirty(struct buffer_head *bh));
-+extern void FASTCALL(__mark_buffer_dirty(struct buffer_head *bh));
-+extern void FASTCALL(mark_buffer_dirty(struct buffer_head *bh));
-+
-+extern void FASTCALL(buffer_insert_list(struct buffer_head *, struct list_head *));
-+
-+static inline void buffer_insert_inode_queue(struct buffer_head *bh, struct inode *inode)
-+{
-+      buffer_insert_list(bh, &inode->i_dirty_buffers);
-+}
-+
-+static inline void buffer_insert_inode_data_queue(struct buffer_head *bh, struct inode *inode)
-+{
-+      buffer_insert_list(bh, &inode->i_dirty_data_buffers);
-+}
-+
-+static inline int atomic_set_buffer_dirty(struct buffer_head *bh)
-+{
-+      return test_and_set_bit(BH_Dirty, &bh->b_state);
-+}
-+
-+static inline void mark_buffer_async(struct buffer_head * bh, int on)
-+{
-+      if (on)
-+              set_bit(BH_Async, &bh->b_state);
-+      else
-+              clear_bit(BH_Async, &bh->b_state);
-+}
-+
-+static inline void set_buffer_attached(struct buffer_head *bh)
-+{
-+      set_bit(BH_Attached, &bh->b_state);
-+}
-+
-+static inline void clear_buffer_attached(struct buffer_head *bh)
-+{
-+      clear_bit(BH_Attached, &bh->b_state);
-+}
-+
-+static inline int buffer_attached(struct buffer_head *bh)
-+{
-+      return test_bit(BH_Attached, &bh->b_state);
-+}
-+
-+/*
-+ * If an error happens during the make_request, this function
-+ * has to be recalled. It marks the buffer as clean and not
-+ * uptodate, and it notifys the upper layer about the end
-+ * of the I/O.
-+ */
-+static inline void buffer_IO_error(struct buffer_head * bh)
-+{
-+      mark_buffer_clean(bh);
-+      /*
-+       * b_end_io has to clear the BH_Uptodate bitflag in the error case!
-+       */
-+      bh->b_end_io(bh, 0);
-+}
-+
-+static inline void mark_buffer_dirty_inode(struct buffer_head *bh, struct inode *inode)
-+{
-+      mark_buffer_dirty(bh);
-+      buffer_insert_inode_queue(bh, inode);
-+}
-+
-+extern void set_buffer_flushtime(struct buffer_head *);
-+extern void balance_dirty(void);
-+extern int check_disk_change(kdev_t);
-+extern int invalidate_inodes(struct super_block *);
-+extern int invalidate_device(kdev_t, int);
-+extern void invalidate_inode_pages(struct inode *);
-+extern void invalidate_inode_pages2(struct address_space *);
-+extern void invalidate_inode_buffers(struct inode *);
-+#define invalidate_buffers(dev)       __invalidate_buffers((dev), 0)
-+#define destroy_buffers(dev)  __invalidate_buffers((dev), 1)
-+extern void invalidate_bdev(struct block_device *, int);
-+extern void __invalidate_buffers(kdev_t dev, int);
-+extern void sync_inodes(kdev_t);
-+extern void sync_unlocked_inodes(void);
-+extern void write_inode_now(struct inode *, int);
-+extern int sync_buffers(kdev_t, int);
-+extern void sync_dev(kdev_t);
-+extern int fsync_dev(kdev_t);
-+extern int fsync_super(struct super_block *);
-+extern int fsync_no_super(kdev_t);
-+extern void sync_inodes_sb(struct super_block *);
-+extern int fsync_buffers_list(struct list_head *);
-+static inline int fsync_inode_buffers(struct inode *inode)
-+{
-+      return fsync_buffers_list(&inode->i_dirty_buffers);
-+}
-+static inline int fsync_inode_data_buffers(struct inode *inode)
-+{
-+      return fsync_buffers_list(&inode->i_dirty_data_buffers);
-+}
-+extern int inode_has_buffers(struct inode *);
-+extern int do_fdatasync(struct file *);
-+extern int filemap_fdatasync(struct address_space *);
-+extern int filemap_fdatawait(struct address_space *);
-+extern void sync_supers(kdev_t dev, int wait);
-+extern int bmap(struct inode *, int);
-+extern int notify_change(struct dentry *, struct iattr *);
-+extern int permission(struct inode *, int);
-+extern int vfs_permission(struct inode *, int);
-+extern int get_write_access(struct inode *);
-+extern int deny_write_access(struct file *);
-+static inline void put_write_access(struct inode * inode)
-+{
-+      atomic_dec(&inode->i_writecount);
-+}
-+static inline void allow_write_access(struct file *file)
-+{
-+      if (file)
-+              atomic_inc(&file->f_dentry->d_inode->i_writecount);
-+}
-+extern int do_pipe(int *);
-+
-+extern int open_namei(const char *, int, int, struct nameidata *);
-+
-+extern int kernel_read(struct file *, unsigned long, char *, unsigned long);
-+extern struct file * open_exec(const char *);
-+ 
-+/* fs/dcache.c -- generic fs support functions */
-+extern int is_subdir(struct dentry *, struct dentry *);
-+extern ino_t find_inode_number(struct dentry *, struct qstr *);
-+
-+/*
-+ * Kernel pointers have redundant information, so we can use a
-+ * scheme where we can return either an error code or a dentry
-+ * pointer with the same return value.
-+ *
-+ * This should be a per-architecture thing, to allow different
-+ * error and pointer decisions.
-+ */
-+static inline void *ERR_PTR(long error)
-+{
-+      return (void *) error;
-+}
-+
-+static inline long PTR_ERR(const void *ptr)
-+{
-+      return (long) ptr;
-+}
-+
-+static inline long IS_ERR(const void *ptr)
-+{
-+      return (unsigned long)ptr > (unsigned long)-1000L;
-+}
-+
-+/*
-+ * The bitmask for a lookup event:
-+ *  - follow links at the end
-+ *  - require a directory
-+ *  - ending slashes ok even for nonexistent files
-+ *  - internal "there are more path compnents" flag
-+ */
-+#define LOOKUP_FOLLOW         (1)
-+#define LOOKUP_DIRECTORY      (2)
-+#define LOOKUP_CONTINUE               (4)
-+#define LOOKUP_POSITIVE               (8)
-+#define LOOKUP_PARENT         (16)
-+#define LOOKUP_NOALT          (32)
-+/*
-+ * Type of the last component on LOOKUP_PARENT
-+ */
-+enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
-+
-+/*
-+ * "descriptor" for what we're up to with a read for sendfile().
-+ * This allows us to use the same read code yet
-+ * have multiple different users of the data that
-+ * we read from a file.
-+ *
-+ * The simplest case just copies the data to user
-+ * mode.
-+ */
-+typedef struct {
-+      size_t written;
-+      size_t count;
-+      char * buf;
-+      int error;
-+} read_descriptor_t;
-+
-+typedef int (*read_actor_t)(read_descriptor_t *, struct page *, unsigned long, unsigned long);
-+
-+/* needed for stackable file system support */
-+extern loff_t default_llseek(struct file *file, loff_t offset, int origin);
-+
-+extern int FASTCALL(__user_walk(const char *, unsigned, struct nameidata *));
-+extern int FASTCALL(path_init(const char *, unsigned, struct nameidata *));
-+extern int FASTCALL(path_walk(const char *, struct nameidata *));
-+extern int FASTCALL(path_lookup(const char *, unsigned, struct nameidata *));
-+extern int FASTCALL(link_path_walk(const char *, struct nameidata *));
-+extern void path_release(struct nameidata *);
-+extern int follow_down(struct vfsmount **, struct dentry **);
-+extern int follow_up(struct vfsmount **, struct dentry **);
-+extern struct dentry * lookup_one_len(const char *, struct dentry *, int);
-+extern struct dentry * lookup_hash(struct qstr *, struct dentry *);
-+#define user_path_walk(name,nd)        __user_walk(name, LOOKUP_FOLLOW|LOOKUP_POSITIVE, nd)
-+#define user_path_walk_link(name,nd) __user_walk(name, LOOKUP_POSITIVE, nd)
-+
-+extern void inode_init_once(struct inode *);
-+extern void iput(struct inode *);
-+extern void force_delete(struct inode *);
-+extern struct inode * igrab(struct inode *);
-+extern ino_t iunique(struct super_block *, ino_t);
-+
-+typedef int (*find_inode_t)(struct inode *, unsigned long, void *);
-+extern struct inode * iget4(struct super_block *, unsigned long, find_inode_t, void *);
-+static inline struct inode *iget(struct super_block *sb, unsigned long ino)
-+{
-+      return iget4(sb, ino, NULL, NULL);
-+}
-+
-+extern void clear_inode(struct inode *);
-+extern struct inode *new_inode(struct super_block *sb);
-+extern void remove_suid(struct inode *inode);
-+
-+extern void insert_inode_hash(struct inode *);
-+extern void remove_inode_hash(struct inode *);
-+extern struct file * get_empty_filp(void);
-+extern void file_move(struct file *f, struct list_head *list);
-+extern struct buffer_head * get_hash_table(kdev_t, int, int);
-+extern struct buffer_head * getblk(kdev_t, int, int);
-+extern void ll_rw_block(int, int, struct buffer_head * bh[]);
-+extern void submit_bh(int, struct buffer_head *);
-+extern int is_read_only(kdev_t);
-+extern void __brelse(struct buffer_head *);
-+static inline void brelse(struct buffer_head *buf)
-+{
-+      if (buf)
-+              __brelse(buf);
-+}
-+extern void __bforget(struct buffer_head *);
-+static inline void bforget(struct buffer_head *buf)
-+{
-+      if (buf)
-+              __bforget(buf);
-+}
-+extern int set_blocksize(kdev_t, int);
-+extern int sb_set_blocksize(struct super_block *, int);
-+extern int sb_min_blocksize(struct super_block *, int);
-+extern struct buffer_head * bread(kdev_t, int, int);
-+static inline struct buffer_head * sb_bread(struct super_block *sb, int block)
-+{
-+      return bread(sb->s_dev, block, sb->s_blocksize);
-+}
-+static inline struct buffer_head * sb_getblk(struct super_block *sb, int block)
-+{
-+      return getblk(sb->s_dev, block, sb->s_blocksize);
-+}
-+static inline struct buffer_head * sb_get_hash_table(struct super_block *sb, int block)
-+{
-+      return get_hash_table(sb->s_dev, block, sb->s_blocksize);
-+}
-+extern void wakeup_bdflush(void);
-+extern void put_unused_buffer_head(struct buffer_head * bh);
-+extern struct buffer_head * get_unused_buffer_head(int async);
-+
-+extern int brw_page(int, struct page *, kdev_t, int [], int);
-+
-+typedef int (get_block_t)(struct inode*,long,struct buffer_head*,int);
-+
-+/* Generic buffer handling for block filesystems.. */
-+extern int try_to_release_page(struct page * page, int gfp_mask);
-+extern int discard_bh_page(struct page *, unsigned long, int);
-+#define block_flushpage(page, offset) discard_bh_page(page, offset, 1)
-+#define block_invalidate_page(page) discard_bh_page(page, 0, 0)
-+extern int block_symlink(struct inode *, const char *, int);
-+extern int block_write_full_page(struct page*, get_block_t*);
-+extern int block_read_full_page(struct page*, get_block_t*);
-+extern int block_prepare_write(struct page*, unsigned, unsigned, get_block_t*);
-+extern int cont_prepare_write(struct page*, unsigned, unsigned, get_block_t*,
-+                              unsigned long *);
-+extern int generic_cont_expand(struct inode *inode, loff_t size) ;
-+extern int block_commit_write(struct page *page, unsigned from, unsigned to);
-+extern int block_sync_page(struct page *);
-+
-+int generic_block_bmap(struct address_space *, long, get_block_t *);
-+int generic_commit_write(struct file *, struct page *, unsigned, unsigned);
-+int block_truncate_page(struct address_space *, loff_t, get_block_t *);
-+extern int generic_direct_IO(int, struct inode *, struct kiobuf *, unsigned long, int, get_block_t *);
-+extern int waitfor_one_page(struct page *);
-+extern int writeout_one_page(struct page *);
-+
-+extern int generic_file_mmap(struct file *, struct vm_area_struct *);
-+extern int file_read_actor(read_descriptor_t * desc, struct page *page, unsigned long offset, unsigned long size);
-+extern ssize_t generic_file_read(struct file *, char *, size_t, loff_t *);
-+extern int precheck_file_write(struct file *, struct inode *, size_t *, loff_t *);
-+extern ssize_t generic_file_write(struct file *, const char *, size_t, loff_t *);
-+extern void do_generic_file_read(struct file *, loff_t *, read_descriptor_t *, read_actor_t);
-+extern loff_t no_llseek(struct file *file, loff_t offset, int origin);
-+extern loff_t generic_file_llseek(struct file *file, loff_t offset, int origin);
-+extern ssize_t generic_read_dir(struct file *, char *, size_t, loff_t *);
-+extern int generic_file_open(struct inode * inode, struct file * filp);
-+
-+extern struct file_operations generic_ro_fops;
-+
-+extern int vfs_readlink(struct dentry *, char *, int, const char *);
-+extern int vfs_follow_link(struct nameidata *, const char *);
-+extern int page_readlink(struct dentry *, char *, int);
-+extern int page_follow_link(struct dentry *, struct nameidata *);
-+extern struct inode_operations page_symlink_inode_operations;
-+
-+extern int vfs_readdir(struct file *, filldir_t, void *);
-+extern int dcache_dir_open(struct inode *, struct file *);
-+extern int dcache_dir_close(struct inode *, struct file *);
-+extern loff_t dcache_dir_lseek(struct file *, loff_t, int);
-+extern int dcache_dir_fsync(struct file *, struct dentry *, int);
-+extern int dcache_readdir(struct file *, void *, filldir_t);
-+extern struct file_operations dcache_dir_ops;
-+
-+extern struct file_system_type *get_fs_type(const char *name);
-+extern struct super_block *get_super(kdev_t);
-+extern void drop_super(struct super_block *sb);
-+static inline int is_mounted(kdev_t dev)
-+{
-+      struct super_block *sb = get_super(dev);
-+      if (sb) {
-+              drop_super(sb);
-+              return 1;
-+      }
-+      return 0;
-+}
-+unsigned long generate_cluster(kdev_t, int b[], int);
-+unsigned long generate_cluster_swab32(kdev_t, int b[], int);
-+extern kdev_t ROOT_DEV;
-+extern char root_device_name[];
-+
-+
-+extern void show_buffers(void);
-+
-+#ifdef CONFIG_BLK_DEV_INITRD
-+extern unsigned int real_root_dev;
-+#endif
-+
-+extern ssize_t char_read(struct file *, char *, size_t, loff_t *);
-+extern ssize_t block_read(struct file *, char *, size_t, loff_t *);
-+extern int read_ahead[];
-+
-+extern ssize_t char_write(struct file *, const char *, size_t, loff_t *);
-+extern ssize_t block_write(struct file *, const char *, size_t, loff_t *);
-+
-+extern int file_fsync(struct file *, struct dentry *, int);
-+extern int generic_buffer_fdatasync(struct inode *inode, unsigned long start_idx, unsigned long end_idx);
-+extern int generic_osync_inode(struct inode *, int);
-+#define OSYNC_METADATA (1<<0)
-+#define OSYNC_DATA (1<<1)
-+#define OSYNC_INODE (1<<2)
-+
-+extern int inode_change_ok(struct inode *, struct iattr *);
-+extern int inode_setattr(struct inode *, struct iattr *);
-+
-+/* kernel/fork.c */
-+extern int unshare_files(void);
-+
-+/*
-+ * Common dentry functions for inclusion in the VFS
-+ * or in other stackable file systems.  Some of these
-+ * functions were in linux/fs/ C (VFS) files.
-+ *
-+ */
-+
-+/*
-+ * Locking the parent is needed to:
-+ *  - serialize directory operations
-+ *  - make sure the parent doesn't change from
-+ *    under us in the middle of an operation.
-+ *
-+ * NOTE! Right now we'd rather use a "struct inode"
-+ * for this, but as I expect things to move toward
-+ * using dentries instead for most things it is
-+ * probably better to start with the conceptually
-+ * better interface of relying on a path of dentries.
-+ */
-+static inline struct dentry *lock_parent(struct dentry *dentry)
-+{
-+      struct dentry *dir = dget(dentry->d_parent);
-+
-+      down(&dir->d_inode->i_sem);
-+      return dir;
-+}
-+
-+static inline struct dentry *get_parent(struct dentry *dentry)
-+{
-+      return dget(dentry->d_parent);
-+}
-+
-+static inline void unlock_dir(struct dentry *dir)
-+{
-+      up(&dir->d_inode->i_sem);
-+      dput(dir);
-+}
-+
-+/*
-+ * Whee.. Deadlock country. Happily there are only two VFS
-+ * operations that does this..
-+ */
-+static inline void double_down(struct semaphore *s1, struct semaphore *s2)
-+{
-+      if (s1 != s2) {
-+              if ((unsigned long) s1 < (unsigned long) s2) {
-+                      struct semaphore *tmp = s2;
-+                      s2 = s1; s1 = tmp;
-+              }
-+              down(s1);
-+      }
-+      down(s2);
-+}
-+
-+/*
-+ * Ewwwwwwww... _triple_ lock. We are guaranteed that the 3rd argument is
-+ * not equal to 1st and not equal to 2nd - the first case (target is parent of
-+ * source) would be already caught, the second is plain impossible (target is
-+ * its own parent and that case would be caught even earlier). Very messy.
-+ * I _think_ that it works, but no warranties - please, look it through.
-+ * Pox on bloody lusers who mandated overwriting rename() for directories...
-+ */
-+
-+static inline void triple_down(struct semaphore *s1,
-+                             struct semaphore *s2,
-+                             struct semaphore *s3)
-+{
-+      if (s1 != s2) {
-+              if ((unsigned long) s1 < (unsigned long) s2) {
-+                      if ((unsigned long) s1 < (unsigned long) s3) {
-+                              struct semaphore *tmp = s3;
-+                              s3 = s1; s1 = tmp;
-+                      }
-+                      if ((unsigned long) s1 < (unsigned long) s2) {
-+                              struct semaphore *tmp = s2;
-+                              s2 = s1; s1 = tmp;
-+                      }
-+              } else {
-+                      if ((unsigned long) s1 < (unsigned long) s3) {
-+                              struct semaphore *tmp = s3;
-+                              s3 = s1; s1 = tmp;
-+                      }
-+                      if ((unsigned long) s2 < (unsigned long) s3) {
-+                              struct semaphore *tmp = s3;
-+                              s3 = s2; s2 = tmp;
-+                      }
-+              }
-+              down(s1);
-+      } else if ((unsigned long) s2 < (unsigned long) s3) {
-+              struct semaphore *tmp = s3;
-+              s3 = s2; s2 = tmp;
-+      }
-+      down(s2);
-+      down(s3);
-+}
-+
-+static inline void double_up(struct semaphore *s1, struct semaphore *s2)
-+{
-+      up(s1);
-+      if (s1 != s2)
-+              up(s2);
-+}
-+
-+static inline void triple_up(struct semaphore *s1,
-+                           struct semaphore *s2,
-+                           struct semaphore *s3)
-+{
-+      up(s1);
-+      if (s1 != s2)
-+              up(s2);
-+      up(s3);
-+}
-+
-+static inline void double_lock(struct dentry *d1, struct dentry *d2)
-+{
-+      double_down(&d1->d_inode->i_sem, &d2->d_inode->i_sem);
-+}
-+
-+static inline void double_unlock(struct dentry *d1, struct dentry *d2)
-+{
-+      double_up(&d1->d_inode->i_sem,&d2->d_inode->i_sem);
-+      dput(d1);
-+      dput(d2);
-+}
-+
-+#endif /* __KERNEL__ */
-+
-+#endif /* _LINUX_FS_H */
-diff -Nur lilo-22.5.9-orig/kernel-headers/linux/genhd.h lilo-22.5.9/kernel-headers/linux/genhd.h
---- lilo-22.5.9-orig/kernel-headers/linux/genhd.h      1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/linux/genhd.h   2004-07-10 02:59:15.000000000 +0200
-@@ -0,0 +1,318 @@
-+#ifndef _LINUX_GENHD_H
-+#define _LINUX_GENHD_H
-+
-+/*
-+ *    genhd.h Copyright (C) 1992 Drew Eckhardt
-+ *    Generic hard disk header file by  
-+ *            Drew Eckhardt
-+ *
-+ *            <drew@colorado.edu>
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/major.h>
-+
-+enum {
-+/* These three have identical behaviour; use the second one if DOS fdisk gets
-+   confused about extended/logical partitions starting past cylinder 1023. */
-+      DOS_EXTENDED_PARTITION = 5,
-+      LINUX_EXTENDED_PARTITION = 0x85,
-+      WIN98_EXTENDED_PARTITION = 0x0f,
-+
-+      LINUX_SWAP_PARTITION = 0x82,
-+      LINUX_RAID_PARTITION = 0xfd,    /* autodetect RAID partition */
-+
-+      SOLARIS_X86_PARTITION = LINUX_SWAP_PARTITION,
-+
-+      DM6_PARTITION = 0x54,   /* has DDO: use xlated geom & offset */
-+      EZD_PARTITION = 0x55,   /* EZ-DRIVE */
-+      DM6_AUX1PARTITION = 0x51,       /* no DDO:  use xlated geom */
-+      DM6_AUX3PARTITION = 0x53,       /* no DDO:  use xlated geom */
-+
-+      FREEBSD_PARTITION = 0xa5,    /* FreeBSD Partition ID */
-+      OPENBSD_PARTITION = 0xa6,    /* OpenBSD Partition ID */
-+      NETBSD_PARTITION = 0xa9,   /* NetBSD Partition ID */
-+      BSDI_PARTITION = 0xb7,    /* BSDI Partition ID */
-+/* Ours is not to wonder why.. */
-+      BSD_PARTITION = FREEBSD_PARTITION,
-+      MINIX_PARTITION = 0x81,  /* Minix Partition ID */
-+      PLAN9_PARTITION = 0x39,  /* Plan 9 Partition ID */
-+      UNIXWARE_PARTITION = 0x63,              /* Partition ID, same as */
-+                                              /* GNU_HURD and SCO Unix */
-+};
-+
-+struct partition {
-+      unsigned char boot_ind;         /* 0x80 - active */
-+      unsigned char head;             /* starting head */
-+      unsigned char sector;           /* starting sector */
-+      unsigned char cyl;              /* starting cylinder */
-+      unsigned char sys_ind;          /* What partition type */
-+      unsigned char end_head;         /* end head */
-+      unsigned char end_sector;       /* end sector */
-+      unsigned char end_cyl;          /* end cylinder */
-+      unsigned int start_sect;        /* starting sector counting from 0 */
-+      unsigned int nr_sects;          /* nr of sectors in partition */
-+} __attribute__((packed));
-+
-+#ifdef __KERNEL__
-+#  include <linux/devfs_fs_kernel.h>
-+
-+struct hd_struct {
-+      unsigned long start_sect;
-+      unsigned long nr_sects;
-+      devfs_handle_t de;              /* primary (master) devfs entry  */
-+#ifdef CONFIG_DEVFS_FS
-+      int number;
-+#endif /* CONFIG_DEVFS_FS */
-+#ifdef CONFIG_BLK_STATS
-+      /* Performance stats: */
-+      unsigned int ios_in_flight;
-+      unsigned int io_ticks;
-+      unsigned int last_idle_time;
-+      unsigned int last_queue_change;
-+      unsigned int aveq;
-+      
-+      unsigned int rd_ios;
-+      unsigned int rd_merges;
-+      unsigned int rd_ticks;
-+      unsigned int rd_sectors;
-+      unsigned int wr_ios;
-+      unsigned int wr_merges;
-+      unsigned int wr_ticks;
-+      unsigned int wr_sectors;        
-+#endif /* CONFIG_BLK_STATS */
-+};
-+
-+#define GENHD_FL_REMOVABLE  1
-+
-+struct gendisk {
-+      int major;                      /* major number of driver */
-+      const char *major_name;         /* name of major driver */
-+      int minor_shift;                /* number of times minor is shifted to
-+                                         get real minor */
-+      int max_p;                      /* maximum partitions per device */
-+
-+      struct hd_struct *part;         /* [indexed by minor] */
-+      int *sizes;                     /* [idem], device size in blocks */
-+      int nr_real;                    /* number of real devices */
-+
-+      void *real_devices;             /* internal use */
-+      struct gendisk *next;
-+      struct block_device_operations *fops;
-+
-+      devfs_handle_t *de_arr;         /* one per physical disc */
-+      char *flags;                    /* one per physical disc */
-+};
-+
-+/* drivers/block/genhd.c */
-+extern struct gendisk *gendisk_head;
-+
-+extern void add_gendisk(struct gendisk *gp);
-+extern void del_gendisk(struct gendisk *gp);
-+extern struct gendisk *get_gendisk(kdev_t dev);
-+extern int walk_gendisk(int (*walk)(struct gendisk *, void *), void *);
-+
-+#endif  /*  __KERNEL__  */
-+
-+#ifdef CONFIG_SOLARIS_X86_PARTITION
-+
-+#define SOLARIS_X86_NUMSLICE  8
-+#define SOLARIS_X86_VTOC_SANE (0x600DDEEEUL)
-+
-+struct solaris_x86_slice {
-+      ushort  s_tag;                  /* ID tag of partition */
-+      ushort  s_flag;                 /* permission flags */
-+      unsigned int s_start;           /* start sector no of partition */
-+      unsigned int s_size;            /* # of blocks in partition */
-+};
-+
-+struct solaris_x86_vtoc {
-+      unsigned int v_bootinfo[3];     /* info needed by mboot (unsupported) */
-+      unsigned int v_sanity;          /* to verify vtoc sanity */
-+      unsigned int v_version;         /* layout version */
-+      char    v_volume[8];            /* volume name */
-+      ushort  v_sectorsz;             /* sector size in bytes */
-+      ushort  v_nparts;               /* number of partitions */
-+      unsigned int v_reserved[10];    /* free space */
-+      struct solaris_x86_slice
-+              v_slice[SOLARIS_X86_NUMSLICE]; /* slice headers */
-+      unsigned int timestamp[SOLARIS_X86_NUMSLICE]; /* timestamp (unsupported) */
-+      char    v_asciilabel[128];      /* for compatibility */
-+};
-+
-+#endif /* CONFIG_SOLARIS_X86_PARTITION */
-+
-+#ifdef CONFIG_BSD_DISKLABEL
-+/*
-+ * BSD disklabel support by Yossi Gottlieb <yogo@math.tau.ac.il>
-+ * updated by Marc Espie <Marc.Espie@openbsd.org>
-+ */
-+
-+/* check against BSD src/sys/sys/disklabel.h for consistency */
-+
-+#define BSD_DISKMAGIC (0x82564557UL)  /* The disk magic number */
-+#define BSD_MAXPARTITIONS     8
-+#define OPENBSD_MAXPARTITIONS 16
-+#define BSD_FS_UNUSED         0       /* disklabel unused partition entry ID */
-+struct bsd_disklabel {
-+      __u32   d_magic;                /* the magic number */
-+      __s16   d_type;                 /* drive type */
-+      __s16   d_subtype;              /* controller/d_type specific */
-+      char    d_typename[16];         /* type name, e.g. "eagle" */
-+      char    d_packname[16];                 /* pack identifier */ 
-+      __u32   d_secsize;              /* # of bytes per sector */
-+      __u32   d_nsectors;             /* # of data sectors per track */
-+      __u32   d_ntracks;              /* # of tracks per cylinder */
-+      __u32   d_ncylinders;           /* # of data cylinders per unit */
-+      __u32   d_secpercyl;            /* # of data sectors per cylinder */
-+      __u32   d_secperunit;           /* # of data sectors per unit */
-+      __u16   d_sparespertrack;       /* # of spare sectors per track */
-+      __u16   d_sparespercyl;         /* # of spare sectors per cylinder */
-+      __u32   d_acylinders;           /* # of alt. cylinders per unit */
-+      __u16   d_rpm;                  /* rotational speed */
-+      __u16   d_interleave;           /* hardware sector interleave */
-+      __u16   d_trackskew;            /* sector 0 skew, per track */
-+      __u16   d_cylskew;              /* sector 0 skew, per cylinder */
-+      __u32   d_headswitch;           /* head switch time, usec */
-+      __u32   d_trkseek;              /* track-to-track seek, usec */
-+      __u32   d_flags;                /* generic flags */
-+#define NDDATA 5
-+      __u32   d_drivedata[NDDATA];    /* drive-type specific information */
-+#define NSPARE 5
-+      __u32   d_spare[NSPARE];        /* reserved for future use */
-+      __u32   d_magic2;               /* the magic number (again) */
-+      __u16   d_checksum;             /* xor of data incl. partitions */
-+
-+                      /* filesystem and partition information: */
-+      __u16   d_npartitions;          /* number of partitions in following */
-+      __u32   d_bbsize;               /* size of boot area at sn0, bytes */
-+      __u32   d_sbsize;               /* max size of fs superblock, bytes */
-+      struct  bsd_partition {         /* the partition table */
-+              __u32   p_size;         /* number of sectors in partition */
-+              __u32   p_offset;       /* starting sector */
-+              __u32   p_fsize;        /* filesystem basic fragment size */
-+              __u8    p_fstype;       /* filesystem type, see below */
-+              __u8    p_frag;         /* filesystem fragments per block */
-+              __u16   p_cpg;          /* filesystem cylinders per group */
-+      } d_partitions[BSD_MAXPARTITIONS];      /* actually may be more */
-+};
-+
-+#endif        /* CONFIG_BSD_DISKLABEL */
-+
-+#ifdef CONFIG_UNIXWARE_DISKLABEL
-+/*
-+ * Unixware slices support by Andrzej Krzysztofowicz <ankry@mif.pg.gda.pl>
-+ * and Krzysztof G. Baranowski <kgb@knm.org.pl>
-+ */
-+
-+#define UNIXWARE_DISKMAGIC     (0xCA5E600DUL) /* The disk magic number */
-+#define UNIXWARE_DISKMAGIC2    (0x600DDEEEUL) /* The slice table magic nr */
-+#define UNIXWARE_NUMSLICE      16
-+#define UNIXWARE_FS_UNUSED     0              /* Unused slice entry ID */
-+
-+struct unixware_slice {
-+      __u16   s_label;        /* label */
-+      __u16   s_flags;        /* permission flags */
-+      __u32   start_sect;     /* starting sector */
-+      __u32   nr_sects;       /* number of sectors in slice */
-+};
-+
-+struct unixware_disklabel {
-+      __u32   d_type;                 /* drive type */
-+      __u32   d_magic;                /* the magic number */
-+      __u32   d_version;              /* version number */
-+      char    d_serial[12];           /* serial number of the device */
-+      __u32   d_ncylinders;           /* # of data cylinders per device */
-+      __u32   d_ntracks;              /* # of tracks per cylinder */
-+      __u32   d_nsectors;             /* # of data sectors per track */
-+      __u32   d_secsize;              /* # of bytes per sector */
-+      __u32   d_part_start;           /* # of first sector of this partition */
-+      __u32   d_unknown1[12];         /* ? */
-+      __u32   d_alt_tbl;              /* byte offset of alternate table */
-+      __u32   d_alt_len;              /* byte length of alternate table */
-+      __u32   d_phys_cyl;             /* # of physical cylinders per device */
-+      __u32   d_phys_trk;             /* # of physical tracks per cylinder */
-+      __u32   d_phys_sec;             /* # of physical sectors per track */
-+      __u32   d_phys_bytes;           /* # of physical bytes per sector */
-+      __u32   d_unknown2;             /* ? */
-+      __u32   d_unknown3;             /* ? */
-+      __u32   d_pad[8];               /* pad */
-+
-+      struct unixware_vtoc {
-+              __u32   v_magic;                /* the magic number */
-+              __u32   v_version;              /* version number */
-+              char    v_name[8];              /* volume name */
-+              __u16   v_nslices;              /* # of slices */
-+              __u16   v_unknown1;             /* ? */
-+              __u32   v_reserved[10];         /* reserved */
-+              struct unixware_slice
-+                      v_slice[UNIXWARE_NUMSLICE];     /* slice headers */
-+      } vtoc;
-+
-+};  /* 408 */
-+
-+#endif /* CONFIG_UNIXWARE_DISKLABEL */
-+
-+#ifdef CONFIG_MINIX_SUBPARTITION
-+#   define MINIX_NR_SUBPARTITIONS  4
-+#endif /* CONFIG_MINIX_SUBPARTITION */
-+
-+#ifdef __KERNEL__
-+
-+char *disk_name (struct gendisk *hd, int minor, char *buf);
-+
-+/* 
-+ * Account for the completion of an IO request (used by drivers which 
-+ * bypass the normal end_request processing) 
-+ */
-+struct request;
-+
-+#ifdef CONFIG_BLK_STATS
-+extern void disk_round_stats(struct hd_struct *hd);
-+extern void req_new_io(struct request *req, int merge, int sectors);
-+extern void req_merged_io(struct request *req);
-+extern void req_finished_io(struct request *req);
-+#else
-+static inline void req_new_io(struct request *req, int merge, int sectors) { }
-+static inline void req_merged_io(struct request *req) { }
-+static inline void req_finished_io(struct request *req) { }
-+#endif /* CONFIG_BLK_STATS */
-+
-+extern void devfs_register_partitions (struct gendisk *dev, int minor,
-+                                     int unregister);
-+
-+
-+
-+/*
-+ * FIXME: this should use genhd->minor_shift, but that is slow to look up.
-+ */
-+static inline unsigned int disk_index (kdev_t dev)
-+{
-+      int major = MAJOR(dev);
-+      int minor = MINOR(dev);
-+      unsigned int index;
-+
-+      switch (major) {
-+              case DAC960_MAJOR+0:
-+                      index = (minor & 0x00f8) >> 3;
-+                      break;
-+              case SCSI_DISK0_MAJOR:
-+                      index = (minor & 0x00f0) >> 4;
-+                      break;
-+              case IDE0_MAJOR:        /* same as HD_MAJOR */
-+              case XT_DISK_MAJOR:
-+                      index = (minor & 0x0040) >> 6;
-+                      break;
-+              case IDE1_MAJOR:
-+                      index = ((minor & 0x0040) >> 6) + 2;
-+                      break;
-+              default:
-+                      return 0;
-+      }
-+      return index;
-+}
-+
-+#endif
-+
-+#endif
-diff -Nur lilo-22.5.9-orig/kernel-headers/linux/hdreg.h lilo-22.5.9/kernel-headers/linux/hdreg.h
---- lilo-22.5.9-orig/kernel-headers/linux/hdreg.h      1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/linux/hdreg.h   2004-07-10 02:59:15.000000000 +0200
-@@ -0,0 +1,746 @@
-+#ifndef _LINUX_HDREG_H
-+#define _LINUX_HDREG_H
-+
-+/*
-+ * This file contains some defines for the AT-hd-controller.
-+ * Various sources.  
-+ */
-+
-+#define HD_IRQ 14                     /* the standard disk interrupt */
-+
-+/* ide.c has its own port definitions in "ide.h" */
-+
-+/* Hd controller regs. Ref: IBM AT Bios-listing */
-+#define HD_DATA               0x1f0           /* _CTL when writing */
-+#define HD_ERROR      0x1f1           /* see err-bits */
-+#define HD_NSECTOR    0x1f2           /* nr of sectors to read/write */
-+#define HD_SECTOR     0x1f3           /* starting sector */
-+#define HD_LCYL               0x1f4           /* starting cylinder */
-+#define HD_HCYL               0x1f5           /* high byte of starting cyl */
-+#define HD_CURRENT    0x1f6           /* 101dhhhh , d=drive, hhhh=head */
-+#define HD_STATUS     0x1f7           /* see status-bits */
-+#define HD_FEATURE    HD_ERROR        /* same io address, read=error, write=feature */
-+#define HD_PRECOMP    HD_FEATURE      /* obsolete use of this port - predates IDE */
-+#define HD_COMMAND    HD_STATUS       /* same io address, read=status, write=cmd */
-+
-+#define HD_CMD                0x3f6           /* used for resets */
-+#define HD_ALTSTATUS  0x3f6           /* same as HD_STATUS but doesn't clear irq */
-+
-+/* remainder is shared between hd.c, ide.c, ide-cd.c, and the hdparm utility */
-+
-+/* Bits of HD_STATUS */
-+#define ERR_STAT              0x01
-+#define INDEX_STAT            0x02
-+#define ECC_STAT              0x04    /* Corrected error */
-+#define DRQ_STAT              0x08
-+#define SEEK_STAT             0x10
-+#define SRV_STAT              0x10
-+#define WRERR_STAT            0x20
-+#define READY_STAT            0x40
-+#define BUSY_STAT             0x80
-+
-+/* Bits for HD_ERROR */
-+#define MARK_ERR              0x01    /* Bad address mark */
-+#define TRK0_ERR              0x02    /* couldn't find track 0 */
-+#define ABRT_ERR              0x04    /* Command aborted */
-+#define MCR_ERR                       0x08    /* media change request */
-+#define ID_ERR                        0x10    /* ID field not found */
-+#define MC_ERR                        0x20    /* media changed */
-+#define ECC_ERR                       0x40    /* Uncorrectable ECC error */
-+#define BBD_ERR                       0x80    /* pre-EIDE meaning:  block marked bad */
-+#define ICRC_ERR              0x80    /* new meaning:  CRC error during transfer */
-+
-+/* Bits of HD_NSECTOR */
-+#define CD                    0x01
-+#define IO                    0x02
-+#define REL                   0x04
-+#define TAG_MASK              0xf8
-+
-+
-+/*
-+ * Command Header sizes for IOCTL commands
-+ *    HDIO_DRIVE_CMD, HDIO_DRIVE_TASK, and HDIO_DRIVE_TASKFILE
-+ */
-+
-+#if 0
-+#include <asm/hdreg.h>
-+typedef ide_ioreg_t task_ioreg_t;
-+#else
-+typedef unsigned char task_ioreg_t;
-+#endif
-+
-+typedef unsigned long sata_ioreg_t;
-+
-+#define HDIO_DRIVE_CMD_HDR_SIZE               4*sizeof(task_ioreg_t)
-+#define HDIO_DRIVE_TASK_HDR_SIZE      8*sizeof(task_ioreg_t)
-+#define HDIO_DRIVE_HOB_HDR_SIZE               8*sizeof(task_ioreg_t)
-+
-+#define IDE_DRIVE_TASK_INVALID                -1
-+#define IDE_DRIVE_TASK_NO_DATA                0
-+#define IDE_DRIVE_TASK_SET_XFER               1
-+
-+#define IDE_DRIVE_TASK_IN             2
-+
-+#define IDE_DRIVE_TASK_OUT            3
-+#define IDE_DRIVE_TASK_RAW_WRITE      4
-+
-+struct hd_drive_cmd_hdr {
-+      task_ioreg_t command;
-+      task_ioreg_t sector_number;
-+      task_ioreg_t feature;
-+      task_ioreg_t sector_count;
-+};
-+
-+typedef struct hd_drive_task_hdr {
-+      task_ioreg_t data;
-+      task_ioreg_t feature;
-+      task_ioreg_t sector_count;
-+      task_ioreg_t sector_number;
-+      task_ioreg_t low_cylinder;
-+      task_ioreg_t high_cylinder;
-+      task_ioreg_t device_head;
-+      task_ioreg_t command;
-+} task_struct_t;
-+
-+typedef struct hd_drive_hob_hdr {
-+      task_ioreg_t data;
-+      task_ioreg_t feature;
-+      task_ioreg_t sector_count;
-+      task_ioreg_t sector_number;
-+      task_ioreg_t low_cylinder;
-+      task_ioreg_t high_cylinder;
-+      task_ioreg_t device_head;
-+      task_ioreg_t control;
-+} hob_struct_t;
-+
-+typedef union ide_reg_valid_s {
-+      unsigned all                            : 16;
-+      struct {
-+              unsigned data                   : 1;
-+              unsigned error_feature          : 1;
-+              unsigned sector                 : 1;
-+              unsigned nsector                : 1;
-+              unsigned lcyl                   : 1;
-+              unsigned hcyl                   : 1;
-+              unsigned select                 : 1;
-+              unsigned status_command         : 1;
-+
-+              unsigned data_hob               : 1;
-+              unsigned error_feature_hob      : 1;
-+              unsigned sector_hob             : 1;
-+              unsigned nsector_hob            : 1;
-+              unsigned lcyl_hob               : 1;
-+              unsigned hcyl_hob               : 1;
-+              unsigned select_hob             : 1;
-+              unsigned control_hob            : 1;
-+      } b;
-+} ide_reg_valid_t;
-+
-+/*
-+ * Define standard taskfile in/out register
-+ */
-+#define IDE_TASKFILE_STD_OUT_FLAGS    0xFE
-+#define IDE_TASKFILE_STD_IN_FLAGS     0xFE
-+#define IDE_HOB_STD_OUT_FLAGS         0x3C
-+#define IDE_HOB_STD_IN_FLAGS          0x3C
-+
-+typedef struct ide_task_request_s {
-+      task_ioreg_t    io_ports[8];
-+      task_ioreg_t    hob_ports[8];
-+      ide_reg_valid_t out_flags;
-+      ide_reg_valid_t in_flags;
-+      int             data_phase;
-+      int             req_cmd;
-+      unsigned long   out_size;
-+      unsigned long   in_size;
-+} ide_task_request_t;
-+
-+typedef struct ide_ioctl_request_s {
-+      ide_task_request_t      *task_request;
-+      unsigned char           *out_buffer;
-+      unsigned char           *in_buffer;
-+} ide_ioctl_request_t;
-+
-+#define TASKFILE_INVALID              0x7fff
-+#define TASKFILE_48                   0x8000
-+
-+#define TASKFILE_NO_DATA              0x0000
-+
-+#define TASKFILE_IN                   0x0001
-+#define TASKFILE_MULTI_IN             0x0002
-+
-+#define TASKFILE_OUT                  0x0004
-+#define TASKFILE_MULTI_OUT            0x0008
-+#define TASKFILE_IN_OUT                       0x0010
-+
-+#define TASKFILE_IN_DMA                       0x0020
-+#define TASKFILE_OUT_DMA              0x0040
-+#define TASKFILE_IN_DMAQ              0x0080
-+#define TASKFILE_OUT_DMAQ             0x0100
-+
-+#define TASKFILE_P_IN                 0x0200
-+#define TASKFILE_P_OUT                        0x0400
-+#define TASKFILE_P_IN_DMA             0x0800
-+#define TASKFILE_P_OUT_DMA            0x1000
-+#define TASKFILE_P_IN_DMAQ            0x2000
-+#define TASKFILE_P_OUT_DMAQ           0x4000
-+
-+/* ATA/ATAPI Commands pre T13 Spec */
-+#define WIN_NOP                               0x00
-+/*
-+ *    0x01->0x02 Reserved
-+ */
-+#define CFA_REQ_EXT_ERROR_CODE                0x03 /* CFA Request Extended Error Code */
-+/*
-+ *    0x04->0x07 Reserved
-+ */
-+#define WIN_SRST                      0x08 /* ATAPI soft reset command */
-+#define WIN_DEVICE_RESET              0x08
-+/*
-+ *    0x09->0x0F Reserved
-+ */
-+#define WIN_RECAL                     0x10
-+#define WIN_RESTORE                   WIN_RECAL
-+/*
-+ *    0x10->0x1F Reserved
-+ */
-+#define WIN_READ                      0x20 /* 28-Bit */
-+#define WIN_READ_ONCE                 0x21 /* 28-Bit without retries */
-+#define WIN_READ_LONG                 0x22 /* 28-Bit */
-+#define WIN_READ_LONG_ONCE            0x23 /* 28-Bit without retries */
-+#define WIN_READ_EXT                  0x24 /* 48-Bit */
-+#define WIN_READDMA_EXT                       0x25 /* 48-Bit */
-+#define WIN_READDMA_QUEUED_EXT                0x26 /* 48-Bit */
-+#define WIN_READ_NATIVE_MAX_EXT               0x27 /* 48-Bit */
-+/*
-+ *    0x28
-+ */
-+#define WIN_MULTREAD_EXT              0x29 /* 48-Bit */
-+/*
-+ *    0x2A->0x2F Reserved
-+ */
-+#define WIN_WRITE                     0x30 /* 28-Bit */
-+#define WIN_WRITE_ONCE                        0x31 /* 28-Bit without retries */
-+#define WIN_WRITE_LONG                        0x32 /* 28-Bit */
-+#define WIN_WRITE_LONG_ONCE           0x33 /* 28-Bit without retries */
-+#define WIN_WRITE_EXT                 0x34 /* 48-Bit */
-+#define WIN_WRITEDMA_EXT              0x35 /* 48-Bit */
-+#define WIN_WRITEDMA_QUEUED_EXT               0x36 /* 48-Bit */
-+#define WIN_SET_MAX_EXT                       0x37 /* 48-Bit */
-+#define CFA_WRITE_SECT_WO_ERASE               0x38 /* CFA Write Sectors without erase */
-+#define WIN_MULTWRITE_EXT             0x39 /* 48-Bit */
-+/*
-+ *    0x3A->0x3B Reserved
-+ */
-+#define WIN_WRITE_VERIFY              0x3C /* 28-Bit */
-+/*
-+ *    0x3D->0x3F Reserved
-+ */
-+#define WIN_VERIFY                    0x40 /* 28-Bit - Read Verify Sectors */
-+#define WIN_VERIFY_ONCE                       0x41 /* 28-Bit - without retries */
-+#define WIN_VERIFY_EXT                        0x42 /* 48-Bit */
-+/*
-+ *    0x43->0x4F Reserved
-+ */
-+#define WIN_FORMAT                    0x50
-+/*
-+ *    0x51->0x5F Reserved
-+ */
-+#define WIN_INIT                      0x60
-+/*
-+ *    0x61->0x5F Reserved
-+ */
-+#define WIN_SEEK                      0x70 /* 0x70-0x7F Reserved */
-+#define CFA_TRANSLATE_SECTOR          0x87 /* CFA Translate Sector */
-+#define WIN_DIAGNOSE                  0x90
-+#define WIN_SPECIFY                   0x91 /* set drive geometry translation */
-+#define WIN_DOWNLOAD_MICROCODE                0x92
-+#define WIN_STANDBYNOW2                       0x94
-+#define WIN_STANDBY2                  0x96
-+#define WIN_SETIDLE2                  0x97
-+#define WIN_CHECKPOWERMODE2           0x98
-+#define WIN_SLEEPNOW2                 0x99
-+/*
-+ *    0x9A VENDOR
-+ */
-+#define WIN_PACKETCMD                 0xA0 /* Send a packet command. */
-+#define WIN_PIDENTIFY                 0xA1 /* identify ATAPI device   */
-+#define WIN_QUEUED_SERVICE            0xA2
-+#define WIN_SMART                     0xB0 /* self-monitoring and reporting */
-+#define CFA_ERASE_SECTORS             0xC0
-+#define WIN_MULTREAD                  0xC4 /* read sectors using multiple mode*/
-+#define WIN_MULTWRITE                 0xC5 /* write sectors using multiple mode */
-+#define WIN_SETMULT                   0xC6 /* enable/disable multiple mode */
-+#define WIN_READDMA_QUEUED            0xC7 /* read sectors using Queued DMA transfers */
-+#define WIN_READDMA                   0xC8 /* read sectors using DMA transfers */
-+#define WIN_READDMA_ONCE              0xC9 /* 28-Bit - without retries */
-+#define WIN_WRITEDMA                  0xCA /* write sectors using DMA transfers */
-+#define WIN_WRITEDMA_ONCE             0xCB /* 28-Bit - without retries */
-+#define WIN_WRITEDMA_QUEUED           0xCC /* write sectors using Queued DMA transfers */
-+#define CFA_WRITE_MULTI_WO_ERASE      0xCD /* CFA Write multiple without erase */
-+#define WIN_GETMEDIASTATUS            0xDA    
-+#define WIN_ACKMEDIACHANGE            0xDB /* ATA-1, ATA-2 vendor */
-+#define WIN_POSTBOOT                  0xDC
-+#define WIN_PREBOOT                   0xDD
-+#define WIN_DOORLOCK                  0xDE /* lock door on removable drives */
-+#define WIN_DOORUNLOCK                        0xDF /* unlock door on removable drives */
-+#define WIN_STANDBYNOW1                       0xE0
-+#define WIN_IDLEIMMEDIATE             0xE1 /* force drive to become "ready" */
-+#define WIN_STANDBY                   0xE2 /* Set device in Standby Mode */
-+#define WIN_SETIDLE1                  0xE3
-+#define WIN_READ_BUFFER                       0xE4 /* force read only 1 sector */
-+#define WIN_CHECKPOWERMODE1           0xE5
-+#define WIN_SLEEPNOW1                 0xE6
-+#define WIN_FLUSH_CACHE                       0xE7
-+#define WIN_WRITE_BUFFER              0xE8 /* force write only 1 sector */
-+#define WIN_WRITE_SAME                        0xE9 /* read ata-2 to use */
-+      /* SET_FEATURES 0x22 or 0xDD */
-+#define WIN_FLUSH_CACHE_EXT           0xEA /* 48-Bit */
-+#define WIN_IDENTIFY                  0xEC /* ask drive to identify itself    */
-+#define WIN_MEDIAEJECT                        0xED
-+#define WIN_IDENTIFY_DMA              0xEE /* same as WIN_IDENTIFY, but DMA */
-+#define WIN_SETFEATURES                       0xEF /* set special drive features */
-+#define EXABYTE_ENABLE_NEST           0xF0
-+#define WIN_SECURITY_SET_PASS         0xF1
-+#define WIN_SECURITY_UNLOCK           0xF2
-+#define WIN_SECURITY_ERASE_PREPARE    0xF3
-+#define WIN_SECURITY_ERASE_UNIT               0xF4
-+#define WIN_SECURITY_FREEZE_LOCK      0xF5
-+#define WIN_SECURITY_DISABLE          0xF6
-+#define WIN_READ_NATIVE_MAX           0xF8 /* return the native maximum address */
-+#define WIN_SET_MAX                   0xF9
-+#define DISABLE_SEAGATE                       0xFB
-+
-+/* WIN_SMART sub-commands */
-+
-+#define SMART_READ_VALUES             0xD0
-+#define SMART_READ_THRESHOLDS         0xD1
-+#define SMART_AUTOSAVE                        0xD2
-+#define SMART_SAVE                    0xD3
-+#define SMART_IMMEDIATE_OFFLINE               0xD4
-+#define SMART_READ_LOG_SECTOR         0xD5
-+#define SMART_WRITE_LOG_SECTOR                0xD6
-+#define SMART_WRITE_THRESHOLDS                0xD7
-+#define SMART_ENABLE                  0xD8
-+#define SMART_DISABLE                 0xD9
-+#define SMART_STATUS                  0xDA
-+#define SMART_AUTO_OFFLINE            0xDB
-+
-+/* Password used in TF4 & TF5 executing SMART commands */
-+
-+#define SMART_LCYL_PASS                       0x4F
-+#define SMART_HCYL_PASS                       0xC2
-+              
-+/* WIN_SETFEATURES sub-commands */
-+#define SETFEATURES_EN_8BIT   0x01    /* Enable 8-Bit Transfers */
-+#define SETFEATURES_EN_WCACHE 0x02    /* Enable write cache */
-+#define SETFEATURES_XFER      0x03    /* Set transfer mode */
-+#     define XFER_UDMA_7      0x47    /* 0100|0111 */
-+#     define XFER_UDMA_6      0x46    /* 0100|0110 */
-+#     define XFER_UDMA_5      0x45    /* 0100|0101 */
-+#     define XFER_UDMA_4      0x44    /* 0100|0100 */
-+#     define XFER_UDMA_3      0x43    /* 0100|0011 */
-+#     define XFER_UDMA_2      0x42    /* 0100|0010 */
-+#     define XFER_UDMA_1      0x41    /* 0100|0001 */
-+#     define XFER_UDMA_0      0x40    /* 0100|0000 */
-+#     define XFER_MW_DMA_2    0x22    /* 0010|0010 */
-+#     define XFER_MW_DMA_1    0x21    /* 0010|0001 */
-+#     define XFER_MW_DMA_0    0x20    /* 0010|0000 */
-+#     define XFER_SW_DMA_2    0x12    /* 0001|0010 */
-+#     define XFER_SW_DMA_1    0x11    /* 0001|0001 */
-+#     define XFER_SW_DMA_0    0x10    /* 0001|0000 */
-+#     define XFER_PIO_4       0x0C    /* 0000|1100 */
-+#     define XFER_PIO_3       0x0B    /* 0000|1011 */
-+#     define XFER_PIO_2       0x0A    /* 0000|1010 */
-+#     define XFER_PIO_1       0x09    /* 0000|1001 */
-+#     define XFER_PIO_0       0x08    /* 0000|1000 */
-+#     define XFER_PIO_SLOW    0x00    /* 0000|0000 */
-+#define SETFEATURES_DIS_DEFECT        0x04    /* Disable Defect Management */
-+#define SETFEATURES_EN_APM    0x05    /* Enable advanced power management */
-+#define SETFEATURES_EN_SAME_R 0x22    /* for a region ATA-1 */
-+#define SETFEATURES_DIS_MSN   0x31    /* Disable Media Status Notification */
-+#define SETFEATURES_DIS_RETRY 0x33    /* Disable Retry */
-+#define SETFEATURES_EN_AAM    0x42    /* Enable Automatic Acoustic Management */
-+#define SETFEATURES_RW_LONG   0x44    /* Set Lenght of VS bytes */
-+#define SETFEATURES_SET_CACHE 0x54    /* Set Cache segments to SC Reg. Val */
-+#define SETFEATURES_DIS_RLA   0x55    /* Disable read look-ahead feature */
-+#define SETFEATURES_EN_RI     0x5D    /* Enable release interrupt */
-+#define SETFEATURES_EN_SI     0x5E    /* Enable SERVICE interrupt */
-+#define SETFEATURES_DIS_RPOD  0x66    /* Disable reverting to power on defaults */
-+#define SETFEATURES_DIS_ECC   0x77    /* Disable ECC byte count */
-+#define SETFEATURES_DIS_8BIT  0x81    /* Disable 8-Bit Transfers */
-+#define SETFEATURES_DIS_WCACHE        0x82    /* Disable write cache */
-+#define SETFEATURES_EN_DEFECT 0x84    /* Enable Defect Management */
-+#define SETFEATURES_DIS_APM   0x85    /* Disable advanced power management */
-+#define SETFEATURES_EN_ECC    0x88    /* Enable ECC byte count */
-+#define SETFEATURES_EN_MSN    0x95    /* Enable Media Status Notification */
-+#define SETFEATURES_EN_RETRY  0x99    /* Enable Retry */
-+#define SETFEATURES_EN_RLA    0xAA    /* Enable read look-ahead feature */
-+#define SETFEATURES_PREFETCH  0xAB    /* Sets drive prefetch value */
-+#define SETFEATURES_EN_REST   0xAC    /* ATA-1 */
-+#define SETFEATURES_4B_RW_LONG        0xBB    /* Set Lenght of 4 bytes */
-+#define SETFEATURES_DIS_AAM   0xC2    /* Disable Automatic Acoustic Management */
-+#define SETFEATURES_EN_RPOD   0xCC    /* Enable reverting to power on defaults */
-+#define SETFEATURES_DIS_RI    0xDD    /* Disable release interrupt ATAPI */
-+#define SETFEATURES_EN_SAME_M 0xDD    /* for a entire device ATA-1 */
-+#define SETFEATURES_DIS_SI    0xDE    /* Disable SERVICE interrupt ATAPI */
-+
-+/* WIN_SECURITY sub-commands */
-+
-+#define SECURITY_SET_PASSWORD         0xBA
-+#define SECURITY_UNLOCK                       0xBB
-+#define SECURITY_ERASE_PREPARE                0xBC
-+#define SECURITY_ERASE_UNIT           0xBD
-+#define SECURITY_FREEZE_LOCK          0xBE
-+#define SECURITY_DISABLE_PASSWORD     0xBF
-+
-+struct hd_geometry {
-+      unsigned char heads;
-+      unsigned char sectors;
-+      unsigned short cylinders;
-+      unsigned long start;
-+};
-+
-+/* BIG GEOMETRY */
-+struct hd_big_geometry {
-+      unsigned char heads;
-+      unsigned char sectors;
-+      unsigned int cylinders;
-+      unsigned long start;
-+};
-+
-+/* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x030n/0x031n */
-+#define HDIO_GETGEO           0x0301  /* get device geometry */
-+#define HDIO_GET_UNMASKINTR   0x0302  /* get current unmask setting */
-+#define HDIO_GET_MULTCOUNT    0x0304  /* get current IDE blockmode setting */
-+#define HDIO_GET_QDMA         0x0305  /* get use-qdma flag */
-+
-+#define HDIO_SET_XFER         0x0306  /* set transfer rate via proc */
-+
-+#define HDIO_OBSOLETE_IDENTITY        0x0307  /* OBSOLETE, DO NOT USE: returns 142 bytes */
-+#define HDIO_GET_KEEPSETTINGS 0x0308  /* get keep-settings-on-reset flag */
-+#define HDIO_GET_32BIT                0x0309  /* get current io_32bit setting */
-+#define HDIO_GET_NOWERR               0x030a  /* get ignore-write-error flag */
-+#define HDIO_GET_DMA          0x030b  /* get use-dma flag */
-+#define HDIO_GET_NICE         0x030c  /* get nice flags */
-+#define HDIO_GET_IDENTITY     0x030d  /* get IDE identification info */
-+#define HDIO_GET_WCACHE               0x030e  /* get write cache mode on|off */
-+#define HDIO_GET_ACOUSTIC     0x030f  /* get acoustic value */
-+#define       HDIO_GET_ADDRESS        0x0310  /* */
-+
-+#define HDIO_GET_BUSSTATE     0x031a  /* get the bus state of the hwif */
-+#define HDIO_TRISTATE_HWIF    0x031b  /* execute a channel tristate */
-+#define HDIO_DRIVE_RESET      0x031c  /* execute a device reset */
-+#define HDIO_DRIVE_TASKFILE   0x031d  /* execute raw taskfile */
-+#define HDIO_DRIVE_TASK               0x031e  /* execute task and special drive command */
-+#define HDIO_DRIVE_CMD                0x031f  /* execute a special drive command */
-+
-+#define HDIO_DRIVE_CMD_AEB    HDIO_DRIVE_TASK
-+
-+/* hd/ide ctl's that pass (arg) non-ptr values are numbered 0x032n/0x033n */
-+#define HDIO_SET_MULTCOUNT    0x0321  /* change IDE blockmode */
-+#define HDIO_SET_UNMASKINTR   0x0322  /* permit other irqs during I/O */
-+#define HDIO_SET_KEEPSETTINGS 0x0323  /* keep ioctl settings on reset */
-+#define HDIO_SET_32BIT                0x0324  /* change io_32bit flags */
-+#define HDIO_SET_NOWERR               0x0325  /* change ignore-write-error flag */
-+#define HDIO_SET_DMA          0x0326  /* change use-dma flag */
-+#define HDIO_SET_PIO_MODE     0x0327  /* reconfig interface to new speed */
-+#define HDIO_SCAN_HWIF                0x0328  /* register and (re)scan interface */
-+#define HDIO_SET_NICE         0x0329  /* set nice flags */
-+#define HDIO_UNREGISTER_HWIF  0x032a  /* unregister interface */
-+#define HDIO_SET_WCACHE               0x032b  /* change write cache enable-disable */
-+#define HDIO_SET_ACOUSTIC     0x032c  /* change acoustic behavior */
-+#define HDIO_SET_BUSSTATE     0x032d  /* set the bus state of the hwif */
-+#define HDIO_SET_QDMA         0x032e  /* change use-qdma flag */
-+#define HDIO_SET_ADDRESS      0x032f  /* change lba addressing modes */
-+
-+/* bus states */
-+enum {
-+      BUSSTATE_OFF = 0,
-+      BUSSTATE_ON,
-+      BUSSTATE_TRISTATE
-+};
-+
-+/* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x033n/0x033n */
-+#define HDIO_GETGEO_BIG               0x0330  /* */
-+#define HDIO_GETGEO_BIG_RAW   0x0331  /* */
-+
-+#define HDIO_SET_IDE_SCSI     0x0338
-+#define HDIO_SET_SCSI_IDE     0x0339
-+
-+#define __NEW_HD_DRIVE_ID
-+/* structure returned by HDIO_GET_IDENTITY,
-+ * as per ANSI NCITS ATA6 rev.1b spec
-+ */
-+struct hd_driveid {
-+      unsigned short  config;         /* lots of obsolete bit flags */
-+      unsigned short  cyls;           /* Obsolete, "physical" cyls */
-+      unsigned short  reserved2;      /* reserved (word 2) */
-+      unsigned short  heads;          /* Obsolete, "physical" heads */
-+      unsigned short  track_bytes;    /* unformatted bytes per track */
-+      unsigned short  sector_bytes;   /* unformatted bytes per sector */
-+      unsigned short  sectors;        /* Obsolete, "physical" sectors per track */
-+      unsigned short  vendor0;        /* vendor unique */
-+      unsigned short  vendor1;        /* vendor unique */
-+      unsigned short  vendor2;        /* Retired vendor unique */
-+      unsigned char   serial_no[20];  /* 0 = not_specified */
-+      unsigned short  buf_type;       /* Retired */
-+      unsigned short  buf_size;       /* Retired, 512 byte increments
-+                                       * 0 = not_specified
-+                                       */
-+      unsigned short  ecc_bytes;      /* for r/w long cmds; 0 = not_specified */
-+      unsigned char   fw_rev[8];      /* 0 = not_specified */
-+      unsigned char   model[40];      /* 0 = not_specified */
-+      unsigned char   max_multsect;   /* 0=not_implemented */
-+      unsigned char   vendor3;        /* vendor unique */
-+      unsigned short  dword_io;       /* 0=not_implemented; 1=implemented */
-+      unsigned char   vendor4;        /* vendor unique */
-+      unsigned char   capability;     /* (upper byte of word 49)
-+                                       *  3:  IORDYsup
-+                                       *  2:  IORDYsw
-+                                       *  1:  LBA
-+                                       *  0:  DMA
-+                                       */
-+      unsigned short  reserved50;     /* reserved (word 50) */
-+      unsigned char   vendor5;        /* Obsolete, vendor unique */
-+      unsigned char   tPIO;           /* Obsolete, 0=slow, 1=medium, 2=fast */
-+      unsigned char   vendor6;        /* Obsolete, vendor unique */
-+      unsigned char   tDMA;           /* Obsolete, 0=slow, 1=medium, 2=fast */
-+      unsigned short  field_valid;    /* (word 53)
-+                                       *  2:  ultra_ok        word  88
-+                                       *  1:  eide_ok         words 64-70
-+                                       *  0:  cur_ok          words 54-58
-+                                       */
-+      unsigned short  cur_cyls;       /* Obsolete, logical cylinders */
-+      unsigned short  cur_heads;      /* Obsolete, l heads */
-+      unsigned short  cur_sectors;    /* Obsolete, l sectors per track */
-+      unsigned short  cur_capacity0;  /* Obsolete, l total sectors on drive */
-+      unsigned short  cur_capacity1;  /* Obsolete, (2 words, misaligned int)     */
-+      unsigned char   multsect;       /* current multiple sector count */
-+      unsigned char   multsect_valid; /* when (bit0==1) multsect is ok */
-+      unsigned int    lba_capacity;   /* Obsolete, total number of sectors */
-+      unsigned short  dma_1word;      /* Obsolete, single-word dma info */
-+      unsigned short  dma_mword;      /* multiple-word dma info */
-+      unsigned short  eide_pio_modes; /* bits 0:mode3 1:mode4 */
-+      unsigned short  eide_dma_min;   /* min mword dma cycle time (ns) */
-+      unsigned short  eide_dma_time;  /* recommended mword dma cycle time (ns) */
-+      unsigned short  eide_pio;       /* min cycle time (ns), no IORDY  */
-+      unsigned short  eide_pio_iordy; /* min cycle time (ns), with IORDY */
-+      unsigned short  words69_70[2];  /* reserved words 69-70
-+                                       * future command overlap and queuing
-+                                       */
-+      /* HDIO_GET_IDENTITY currently returns only words 0 through 70 */
-+      unsigned short  words71_74[4];  /* reserved words 71-74
-+                                       * for IDENTIFY PACKET DEVICE command
-+                                       */
-+      unsigned short  queue_depth;    /* (word 75)
-+                                       * 15:5 reserved
-+                                       *  4:0 Maximum queue depth -1
-+                                       */
-+      unsigned short  words76_79[4];  /* reserved words 76-79 */
-+      unsigned short  major_rev_num;  /* (word 80) */
-+      unsigned short  minor_rev_num;  /* (word 81) */
-+      unsigned short  command_set_1;  /* (word 82) supported
-+                                       * 15:  Obsolete
-+                                       * 14:  NOP command
-+                                       * 13:  READ_BUFFER
-+                                       * 12:  WRITE_BUFFER
-+                                       * 11:  Obsolete
-+                                       * 10:  Host Protected Area
-+                                       *  9:  DEVICE Reset
-+                                       *  8:  SERVICE Interrupt
-+                                       *  7:  Release Interrupt
-+                                       *  6:  look-ahead
-+                                       *  5:  write cache
-+                                       *  4:  PACKET Command
-+                                       *  3:  Power Management Feature Set
-+                                       *  2:  Removable Feature Set
-+                                       *  1:  Security Feature Set
-+                                       *  0:  SMART Feature Set
-+                                       */
-+      unsigned short  command_set_2;  /* (word 83)
-+                                       * 15:  Shall be ZERO
-+                                       * 14:  Shall be ONE
-+                                       * 13:  FLUSH CACHE EXT
-+                                       * 12:  FLUSH CACHE
-+                                       * 11:  Device Configuration Overlay
-+                                       * 10:  48-bit Address Feature Set
-+                                       *  9:  Automatic Acoustic Management
-+                                       *  8:  SET MAX security
-+                                       *  7:  reserved 1407DT PARTIES
-+                                       *  6:  SetF sub-command Power-Up
-+                                       *  5:  Power-Up in Standby Feature Set
-+                                       *  4:  Removable Media Notification
-+                                       *  3:  APM Feature Set
-+                                       *  2:  CFA Feature Set
-+                                       *  1:  READ/WRITE DMA QUEUED
-+                                       *  0:  Download MicroCode
-+                                       */
-+      unsigned short  cfsse;          /* (word 84)
-+                                       * cmd set-feature supported extensions
-+                                       * 15:  Shall be ZERO
-+                                       * 14:  Shall be ONE
-+                                       * 13:6 reserved
-+                                       *  5:  General Purpose Logging
-+                                       *  4:  Streaming Feature Set
-+                                       *  3:  Media Card Pass Through
-+                                       *  2:  Media Serial Number Valid
-+                                       *  1:  SMART selt-test supported
-+                                       *  0:  SMART error logging
-+                                       */
-+      unsigned short  cfs_enable_1;   /* (word 85)
-+                                       * command set-feature enabled
-+                                       * 15:  Obsolete
-+                                       * 14:  NOP command
-+                                       * 13:  READ_BUFFER
-+                                       * 12:  WRITE_BUFFER
-+                                       * 11:  Obsolete
-+                                       * 10:  Host Protected Area
-+                                       *  9:  DEVICE Reset
-+                                       *  8:  SERVICE Interrupt
-+                                       *  7:  Release Interrupt
-+                                       *  6:  look-ahead
-+                                       *  5:  write cache
-+                                       *  4:  PACKET Command
-+                                       *  3:  Power Management Feature Set
-+                                       *  2:  Removable Feature Set
-+                                       *  1:  Security Feature Set
-+                                       *  0:  SMART Feature Set
-+                                       */
-+      unsigned short  cfs_enable_2;   /* (word 86)
-+                                       * command set-feature enabled
-+                                       * 15:  Shall be ZERO
-+                                       * 14:  Shall be ONE
-+                                       * 13:  FLUSH CACHE EXT
-+                                       * 12:  FLUSH CACHE
-+                                       * 11:  Device Configuration Overlay
-+                                       * 10:  48-bit Address Feature Set
-+                                       *  9:  Automatic Acoustic Management
-+                                       *  8:  SET MAX security
-+                                       *  7:  reserved 1407DT PARTIES
-+                                       *  6:  SetF sub-command Power-Up
-+                                       *  5:  Power-Up in Standby Feature Set
-+                                       *  4:  Removable Media Notification
-+                                       *  3:  APM Feature Set
-+                                       *  2:  CFA Feature Set
-+                                       *  1:  READ/WRITE DMA QUEUED
-+                                       *  0:  Download MicroCode
-+                                       */
-+      unsigned short  csf_default;    /* (word 87)
-+                                       * command set-feature default
-+                                       * 15:  Shall be ZERO
-+                                       * 14:  Shall be ONE
-+                                       * 13:6 reserved
-+                                       *  5:  General Purpose Logging enabled
-+                                       *  4:  Valid CONFIGURE STREAM executed
-+                                       *  3:  Media Card Pass Through enabled
-+                                       *  2:  Media Serial Number Valid
-+                                       *  1:  SMART selt-test supported
-+                                       *  0:  SMART error logging
-+                                       */
-+      unsigned short  dma_ultra;      /* (word 88) */
-+      unsigned short  trseuc;         /* time required for security erase */
-+      unsigned short  trsEuc;         /* time required for enhanced erase */
-+      unsigned short  CurAPMvalues;   /* current APM values */
-+      unsigned short  mprc;           /* master password revision code */
-+      unsigned short  hw_config;      /* hardware config (word 93)
-+                                       * 15:  Shall be ZERO
-+                                       * 14:  Shall be ONE
-+                                       * 13:
-+                                       * 12:
-+                                       * 11:
-+                                       * 10:
-+                                       *  9:
-+                                       *  8:
-+                                       *  7:
-+                                       *  6:
-+                                       *  5:
-+                                       *  4:
-+                                       *  3:
-+                                       *  2:
-+                                       *  1:
-+                                       *  0:  Shall be ONE
-+                                       */
-+      unsigned short  acoustic;       /* (word 94)
-+                                       * 15:8 Vendor's recommended value
-+                                       *  7:0 current value
-+                                       */
-+      unsigned short  msrqs;          /* min stream request size */
-+      unsigned short  sxfert;         /* stream transfer time */
-+      unsigned short  sal;            /* stream access latency */
-+      unsigned int    spg;            /* stream performance granularity */
-+      unsigned long long lba_capacity_2;/* 48-bit total number of sectors */
-+      unsigned short  words104_125[22];/* reserved words 104-125 */
-+      unsigned short  last_lun;       /* (word 126) */
-+      unsigned short  word127;        /* (word 127) Feature Set
-+                                       * Removable Media Notification
-+                                       * 15:2 reserved
-+                                       *  1:0 00 = not supported
-+                                       *      01 = supported
-+                                       *      10 = reserved
-+                                       *      11 = reserved
-+                                       */
-+      unsigned short  dlf;            /* (word 128)
-+                                       * device lock function
-+                                       * 15:9 reserved
-+                                       *  8   security level 1:max 0:high
-+                                       *  7:6 reserved
-+                                       *  5   enhanced erase
-+                                       *  4   expire
-+                                       *  3   frozen
-+                                       *  2   locked
-+                                       *  1   en/disabled
-+                                       *  0   capability
-+                                       */
-+      unsigned short  csfo;           /*  (word 129)
-+                                       * current set features options
-+                                       * 15:4 reserved
-+                                       *  3:  auto reassign
-+                                       *  2:  reverting
-+                                       *  1:  read-look-ahead
-+                                       *  0:  write cache
-+                                       */
-+      unsigned short  words130_155[26];/* reserved vendor words 130-155 */
-+      unsigned short  word156;        /* reserved vendor word 156 */
-+      unsigned short  words157_159[3];/* reserved vendor words 157-159 */
-+      unsigned short  cfa_power;      /* (word 160) CFA Power Mode
-+                                       * 15 word 160 supported
-+                                       * 14 reserved
-+                                       * 13
-+                                       * 12
-+                                       * 11:0
-+                                       */
-+      unsigned short  words161_175[15];/* Reserved for CFA */
-+      unsigned short  words176_205[30];/* Current Media Serial Number */
-+      unsigned short  words206_254[49];/* reserved words 206-254 */
-+      unsigned short  integrity_word; /* (word 255)
-+                                       * 15:8 Checksum
-+                                       *  7:0 Signature
-+                                       */
-+};
-+
-+/*
-+ * IDE "nice" flags. These are used on a per drive basis to determine
-+ * when to be nice and give more bandwidth to the other devices which
-+ * share the same IDE bus.
-+ */
-+#define IDE_NICE_DSC_OVERLAP  (0)     /* per the DSC overlap protocol */
-+#define IDE_NICE_ATAPI_OVERLAP        (1)     /* not supported yet */
-+#define IDE_NICE_0            (2)     /* when sure that it won't affect us */
-+#define IDE_NICE_1            (3)     /* when probably won't affect us much */
-+#define IDE_NICE_2            (4)     /* when we know it's on our expense */
-+
-+#ifdef __KERNEL__
-+/*
-+ * These routines are used for kernel command line parameters from main.c:
-+ */
-+#include <linux/config.h>
-+
-+#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
-+int ide_register(int io_port, int ctl_port, int irq);
-+int ide_unregister(unsigned int);
-+#endif /* CONFIG_BLK_DEV_IDE || CONFIG_BLK_DEV_IDE_MODULE */
-+
-+#endif  /* __KERNEL__ */
-+
-+#endif        /* _LINUX_HDREG_H */
-diff -Nur lilo-22.5.9-orig/kernel-headers/linux/ioctl.h lilo-22.5.9/kernel-headers/linux/ioctl.h
---- lilo-22.5.9-orig/kernel-headers/linux/ioctl.h      1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/linux/ioctl.h   2004-07-10 02:59:15.000000000 +0200
-@@ -0,0 +1,7 @@
-+#ifndef _LINUX_IOCTL_H
-+#define _LINUX_IOCTL_H
-+
-+#include <asm/ioctl.h>
-+
-+#endif /* _LINUX_IOCTL_H */
-+
-diff -Nur lilo-22.5.9-orig/kernel-headers/linux/lvm.h lilo-22.5.9/kernel-headers/linux/lvm.h
---- lilo-22.5.9-orig/kernel-headers/linux/lvm.h        1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/linux/lvm.h     2004-07-10 02:59:15.000000000 +0200
-@@ -0,0 +1,756 @@
-+/*
-+ * include/linux/lvm.h
-+ * kernel/lvm.h
-+ * tools/lib/lvm.h
-+ *
-+ * Copyright (C) 1997 - 2002  Heinz Mauelshagen, Sistina Software
-+ *
-+ * February-November 1997
-+ * May-July 1998
-+ * January-March,July,September,October,Dezember 1999
-+ * January,February,July,November 2000
-+ * January-March,June,July 2001
-+ * May 2002
-+ *
-+ * lvm is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+ *
-+ * lvm is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with GNU CC; see the file COPYING.  If not, write to
-+ * the Free Software Foundation, 59 Temple Place - Suite 330,
-+ * Boston, MA 02111-1307, USA.
-+ *
-+ */
-+
-+/*
-+ * Changelog
-+ *
-+ *    10/10/1997 - beginning of new structure creation
-+ *    12/05/1998 - incorporated structures from lvm_v1.h and deleted lvm_v1.h
-+ *    07/06/1998 - avoided LVM_KMALLOC_MAX define by using vmalloc/vfree
-+ *                 instead of kmalloc/kfree
-+ *    01/07/1998 - fixed wrong LVM_MAX_SIZE
-+ *    07/07/1998 - extended pe_t structure by ios member (for statistic)
-+ *    02/08/1998 - changes for official char/block major numbers
-+ *    07/08/1998 - avoided init_module() and cleanup_module() to be static
-+ *    29/08/1998 - seprated core and disk structure type definitions
-+ *    01/09/1998 - merged kernel integration version (mike)
-+ *    20/01/1999 - added LVM_PE_DISK_OFFSET macro for use in
-+ *                 vg_read_with_pv_and_lv(), pv_move_pe(), pv_show_pe_text()...
-+ *    18/02/1999 - added definition of time_disk_t structure for;
-+ *                 keeps time stamps on disk for nonatomic writes (future)
-+ *    15/03/1999 - corrected LV() and VG() macro definition to use argument
-+ *                 instead of minor
-+ *    03/07/1999 - define for genhd.c name handling
-+ *    23/07/1999 - implemented snapshot part
-+ *    08/12/1999 - changed LVM_LV_SIZE_MAX macro to reflect current 1TB limit
-+ *    01/01/2000 - extended lv_v2 core structure by wait_queue member
-+ *    12/02/2000 - integrated Andrea Arcagnelli's snapshot work
-+ *    18/02/2000 - seperated user and kernel space parts by
-+ *                 #ifdef them with __KERNEL__
-+ *    08/03/2000 - implemented cluster/shared bits for vg_access
-+ *    26/06/2000 - implemented snapshot persistency and resizing support
-+ *    02/11/2000 - added hash table size member to lv structure
-+ *    12/11/2000 - removed unneeded timestamp definitions
-+ *    24/12/2000 - removed LVM_TO_{CORE,DISK}*, use cpu_{from, to}_le*
-+ *                 instead - Christoph Hellwig
-+ *    22/01/2001 - Change ulong to uint32_t
-+ *    14/02/2001 - changed LVM_SNAPSHOT_MIN_CHUNK to 1 page
-+ *    20/02/2001 - incremented IOP version to 11 because of incompatible
-+ *                 change in VG activation (in order to support devfs better)
-+ *    01/03/2001 - Revert to IOP10 and add VG_CREATE_OLD call for compatibility
-+ *    08/03/2001 - new lv_t (in core) version number 5: changed page member
-+ *                 to (struct kiobuf *) to use for COW exception table io
-+ *    26/03/2001 - changed lv_v4 to lv_v5 in structure definition (HM)
-+ *    21/06/2001 - changed BLOCK_SIZE back to 1024 for non S/390
-+ *    22/06/2001 - added Andreas Dilger's PE on 4k boundary alignment enhancements
-+ *    19/07/2001 - added rwsem compatibility macros for 2.2 kernels
-+ *    13/11/2001 - reduced userspace inclusion of kernel headers to a minimum
-+ *
-+ */
-+
-+
-+#ifndef _LVM_H_INCLUDE
-+#define _LVM_H_INCLUDE
-+
-+#define LVM_RELEASE_NAME "1.0.5+"
-+#define LVM_RELEASE_DATE "22/07/2002"
-+
-+#define       _LVM_KERNEL_H_VERSION   "LVM "LVM_RELEASE_NAME" ("LVM_RELEASE_DATE")"
-+
-+#include <linux/version.h>
-+
-+/*
-+ * preprocessor definitions
-+ */
-+/* if you like emergency reset code in the driver */
-+#define       LVM_TOTAL_RESET
-+
-+#ifdef __KERNEL__
-+#undef LVM_HD_NAME /* display nice names in /proc/partitions */
-+
-+/* lots of debugging output (see driver source)
-+   #define DEBUG_LVM_GET_INFO
-+   #define DEBUG
-+   #define DEBUG_MAP
-+   #define DEBUG_MAP_SIZE
-+   #define DEBUG_IOCTL
-+   #define DEBUG_READ
-+   #define DEBUG_GENDISK
-+   #define DEBUG_VG_CREATE
-+   #define DEBUG_DEVICE
-+   #define DEBUG_KFREE
-+ */
-+
-+#include <linux/kdev_t.h>
-+#include <linux/list.h>
-+#include <asm/types.h>
-+#include <linux/major.h>
-+#else
-+/* This prevents the need to include <linux/list.h> which
-+   causes problems on some platforms. It's not nice but then
-+   neither is the alternative. */
-+struct list_head {
-+        struct list_head *next, *prev;
-+};
-+#define __KERNEL__
-+#include <linux/kdev_t.h>
-+#undef __KERNEL__
-+#endif                                /* #ifndef __KERNEL__ */
-+
-+
-+#ifdef __KERNEL__
-+#include <linux/spinlock.h>
-+
-+#include <asm/semaphore.h>
-+#endif                                /* #ifdef __KERNEL__ */
-+
-+
-+#include <asm/page.h>
-+
-+#if !defined ( LVM_BLK_MAJOR) || !defined ( LVM_CHAR_MAJOR)
-+#error Bad include/linux/major.h - LVM MAJOR undefined
-+#endif
-+
-+#ifdef        BLOCK_SIZE
-+#undef        BLOCK_SIZE
-+#endif
-+
-+#ifdef CONFIG_ARCH_S390
-+#define BLOCK_SIZE    4096
-+#else
-+#define BLOCK_SIZE    1024
-+#endif
-+
-+#ifndef       SECTOR_SIZE
-+#define SECTOR_SIZE   512
-+#endif
-+
-+/* structure version */
-+#define LVM_STRUCT_VERSION 1
-+
-+#define       LVM_DIR_PREFIX  "/dev/"
-+
-+/*
-+ * i/o protocol version
-+ *
-+ * defined here for the driver and defined seperate in the
-+ * user land tools/lib/liblvm.h
-+ *
-+ */
-+#define       LVM_DRIVER_IOP_VERSION          10
-+
-+#define LVM_NAME        "lvm"
-+#define LVM_GLOBAL    "global"
-+#define LVM_DIR               "lvm"
-+#define LVM_VG_SUBDIR "VGs"
-+#define LVM_LV_SUBDIR "LVs"
-+#define LVM_PV_SUBDIR "PVs"
-+
-+/*
-+ * VG/LV indexing macros
-+ */
-+/* character minor maps directly to volume group */
-+#define       VG_CHR(a) ( a)
-+
-+/* block minor indexes into a volume group/logical volume indirection table */
-+#define       VG_BLK(a)       ( vg_lv_map[a].vg_number)
-+#define LV_BLK(a)     ( vg_lv_map[a].lv_number)
-+
-+/*
-+ * absolute limits for VGs, PVs per VG and LVs per VG
-+ */
-+#define ABS_MAX_VG    99
-+#define ABS_MAX_PV    256
-+#define ABS_MAX_LV    256     /* caused by 8 bit minor */
-+
-+#define MAX_VG  ABS_MAX_VG
-+#define MAX_LV        ABS_MAX_LV
-+#define       MAX_PV  ABS_MAX_PV
-+
-+#if ( MAX_VG > ABS_MAX_VG)
-+#undef MAX_VG
-+#define MAX_VG ABS_MAX_VG
-+#endif
-+
-+#if ( MAX_LV > ABS_MAX_LV)
-+#undef MAX_LV
-+#define MAX_LV ABS_MAX_LV
-+#endif
-+
-+
-+/*
-+ * VGDA: default disk spaces and offsets
-+ *
-+ *   there's space after the structures for later extensions.
-+ *
-+ *   offset            what                                size
-+ *   ---------------   ----------------------------------  ------------
-+ *   0                 physical volume structure           ~500 byte
-+ *
-+ *   1K                volume group structure              ~200 byte
-+ *
-+ *   6K                namelist of physical volumes        128 byte each
-+ *
-+ *   6k + n * ~300byte n logical volume structures         ~300 byte each
-+ *
-+ *   + m * 4byte       m physical extent alloc. structs    4 byte each
-+ *
-+ *   End of disk -     first physical extent               typically 4 megabyte
-+ *   PE total *
-+ *   PE size
-+ *
-+ *
-+ */
-+
-+/* DONT TOUCH THESE !!! */
-+
-+
-+
-+
-+
-+
-+
-+/*
-+ * LVM_PE_T_MAX corresponds to:
-+ *
-+ * 8KB PE size can map a ~512 MB logical volume at the cost of 1MB memory,
-+ *
-+ * 128MB PE size can map a 8TB logical volume at the same cost of memory.
-+ *
-+ * Default PE size of 4 MB gives a maximum logical volume size of 256 GB.
-+ *
-+ * Maximum PE size of 16GB gives a maximum logical volume size of 1024 TB.
-+ *
-+ * AFAIK, the actual kernels limit this to 1 TB.
-+ *
-+ * Should be a sufficient spectrum ;*)
-+ */
-+
-+/* This is the usable size of pe_disk_t.le_num !!!        v     v */
-+#define       LVM_PE_T_MAX            ( ( 1 << ( sizeof ( uint16_t) * 8)) - 2)
-+
-+#define       LVM_LV_SIZE_MAX(a)      ( ( long long) LVM_PE_T_MAX * (a)->pe_size > ( long long) 1024*1024/SECTOR_SIZE*1024*1024 ? ( long long) 1024*1024/SECTOR_SIZE*1024*1024 : ( long long) LVM_PE_T_MAX * (a)->pe_size)
-+#define       LVM_MIN_PE_SIZE         ( 8192L / SECTOR_SIZE) /* 8 KB in sectors */
-+#define       LVM_MAX_PE_SIZE         ( 16L * 1024L * 1024L / SECTOR_SIZE * 1024)     /* 16GB in sectors */
-+#define       LVM_DEFAULT_PE_SIZE     ( 4096L * 1024 / SECTOR_SIZE)   /* 4 MB in sectors */
-+#define       LVM_DEFAULT_STRIPE_SIZE 16L     /* 16 KB  */
-+#define       LVM_MIN_STRIPE_SIZE     ( PAGE_SIZE/SECTOR_SIZE)        /* PAGESIZE in sectors */
-+#define       LVM_MAX_STRIPE_SIZE     ( 512L * 1024 / SECTOR_SIZE)    /* 512 KB in sectors */
-+#define       LVM_MAX_STRIPES         128     /* max # of stripes */
-+#define       LVM_MAX_SIZE            ( 1024LU * 1024 / SECTOR_SIZE * 1024 * 1024)    /* 1TB[sectors] */
-+#define       LVM_MAX_MIRRORS         2       /* future use */
-+#define       LVM_MIN_READ_AHEAD      0       /* minimum read ahead sectors */
-+#define       LVM_DEFAULT_READ_AHEAD  1024    /* sectors for 512k scsi segments */
-+#define       LVM_MAX_READ_AHEAD      1024    /* maximum read ahead sectors */
-+#define       LVM_MAX_LV_IO_TIMEOUT   60      /* seconds I/O timeout (future use) */
-+#define       LVM_PARTITION           0xfe    /* LVM partition id */
-+#define       LVM_NEW_PARTITION       0x8e    /* new LVM partition id (10/09/1999) */
-+#define       LVM_PE_SIZE_PV_SIZE_REL 5       /* max relation PV size and PE size */
-+
-+#define       LVM_SNAPSHOT_MAX_CHUNK  1024    /* 1024 KB */
-+#define       LVM_SNAPSHOT_DEF_CHUNK  64      /* 64  KB */
-+#define       LVM_SNAPSHOT_MIN_CHUNK  (PAGE_SIZE/1024)        /* 4 or 8 KB */
-+
-+#define       UNDEF   -1
-+
-+/*
-+ * ioctls
-+ * FIXME: the last parameter to _IO{W,R,WR} is a data type.  The macro will
-+ *      expand this using sizeof(), so putting "1" there is misleading
-+ *      because sizeof(1) = sizeof(int) = sizeof(2) = 4 on a 32-bit machine!
-+ */
-+/* volume group */
-+#define       VG_CREATE_OLD           _IOW ( 0xfe, 0x00, 1)
-+#define       VG_REMOVE               _IOW ( 0xfe, 0x01, 1)
-+
-+#define       VG_EXTEND               _IOW ( 0xfe, 0x03, 1)
-+#define       VG_REDUCE               _IOW ( 0xfe, 0x04, 1)
-+
-+#define       VG_STATUS               _IOWR ( 0xfe, 0x05, 1)
-+#define       VG_STATUS_GET_COUNT     _IOWR ( 0xfe, 0x06, 1)
-+#define       VG_STATUS_GET_NAMELIST  _IOWR ( 0xfe, 0x07, 1)
-+
-+#define       VG_SET_EXTENDABLE       _IOW ( 0xfe, 0x08, 1)
-+#define       VG_RENAME               _IOW ( 0xfe, 0x09, 1)
-+
-+/* Since 0.9beta6 */
-+#define       VG_CREATE               _IOW ( 0xfe, 0x0a, 1)
-+
-+/* logical volume */
-+#define       LV_CREATE               _IOW ( 0xfe, 0x20, 1)
-+#define       LV_REMOVE               _IOW ( 0xfe, 0x21, 1)
-+
-+#define       LV_ACTIVATE             _IO ( 0xfe, 0x22)
-+#define       LV_DEACTIVATE           _IO ( 0xfe, 0x23)
-+
-+#define       LV_EXTEND               _IOW ( 0xfe, 0x24, 1)
-+#define       LV_REDUCE               _IOW ( 0xfe, 0x25, 1)
-+
-+#define       LV_STATUS_BYNAME        _IOWR ( 0xfe, 0x26, 1)
-+#define       LV_STATUS_BYINDEX       _IOWR ( 0xfe, 0x27, 1)
-+
-+#define LV_SET_ACCESS           _IOW ( 0xfe, 0x28, 1)
-+#define LV_SET_ALLOCATION       _IOW ( 0xfe, 0x29, 1)
-+#define LV_SET_STATUS           _IOW ( 0xfe, 0x2a, 1)
-+
-+#define LE_REMAP                _IOW ( 0xfe, 0x2b, 1)
-+
-+#define LV_SNAPSHOT_USE_RATE    _IOWR ( 0xfe, 0x2c, 1)
-+
-+#define       LV_STATUS_BYDEV         _IOWR ( 0xfe, 0x2e, 1)
-+
-+#define       LV_RENAME               _IOW ( 0xfe, 0x2f, 1)
-+
-+#define       LV_BMAP                 _IOWR ( 0xfe, 0x30, 1)
-+
-+
-+/* physical volume */
-+#define       PV_STATUS               _IOWR ( 0xfe, 0x40, 1)
-+#define       PV_CHANGE               _IOWR ( 0xfe, 0x41, 1)
-+#define       PV_FLUSH                _IOW ( 0xfe, 0x42, 1)
-+
-+/* physical extent */
-+#define       PE_LOCK_UNLOCK          _IOW ( 0xfe, 0x50, 1)
-+
-+/* i/o protocol version */
-+#define       LVM_GET_IOP_VERSION     _IOR ( 0xfe, 0x98, 1)
-+
-+#ifdef LVM_TOTAL_RESET
-+/* special reset function for testing purposes */
-+#define       LVM_RESET               _IO ( 0xfe, 0x99)
-+#endif
-+
-+/* lock the logical volume manager */
-+#if LVM_DRIVER_IOP_VERSION > 11
-+#define       LVM_LOCK_LVM            _IO ( 0xfe, 0x9A)
-+#else
-+/* This is actually the same as _IO ( 0xff, 0x00), oops.  Remove for IOP 12+ */
-+#define       LVM_LOCK_LVM            _IO ( 0xfe, 0x100)
-+#endif
-+/* END ioctls */
-+
-+
-+/*
-+ * Status flags
-+ */
-+/* volume group */
-+#define       VG_ACTIVE            0x01       /* vg_status */
-+#define       VG_EXPORTED          0x02       /*     "     */
-+#define       VG_EXTENDABLE        0x04       /*     "     */
-+
-+#define       VG_READ              0x01       /* vg_access */
-+#define       VG_WRITE             0x02       /*     "     */
-+#define       VG_CLUSTERED         0x04       /*     "     */
-+#define       VG_SHARED            0x08       /*     "     */
-+
-+/* logical volume */
-+#define       LV_ACTIVE            0x01       /* lv_status */
-+#define       LV_SPINDOWN          0x02       /*     "     */
-+
-+#define       LV_READ              0x01       /* lv_access */
-+#define       LV_WRITE             0x02       /*     "     */
-+#define       LV_SNAPSHOT          0x04       /*     "     */
-+#define       LV_SNAPSHOT_ORG      0x08       /*     "     */
-+
-+#define       LV_BADBLOCK_ON       0x01       /* lv_badblock */
-+
-+#define       LV_STRICT            0x01       /* lv_allocation */
-+#define       LV_CONTIGUOUS        0x02       /*       "       */
-+
-+/* physical volume */
-+#define       PV_ACTIVE            0x01       /* pv_status */
-+#define       PV_ALLOCATABLE       0x02       /* pv_allocatable */
-+
-+
-+/* misc */
-+#define LVM_SNAPSHOT_DROPPED_SECTOR 1
-+
-+/*
-+ * Structure definitions core/disk follow
-+ *
-+ * conditional conversion takes place on big endian architectures
-+ * in functions * pv_copy_*(), vg_copy_*() and lv_copy_*()
-+ *
-+ */
-+
-+#define       NAME_LEN                128     /* don't change!!! */
-+#define       UUID_LEN                32      /* don't change!!! */
-+
-+/* copy on write tables in disk format */
-+typedef struct lv_COW_table_disk_v1 {
-+      uint64_t pv_org_number;
-+      uint64_t pv_org_rsector;
-+      uint64_t pv_snap_number;
-+      uint64_t pv_snap_rsector;
-+} lv_COW_table_disk_t;
-+
-+/* remap physical sector/rdev pairs including hash */
-+typedef struct lv_block_exception_v1 {
-+      struct list_head hash;
-+      uint32_t rsector_org;
-+      kdev_t   rdev_org;
-+      uint32_t rsector_new;
-+      kdev_t   rdev_new;
-+} lv_block_exception_t;
-+
-+/* disk stored pe information */
-+typedef struct {
-+      uint16_t lv_num;
-+      uint16_t le_num;
-+} pe_disk_t;
-+
-+/* disk stored PV, VG, LV and PE size and offset information */
-+typedef struct {
-+      uint32_t base;
-+      uint32_t size;
-+} lvm_disk_data_t;
-+
-+
-+/*
-+ * physical volume structures
-+ */
-+
-+/* core */
-+typedef struct pv_v2 {
-+      char id[2];             /* Identifier */
-+      unsigned short version; /* HM lvm version */
-+      lvm_disk_data_t pv_on_disk;
-+      lvm_disk_data_t vg_on_disk;
-+      lvm_disk_data_t pv_uuidlist_on_disk;
-+      lvm_disk_data_t lv_on_disk;
-+      lvm_disk_data_t pe_on_disk;
-+      char pv_name[NAME_LEN];
-+      char vg_name[NAME_LEN];
-+      char system_id[NAME_LEN];       /* for vgexport/vgimport */
-+      kdev_t pv_dev;
-+      uint pv_number;
-+      uint pv_status;
-+      uint pv_allocatable;
-+      uint pv_size;           /* HM */
-+      uint lv_cur;
-+      uint pe_size;
-+      uint pe_total;
-+      uint pe_allocated;
-+      uint pe_stale;          /* for future use */
-+      pe_disk_t *pe;          /* HM */
-+      struct block_device *bd;
-+      char pv_uuid[UUID_LEN+1];
-+
-+#ifndef __KERNEL__
-+      uint32_t pe_start;      /* in sectors */
-+#endif
-+} pv_t;
-+
-+
-+/* disk */
-+typedef struct pv_disk_v2 {
-+      uint8_t id[2];          /* Identifier */
-+      uint16_t version;               /* HM lvm version */
-+      lvm_disk_data_t pv_on_disk;
-+      lvm_disk_data_t vg_on_disk;
-+      lvm_disk_data_t pv_uuidlist_on_disk;
-+      lvm_disk_data_t lv_on_disk;
-+      lvm_disk_data_t pe_on_disk;
-+      uint8_t pv_uuid[NAME_LEN];
-+      uint8_t vg_name[NAME_LEN];
-+      uint8_t system_id[NAME_LEN];    /* for vgexport/vgimport */
-+      uint32_t pv_major;
-+      uint32_t pv_number;
-+      uint32_t pv_status;
-+      uint32_t pv_allocatable;
-+      uint32_t pv_size;               /* HM */
-+      uint32_t lv_cur;
-+      uint32_t pe_size;
-+      uint32_t pe_total;
-+      uint32_t pe_allocated;
-+      
-+      /* new in struct version 2 */
-+      uint32_t pe_start;              /* in sectors */
-+
-+} pv_disk_t;
-+
-+
-+/*
-+ * Structures for Logical Volume (LV)
-+ */
-+
-+/* core PE information */
-+typedef struct {
-+      kdev_t dev;
-+      uint32_t pe;            /* to be changed if > 2TB */
-+      uint32_t reads;
-+      uint32_t writes;
-+} pe_t;
-+
-+typedef struct {
-+      char lv_name[NAME_LEN];
-+      kdev_t old_dev;
-+      kdev_t new_dev;
-+      uint32_t old_pe;
-+      uint32_t new_pe;
-+} le_remap_req_t;
-+
-+typedef struct lv_bmap {
-+      uint32_t lv_block;
-+      dev_t lv_dev;
-+} lv_bmap_t;
-+
-+/*
-+ * Structure Logical Volume (LV) Version 3
-+ */
-+
-+/* core */
-+typedef struct lv_v5 {
-+      char lv_name[NAME_LEN];
-+      char vg_name[NAME_LEN];
-+      uint lv_access;
-+      uint lv_status;
-+      uint lv_open;           /* HM */
-+      kdev_t lv_dev;          /* HM */
-+      uint lv_number;         /* HM */
-+      uint lv_mirror_copies;  /* for future use */
-+      uint lv_recovery;       /*       "        */
-+      uint lv_schedule;       /*       "        */
-+      uint lv_size;
-+      pe_t *lv_current_pe;    /* HM */
-+      uint lv_current_le;     /* for future use */
-+      uint lv_allocated_le;
-+      uint lv_stripes;
-+      uint lv_stripesize;
-+      uint lv_badblock;       /* for future use */
-+      uint lv_allocation;
-+      uint lv_io_timeout;     /* for future use */
-+      uint lv_read_ahead;
-+
-+      /* delta to version 1 starts here */
-+      struct lv_v5 *lv_snapshot_org;
-+      struct lv_v5 *lv_snapshot_prev;
-+      struct lv_v5 *lv_snapshot_next;
-+      lv_block_exception_t *lv_block_exception;
-+      uint lv_remap_ptr;
-+      uint lv_remap_end;
-+      uint lv_chunk_size;
-+      uint lv_snapshot_minor;
-+#ifdef __KERNEL__
-+      struct kiobuf *lv_iobuf;
-+      struct kiobuf *lv_COW_table_iobuf;
-+      struct rw_semaphore lv_lock;
-+      struct list_head *lv_snapshot_hash_table;
-+      uint32_t lv_snapshot_hash_table_size;
-+      uint32_t lv_snapshot_hash_mask;
-+      wait_queue_head_t lv_snapshot_wait;
-+      int     lv_snapshot_use_rate;
-+      struct vg_v3    *vg;
-+
-+      uint lv_allocated_snapshot_le;
-+#else
-+      char dummy[200];
-+#endif
-+} lv_t;
-+
-+/* disk */
-+typedef struct lv_disk_v3 {
-+      uint8_t lv_name[NAME_LEN];
-+      uint8_t vg_name[NAME_LEN];
-+      uint32_t lv_access;
-+      uint32_t lv_status;
-+      uint32_t lv_open;               /* HM */
-+      uint32_t lv_dev;                /* HM */
-+      uint32_t lv_number;     /* HM */
-+      uint32_t lv_mirror_copies;      /* for future use */
-+      uint32_t lv_recovery;   /*       "        */
-+      uint32_t lv_schedule;   /*       "        */
-+      uint32_t lv_size;
-+      uint32_t lv_snapshot_minor;/* minor number of original */
-+      uint16_t lv_chunk_size; /* chunk size of snapshot */
-+      uint16_t dummy;
-+      uint32_t lv_allocated_le;
-+      uint32_t lv_stripes;
-+      uint32_t lv_stripesize;
-+      uint32_t lv_badblock;   /* for future use */
-+      uint32_t lv_allocation;
-+      uint32_t lv_io_timeout; /* for future use */
-+      uint32_t lv_read_ahead; /* HM */
-+} lv_disk_t;
-+
-+/*
-+ * Structure Volume Group (VG) Version 1
-+ */
-+
-+/* core */
-+typedef struct vg_v3 {
-+      char vg_name[NAME_LEN]; /* volume group name */
-+      uint vg_number;         /* volume group number */
-+      uint vg_access;         /* read/write */
-+      uint vg_status;         /* active or not */
-+      uint lv_max;            /* maximum logical volumes */
-+      uint lv_cur;            /* current logical volumes */
-+      uint lv_open;           /* open    logical volumes */
-+      uint pv_max;            /* maximum physical volumes */
-+      uint pv_cur;            /* current physical volumes FU */
-+      uint pv_act;            /* active physical volumes */
-+      uint dummy;             /* was obsolete max_pe_per_pv */
-+      uint vgda;              /* volume group descriptor arrays FU */
-+      uint pe_size;           /* physical extent size in sectors */
-+      uint pe_total;          /* total of physical extents */
-+      uint pe_allocated;      /* allocated physical extents */
-+      uint pvg_total;         /* physical volume groups FU */
-+      struct proc_dir_entry *proc;
-+      pv_t *pv[ABS_MAX_PV + 1];       /* physical volume struct pointers */
-+      lv_t *lv[ABS_MAX_LV + 1];       /* logical  volume struct pointers */
-+      char vg_uuid[UUID_LEN+1];       /* volume group UUID */
-+#ifdef __KERNEL__
-+      struct proc_dir_entry *vg_dir_pde;
-+      struct proc_dir_entry *lv_subdir_pde;
-+      struct proc_dir_entry *pv_subdir_pde;
-+#else
-+      char dummy1[200];
-+#endif
-+} vg_t;
-+
-+
-+/* disk */
-+typedef struct vg_disk_v2 {
-+      uint8_t vg_uuid[UUID_LEN];      /* volume group UUID */
-+      uint8_t vg_name_dummy[NAME_LEN-UUID_LEN];       /* rest of v1 VG name */
-+      uint32_t vg_number;     /* volume group number */
-+      uint32_t vg_access;     /* read/write */
-+      uint32_t vg_status;     /* active or not */
-+      uint32_t lv_max;                /* maximum logical volumes */
-+      uint32_t lv_cur;                /* current logical volumes */
-+      uint32_t lv_open;               /* open    logical volumes */
-+      uint32_t pv_max;                /* maximum physical volumes */
-+      uint32_t pv_cur;                /* current physical volumes FU */
-+      uint32_t pv_act;                /* active physical volumes */
-+      uint32_t dummy;
-+      uint32_t vgda;          /* volume group descriptor arrays FU */
-+      uint32_t pe_size;               /* physical extent size in sectors */
-+      uint32_t pe_total;              /* total of physical extents */
-+      uint32_t pe_allocated;  /* allocated physical extents */
-+      uint32_t pvg_total;     /* physical volume groups FU */
-+} vg_disk_t;
-+
-+
-+/*
-+ * Request structures for ioctls
-+ */
-+
-+/* Request structure PV_STATUS_BY_NAME... */
-+typedef struct {
-+      char pv_name[NAME_LEN];
-+      pv_t *pv;
-+} pv_status_req_t, pv_change_req_t;
-+
-+/* Request structure PV_FLUSH */
-+typedef struct {
-+      char pv_name[NAME_LEN];
-+      kdev_t pv_dev;
-+} pv_flush_req_t;
-+
-+
-+/* Request structure PE_MOVE */
-+typedef struct {
-+      enum {
-+              LOCK_PE, UNLOCK_PE
-+      } lock;
-+      struct {
-+              kdev_t lv_dev;
-+              kdev_t pv_dev;
-+              uint32_t pv_offset;
-+      } data;
-+} pe_lock_req_t;
-+
-+
-+/* Request structure LV_STATUS_BYNAME */
-+typedef struct {
-+      char lv_name[NAME_LEN];
-+      lv_t *lv;
-+} lv_status_byname_req_t, lv_req_t;
-+
-+/* Request structure LV_STATUS_BYINDEX */
-+typedef struct {
-+      uint32_t lv_index;
-+      lv_t *lv;
-+      /* Transfer size because user space and kernel space differ */
-+      ushort size;
-+} lv_status_byindex_req_t;
-+
-+/* Request structure LV_STATUS_BYDEV... */
-+typedef struct {
-+      dev_t dev;
-+      lv_t *lv;
-+} lv_status_bydev_req_t;
-+
-+
-+/* Request structure LV_SNAPSHOT_USE_RATE */
-+typedef struct {
-+      int     block;
-+      int     rate;
-+} lv_snapshot_use_rate_req_t;
-+
-+
-+
-+/* useful inlines */
-+static inline ulong round_up(ulong n, ulong size) {
-+      size--;
-+      return (n + size) & ~size;
-+}
-+
-+static inline ulong div_up(ulong n, ulong size) {
-+      return round_up(n, size) / size;
-+}
-+
-+/* FIXME: nasty capital letters */
-+static int inline LVM_GET_COW_TABLE_CHUNKS_PER_PE(vg_t *vg, lv_t *lv) {
-+      return vg->pe_size / lv->lv_chunk_size;
-+}
-+
-+static int inline LVM_GET_COW_TABLE_ENTRIES_PER_PE(vg_t *vg, lv_t *lv) {
-+      ulong chunks = vg->pe_size / lv->lv_chunk_size;
-+      ulong entry_size = sizeof(lv_COW_table_disk_t);
-+      ulong chunk_size = lv->lv_chunk_size * SECTOR_SIZE;
-+      ulong entries = (vg->pe_size * SECTOR_SIZE) /
-+              (entry_size + chunk_size);
-+
-+      if(chunks < 2)
-+              return 0;
-+
-+      for(; entries; entries--)
-+              if((div_up(entries * entry_size, chunk_size) + entries) <=
-+                 chunks)
-+                      break;
-+
-+      return entries;
-+}
-+
-+
-+#endif                                /* #ifndef _LVM_H_INCLUDE */
-+
-diff -Nur lilo-22.5.9-orig/kernel-headers/linux/major.h lilo-22.5.9/kernel-headers/linux/major.h
---- lilo-22.5.9-orig/kernel-headers/linux/major.h      1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/linux/major.h   2004-07-10 02:59:15.000000000 +0200
-@@ -0,0 +1,198 @@
-+#ifndef _LINUX_MAJOR_H
-+#define _LINUX_MAJOR_H
-+
-+/*
-+ * This file has definitions for major device numbers.
-+ * For the device number assignments, see Documentation/devices.txt.
-+ */
-+
-+/* limits */
-+
-+/*
-+ * Important: Don't change this to 256.  Major number 255 is and must be
-+ * reserved for future expansion into a larger dev_t space.
-+ */
-+#define MAX_CHRDEV    255
-+#define MAX_BLKDEV    255
-+
-+#define UNNAMED_MAJOR 0
-+#define MEM_MAJOR     1
-+#define RAMDISK_MAJOR 1
-+#define FLOPPY_MAJOR  2
-+#define PTY_MASTER_MAJOR 2
-+#define IDE0_MAJOR    3
-+#define PTY_SLAVE_MAJOR 3
-+#define HD_MAJOR      IDE0_MAJOR
-+#define TTY_MAJOR     4
-+#define TTYAUX_MAJOR  5
-+#define LP_MAJOR      6
-+#define VCS_MAJOR     7
-+#define LOOP_MAJOR    7
-+#define SCSI_DISK0_MAJOR 8
-+#define SCSI_TAPE_MAJOR       9
-+#define MD_MAJOR        9
-+#define MISC_MAJOR    10
-+#define SCSI_CDROM_MAJOR 11
-+#define       MUX_MAJOR       11      /* PA-RISC only */
-+#define QIC02_TAPE_MAJOR 12
-+#define XT_DISK_MAJOR 13
-+#define SOUND_MAJOR   14
-+#define CDU31A_CDROM_MAJOR 15
-+#define JOYSTICK_MAJOR        15
-+#define GOLDSTAR_CDROM_MAJOR 16
-+#define OPTICS_CDROM_MAJOR 17
-+#define SANYO_CDROM_MAJOR 18
-+#define CYCLADES_MAJOR  19
-+#define CYCLADESAUX_MAJOR 20
-+#define MITSUMI_X_CDROM_MAJOR 20
-+#define MFM_ACORN_MAJOR 21    /* ARM Linux /dev/mfm */
-+#define SCSI_GENERIC_MAJOR 21
-+#define Z8530_MAJOR 34
-+#define DIGI_MAJOR 23
-+#define IDE1_MAJOR    22
-+#define DIGICU_MAJOR 22
-+#define MITSUMI_CDROM_MAJOR 23
-+#define CDU535_CDROM_MAJOR 24
-+#define STL_SERIALMAJOR 24
-+#define MATSUSHITA_CDROM_MAJOR 25
-+#define STL_CALLOUTMAJOR 25
-+#define MATSUSHITA_CDROM2_MAJOR 26
-+#define QIC117_TAPE_MAJOR 27
-+#define MATSUSHITA_CDROM3_MAJOR 27
-+#define MATSUSHITA_CDROM4_MAJOR 28
-+#define STL_SIOMEMMAJOR 28
-+#define ACSI_MAJOR    28
-+#define AZTECH_CDROM_MAJOR 29
-+#define GRAPHDEV_MAJOR        29      /* SparcLinux & Linux/68k /dev/fb */
-+#define SHMIQ_MAJOR   85      /* Linux/mips, SGI /dev/shmiq */
-+#define CM206_CDROM_MAJOR 32
-+#define IDE2_MAJOR    33
-+#define IDE3_MAJOR    34
-+#define XPRAM_MAJOR     35      /* expanded storage on S/390 = "slow ram" */
-+                                /* proposed by Peter                      */
-+#define NETLINK_MAJOR 36
-+#define PS2ESDI_MAJOR 36
-+#define IDETAPE_MAJOR 37
-+#define Z2RAM_MAJOR   37
-+#define APBLOCK_MAJOR   38   /* AP1000 Block device */
-+#define DDV_MAJOR       39   /* AP1000 DDV block device */
-+#define NBD_MAJOR     43   /* Network block device    */
-+#define RISCOM8_NORMAL_MAJOR 48
-+#define DAC960_MAJOR  48      /* 48..55 */
-+#define RISCOM8_CALLOUT_MAJOR 49
-+#define MKISS_MAJOR   55
-+#define DSP56K_MAJOR    55   /* DSP56001 processor device */
-+
-+#define IDE4_MAJOR    56
-+#define IDE5_MAJOR    57
-+
-+#define LVM_BLK_MAJOR 58      /* Logical Volume Manager */
-+
-+#define SCSI_DISK1_MAJOR      65
-+#define SCSI_DISK2_MAJOR      66
-+#define SCSI_DISK3_MAJOR      67
-+#define SCSI_DISK4_MAJOR      68
-+#define SCSI_DISK5_MAJOR      69
-+#define SCSI_DISK6_MAJOR      70
-+#define SCSI_DISK7_MAJOR      71
-+
-+
-+#define COMPAQ_SMART2_MAJOR   72
-+#define COMPAQ_SMART2_MAJOR1  73
-+#define COMPAQ_SMART2_MAJOR2  74
-+#define COMPAQ_SMART2_MAJOR3  75
-+#define COMPAQ_SMART2_MAJOR4  76
-+#define COMPAQ_SMART2_MAJOR5  77
-+#define COMPAQ_SMART2_MAJOR6  78
-+#define COMPAQ_SMART2_MAJOR7  79
-+
-+#define SPECIALIX_NORMAL_MAJOR 75
-+#define SPECIALIX_CALLOUT_MAJOR 76
-+
-+#define COMPAQ_CISS_MAJOR     104
-+#define COMPAQ_CISS_MAJOR1    105
-+#define COMPAQ_CISS_MAJOR2      106
-+#define COMPAQ_CISS_MAJOR3      107
-+#define COMPAQ_CISS_MAJOR4      108
-+#define COMPAQ_CISS_MAJOR5      109
-+#define COMPAQ_CISS_MAJOR6      110
-+#define COMPAQ_CISS_MAJOR7      111
-+
-+#define ATARAID_MAJOR         114
-+
-+#define DASD_MAJOR      94    /* Official assignations from Peter */
-+
-+#define MDISK_MAJOR     95    /* Official assignations from Peter */
-+
-+#define I2O_MAJOR             80      /* 80->87 */
-+
-+#define IDE6_MAJOR    88
-+#define IDE7_MAJOR    89
-+#define IDE8_MAJOR    90
-+#define IDE9_MAJOR    91
-+
-+#define UBD_MAJOR     98
-+
-+#define AURORA_MAJOR 79
-+
-+#define JSFD_MAJOR    99
-+
-+#define PHONE_MAJOR   100
-+
-+#define LVM_CHAR_MAJOR        109     /* Logical Volume Manager */
-+
-+#define       UMEM_MAJOR      116     /* http://www.umem.com/ Battery Backed RAM */
-+
-+#define RTF_MAJOR     150
-+#define RAW_MAJOR     162
-+
-+#define USB_ACM_MAJOR         166
-+#define USB_ACM_AUX_MAJOR     167
-+#define USB_CHAR_MAJOR                180
-+
-+#define UNIX98_PTY_MASTER_MAJOR       128
-+#define UNIX98_PTY_MAJOR_COUNT        8
-+#define UNIX98_PTY_SLAVE_MAJOR        (UNIX98_PTY_MASTER_MAJOR+UNIX98_PTY_MAJOR_COUNT)
-+
-+#define VXVM_MAJOR            199     /* VERITAS volume i/o driver    */
-+#define VXSPEC_MAJOR          200     /* VERITAS volume config driver */
-+#define VXDMP_MAJOR           201     /* VERITAS volume multipath driver */
-+
-+#define MSR_MAJOR             202
-+#define CPUID_MAJOR           203
-+
-+#define OSST_MAJOR    206     /* OnStream-SCx0 SCSI tape */
-+
-+#define IBM_TTY3270_MAJOR       227   /* Official allocations now */
-+#define IBM_FS3270_MAJOR        228
-+
-+/*
-+ * Tests for SCSI devices.
-+ */
-+
-+#define SCSI_DISK_MAJOR(M) ((M) == SCSI_DISK0_MAJOR || \
-+  ((M) >= SCSI_DISK1_MAJOR && (M) <= SCSI_DISK7_MAJOR))
-+  
-+#define SCSI_BLK_MAJOR(M) \
-+  (SCSI_DISK_MAJOR(M) \
-+   || (M) == SCSI_CDROM_MAJOR)
-+
-+static __inline__ int scsi_blk_major(int m) {
-+      return SCSI_BLK_MAJOR(m);
-+}
-+
-+/*
-+ * Tests for IDE devices
-+ */
-+#define IDE_DISK_MAJOR(M)     ((M) == IDE0_MAJOR || (M) == IDE1_MAJOR || \
-+                              (M) == IDE2_MAJOR || (M) == IDE3_MAJOR || \
-+                              (M) == IDE4_MAJOR || (M) == IDE5_MAJOR || \
-+                              (M) == IDE6_MAJOR || (M) == IDE7_MAJOR || \
-+                              (M) == IDE8_MAJOR || (M) == IDE9_MAJOR)
-+
-+static __inline__ int ide_blk_major(int m)
-+{
-+      return IDE_DISK_MAJOR(m);
-+}
-+
-+#endif
-diff -Nur lilo-22.5.9-orig/kernel-headers/linux/unistd.h lilo-22.5.9/kernel-headers/linux/unistd.h
---- lilo-22.5.9-orig/kernel-headers/linux/unistd.h     1970-01-01 01:00:00.000000000 +0100
-+++ lilo-22.5.9/kernel-headers/linux/unistd.h  2004-07-10 02:59:14.000000000 +0200
-@@ -0,0 +1,11 @@
-+#ifndef _LINUX_UNISTD_H_
-+#define _LINUX_UNISTD_H_
-+
-+extern int errno;
-+
-+/*
-+ * Include machine specific syscallX macros
-+ */
-+#include <asm/unistd.h>
-+
-+#endif /* _LINUX_UNISTD_H_ */
index 1965f0e..295145b 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 22.5.9
+# [V] 22.7
 # [S] 2-16
-# [D] lilo-22.5.9.tar.gz http://home.san.rr.com/johninsd/pub/linux/lilo/
+# [D] lilo-22.7.src.tar.gz http://home.san.rr.com/johninsd/pub/linux/lilo/
 
 make_conf=""
 install_conf=""
index 4c855bd..4ff7f46 100644 (file)
@@ -2,6 +2,6 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 0.98.38
+# [V] 0.98.39
 # [S] 2-15
-# [D] nasm-0.98.38.tar.bz2 http://unc.dl.sourceforge.net/sourceforge/nasm/
+# [D] nasm-0.98.39.tar.bz2 http://mesh.dl.sourceforge.net/sourceforge/nasm/
index fce7ebc..97942d2 100644 (file)
@@ -2,9 +2,9 @@
 #
 # author: hackbard@hackdaworld.dyndns.org
 #
-# [V] 2.11
+# [V] 3.09
 # [S] 3-6
-# [D] syslinux-2.11.tar.bz2 http://kernel.org/pub/linux/utils/boot/syslinux/
+# [D] syslinux-3.09.tar.bz2 http://kernel.org/pub/linux/utils/boot/syslinux/
 
 post_install() {
        rm -rf $docdir