commit:     0e4c288f2435fca36705a6ea95f48edccefc6e26
Author:     Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com>
AuthorDate: Mon Jun 23 20:03:36 2014 +0000
Commit:     Richard Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Mon Jun 23 23:11:15 2014 +0000
URL:        
http://sources.gentoo.org/gitweb/?p=proj/genkernel.git;a=commit;h=0e4c288f

Introduced a new funtion to test for numeric values that that our changes_fs 
doesn't fail
when non-numeric values are given, also the styling of changes_fs was changed to
reflect new logic.

---
 defaults/initrd.scripts | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 5ca1203..26ed173 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -345,6 +345,18 @@ conf_rc_no_umounts() {
         fi
 }
 
+# is_int "$A" ["$B"..]
+# NOTE we consider a leading 0 false as it would be interpreted as octal
+is_int(){
+        local i
+        for i; do
+                case $i in
+                        ''|*[!0-9]*|0?*) return 1 ;;
+                        *) :
+                esac
+        done
+}
+
 # Function to create an ext2 fs on $CHANGESDEV, $CHANGESMNT mountpoint
 create_changefs() {
        local size
@@ -352,11 +364,12 @@ create_changefs() {
        while :; do
                read -p '<< Size of file (Press Enter for default 256 Mb): ' 
size
 
-                [ -n "$size" ] || size=256
-
-                size=$size
+                size=${size:-256}
 
-                if [ 15 -ge "$size" ]; then
+                if ! is_int $size; then
+                        bad_msg "Non numeric value given for size, try again"
+                        continue
+                elif [ 15 -ge "$size" ]; then
                         bad_msg "Please give a size of at least 16 Megabytes"
                else
                        if dd if=/dev/zero "of=$CHANGESMNT$AUFS_CHANGESFILE" 
bs=1M count="$size" &>/dev/null; then

Reply via email to