#! /bin/sh
-# deblob-check version 2009-03-19
+# deblob-check version 2009-03-24
# Inspired in gNewSense's find-firmware script.
# Written by Alexandre Oliva <lxoliva@fsfla.org>
case ${LANG+set} in set) LANG=C; export LANG;; esac
rm="rm -f"
+
+for echo in 'echo' 'printf %s\n'; do
+ case `$echo '\nx'` in
+ '\nx') break;;
+ esac
+done
+case `$echo '\nx'` in
+'\nx') ;; *) echo Cannot find out what echo to use >&2; exit 1;;
+esac
+
+for echo_n in "echo -n" "printf %s"; do
+ case `$echo_n '\na'; $echo_n '\nb'` in
+ '\na\nb') break;;
+ esac
+done
+case `$echo_n a; $echo_n b` in
+'ab') ;; *) echo Cannot find out an echo -n equivalent to use >&2; exit 1;;
+esac
+
case $1 in
--save-scripts | -S)
shift
blob 'static const u8 microcode\[\] = {[^}]*} *;' drivers/net/tokenring/3c359_microcode.h
blob '#include "3c359_microcode\.h"' drivers/net/tokenring/3c359.c
- blobna '[/][*][ \n*]* Now to write the microcode\([^/]\|[^*/][/]*\)*[*][/][\n ]*start = (0xFFFF - (mc_size)[^;]*;[\n ]*[/][*]\([^/]\|[^*/][/]*\)*[*][/][\n ]*printk(KERN_INFO "3C359: Uploading Microcode: ");[\n ]*for ([^{]*\(mc_size[^{]*) {[^}]*writeb(microcode\[\|) {[^}]*writeb(microcode\[mc_size\)[^}]*}\([\n][ ]*printk[^\n]*;[\n ]*for ([^{]*\(mc_size[^{]*) {[^}]*writeb(microcode\[\|) {[^}]*writeb(microcode\[mc_size\)[^}]*}\)*' drivers/net/tokenring/3c359.c
+ blobna 'start = (0xFFFF - (mc_size)[^;]*;[\n ]*[/][*]\([^/]\|[^*/][/]*\)*[*][/][\n ]*printk(KERN_INFO "3C359: Uploading Microcode: ");[\n ]*for ([^{]*\(mc_size[^{]*) {[^}]*writeb(microcode\[\|) {[^}]*writeb(microcode\[mc_size\)[^}]*}\([\n][ ]*printk[^\n]*;[\n ]*for ([^{]*\(mc_size[^{]*) {[^}]*writeb(microcode\[\|) {[^}]*writeb(microcode\[mc_size\)[^}]*}\)*' drivers/net/tokenring/3c359.c
blobname 'tr_smctr\.bin' drivers/net/tokenring/smctr.c
blobname 'ipw2100-\("\([^"\n]\|[\\][\n]\)*"\([^"]\|[\\]["]\)*\)\+' drivers/net/wireless/ipw2100.c
blobname '__stringify(IPW2100_FW_MINOR_VERSION)' drivers/net/wireless/ipw2100.c
accept ' *Portions of ipw2100_\(do_\)\?mod_firmware_load[, ]*\(ipw2100_\(do_\)\?mod_firmware_load[, and\n]*\)*' drivers/net/wireless/ipw2100.c
- blob 'static int ipw2100_mod_firmware_load([^{]*)[\n]{\([^}]\|[^\n]}*\)*[\n]}' drivers/net/wireless/ipw2100.c
- blob 'ipw2100_mod_firmware_load([^;]*);' drivers/net/wireless/ipw2100.c
+ accept ' ipw2100_mod_firmware_load(fw);' drivers/net/wireless/ipw2100.c
+ accept 'static int ipw2100_mod_firmware_load(' drivers/net/wireless/ipw2100.c
+ blobna 'if (IPW2100_FW_MAJOR[^{]*{[^}]* }' drivers/net/wireless/ipw2100.c
accept '[/][*] Call this function from process context\([^/]\|[^*/][/]*\)*request_firmware' drivers/net/wireless/ipw2200.c
blobname 'ipw2200-\(i\?bss\|sniffer\)\.fw' drivers/net/wireless/ipw2200.c
blobname 'sd\(8385\|8686\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_sdio.c
accept ' *card->firmware = \(if_sdio\|lbs_fw\)' drivers/net/wireless/libertas/if_sdio.c
blobname 'usb8388\(-5\.126\.0\.p5\)\?\.bin' drivers/net/wireless/libertas/if_usb.c
- blobname '[/][*]\([^/]\|[^*/][/]*\)*usb8388\(-5\.126\.0\.p5\)\?\.bin[/][*]\([^/]\|[^*/][/]*\)*' drivers/net/wireless/libertas/if_usb.c
+ blob '[/][*]\([^/]\|[^*/][/]*\)*usb8388\(-5\.126\.0\.p5\)\?\.bin\([^/]\|[^*/][/]*\)*[*][/]' drivers/net/wireless/libertas/if_usb.c
accept ' lbs_pr_err("request_firmware() failed' drivers/net/wireless/if_usb.c
blobna 'o\. Copy the firmware image[^\n]*usb8388\([^\n]\|[\n][ ]*[^ \n]\)*' drivers/net/wireless/libertas/README
blobna '\[fw_name=usb8388[^]]*\]' drivers/net/wireless/libertas/README
sedmain="
/^$/N;
-/^[\n]\?;[/][*]\\(end .*\\)\\?[*][/];$/{
+/^[\\n]\\?;[/][*]\\(end .*\\)\\?[*][/];$/{
$4;
d;
}
g;
$4
$v:read all
-s/^\\(;[/][*]begin [^\n]*[\\n]\\)*//;
+s/^\\(;[/][*]begin [^\\n]*[\\n]\\)*//;
s/\\($bol[\n]\?;[/][*]\\(end [^\\n]*\\)\\?[*][/];\\)*$//;
$v:???!blobfast
/$blobfast/!b clean;
# falsepos matches to files that match it.
addx () {
if test -n "$1"; then
- echo -n "\\|$1" >> $falsepos_name
+ $echo_n "\\|$1" >> $falsepos_name
fi
}
# the falseneg matches to files that match it.
badx () {
if test -n "$1"; then
- echo -n "\\|$1" >> $falseneg_name
+ $echo_n "\\|$1" >> $falseneg_name
fi
}
esac
# Then run through the selected action.
- if test "$rm" != "rm -f" || test ! `echo "$sedmain" | wc -c` -lt 1024; then
+ if test "$rm" != "rm -f" || test ! `$echo "$sedmain" | wc -c` -lt 1024; then
scriptname=`mktemp -t deblob-check-sedmain-XXXXXX`
tempfiles="$tempfiles $scriptname"
- echo "$sedmain" > $scriptname
+ $echo "$sedmain" > $scriptname
cmd="sed -n -f \"$scriptname\""
else
cmd='sed -n "$sedmain"'