Version 2.4
[febootstrap.git] / febootstrap-to-initramfs.sh
index 849aa7b..dc72963 100755 (executable)
 
 unset CDPATH
 
+TEMP=`getopt \
+        -o '' \
+        --long files:,nocompress,help \
+        -n febootstrap-to-initramfs -- "$@"`
+if [ $? != 0 ]; then
+    echo "febootstrap-to-initramfs: problem parsing the command line arguments"
+    exit 1
+fi
+eval set -- "$TEMP"
+
+compress=yes
+files=
+
+usage ()
+{
+    echo "Usage: febootstrap-to-initramfs [--files=filelist] [--nocompress] DIR"
+    echo "Please read febootstrap-to-initramfs(8) man page for more information."
+}
+
+while true; do
+    case "$1" in
+       --files)
+           files=$2
+           shift 2;;
+       --help)
+           usage
+           exit 0;;
+       --nocompress)
+           compress=no
+           shift;;
+       --)
+           shift
+           break;;
+       *)
+           echo "Internal error!"
+           exit 1;;
+    esac
+done
+
 if [ $# -ne 1 ]; then
-    echo "febootstrap-to-initramfs DIR > initrd.img"
+    usage
     exit 1
 fi
 
@@ -34,9 +73,26 @@ fi
 
 set -e
 
+(
 if [ -f fakeroot.log ]; then
-    fakeroot -i fakeroot.log \
-    sh -c 'find -not -name fakeroot.log -a -print0 | cpio -o0c | gzip --best'
+    if [ -z "$files" ]; then
+       fakeroot -i fakeroot.log \
+       sh -c 'find -not -name fakeroot.log -a -print0 | cpio --quiet -o -0 -H newc'
+    else
+       fakeroot -i fakeroot.log \
+       sh -c 'cpio --quiet -o -H newc' < $files
+    fi
+else
+    if [ -z "$files" ]; then
+       find -not -name fakeroot.log -a -print0 | cpio --quiet -o -0 -H newc
+    else
+       cpio --quiet -o -H newc < $files
+    fi
+fi
+) | (
+if [ "$compress" = "yes" ]; then
+    gzip --best
 else
-    find -not -name fakeroot.log -a -print0 | cpio -o0c | gzip --best
+    cat
 fi
+)