Combine https://patches.dpdk.org/patch/67855/ with v2 of this patch to fix
the overall behaviour of dpdk-setup.sh on non-alphanumeric inputs.
Instead of crashing the script will prompt the user to re-enter the input 
in case of non-alphanumeric input. 

Bugzilla ID: 419
Signed-off-by: Sarosh Arif <sarosh.a...@emumba.com>
Signed-off-by: Muhammad Bilal <m.bi...@emumba.com>
---
v4: fix signoff
---
 usertools/dpdk-setup.sh | 37 ++++++++++++++++++++++++++-----------
 1 file changed, 26 insertions(+), 11 deletions(-)

diff --git a/usertools/dpdk-setup.sh b/usertools/dpdk-setup.sh
index e5bbe9fee..69cd1d2bd 100755
--- a/usertools/dpdk-setup.sh
+++ b/usertools/dpdk-setup.sh
@@ -320,14 +320,18 @@ set_non_numa_pages()
        echo "  enter '64' to reserve 64 * 2MB pages"
        echo -n "Number of pages: "
        read Pages
+       numeric="^[[:digit:]]+$"
+       PG_PATH="/sys/kernel/mm/hugepages/hugepages-${HUGEPGSZ}"
+       if [[ $Pages =~ $numeric ]]; then
+               echo "echo $Pages > $PG_PATH/nr_hugepages" > .echo_tmp
+               echo "Reserving hugepages"
+               sudo sh .echo_tmp
+               rm -f .echo_tmp
+               create_mnt_huge
+       else
+               echo "Please enter a numeric value"
+       fi
 
-       echo "echo $Pages > 
/sys/kernel/mm/hugepages/hugepages-${HUGEPGSZ}/nr_hugepages" > .echo_tmp
-
-       echo "Reserving hugepages"
-       sudo sh .echo_tmp
-       rm -f .echo_tmp
-
-       create_mnt_huge
 }
 
 #
@@ -343,10 +347,16 @@ set_numa_pages()
        echo "  enter '64' to reserve 64 * 2MB pages on each node"
 
        echo > .echo_tmp
+       numeric="^[[:digit:]]+$"
        for d in /sys/devices/system/node/node? ; do
                node=$(basename $d)
                echo -n "Number of pages for $node: "
                read Pages
+               while [[ ! "$Pages" =~ $numeric ]]; do
+                       echo "Please enter a numeric value"
+                       echo -n "Number of pages for $node: "
+                       read Pages
+               done
                echo "echo $Pages > 
$d/hugepages/hugepages-${HUGEPGSZ}/nr_hugepages" >> .echo_tmp
        done
        echo "Reserving hugepages"
@@ -592,10 +602,15 @@ while [ "$QUIT" == "0" ]; do
        echo "[$OPTION_NUM] Exit Script"
        OPTIONS[$OPTION_NUM]="quit"
        echo ""
-       echo -n "Option: "
-       read our_entry
-       echo ""
-       ${OPTIONS[our_entry]} ${our_entry}
+       read -p "Option: " our_entry
+       [ $? -eq 0 ] || exit 0
+
+       numeric="^[[:digit:]]+$"
+       if [[ "$our_entry" =~ $numeric ]]; then
+               ${OPTIONS[our_entry]} ${our_entry}
+       else
+               echo "Please enter a numeric value"
+       fi
 
        if [ "$QUIT" == "0" ] ; then
                echo
-- 
2.17.1

Reply via email to