luci-mod-system: ignore empty /proc/mtd on flash page
authorJo-Philipp Wich <jo@mein.io>
Wed, 22 Jul 2020 08:20:42 +0000 (10:20 +0200)
committerJo-Philipp Wich <jo@mein.io>
Wed, 22 Jul 2020 08:29:45 +0000 (10:29 +0200)
A present, but empty /proc/mtd causes validation on the flash page to fail,
preventing any other operation.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit d2d3738d9046339d6374a5957cb790d0d9d62456)

modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js

index b058091f94bfa832375290873f884d37cc92bb17..5eb905a2e42675dc92d7156991fca9f82ab9a542 100644 (file)
@@ -382,16 +382,21 @@ return view.extend({
                o.onclick = L.bind(this.handleRestore, this);
 
 
-               if (procmtd.length) {
+               var mtdblocks = [];
+               procmtd.split(/\n/).forEach(function(ln) {
+                       var match = ln.match(/^mtd(\d+): .+ "(.+?)"$/);
+                       if (match)
+                               mtdblocks.push(match[1], match[2]);
+               });
+
+               if (mtdblocks.length) {
                        o = s.option(form.SectionValue, 'actions', form.NamedSection, 'actions', 'actions', _('Save mtdblock contents'), _('Click "Save mtdblock" to download specified mtdblock file. (NOTE: THIS FEATURE IS FOR PROFESSIONALS! )'));
                        ss = o.subsection;
 
                        o = ss.option(form.ListValue, 'mtdselect', _('Choose mtdblock'));
-                       procmtd.split(/\n/).forEach(function(ln) {
-                               var match = ln.match(/^mtd(\d+): .+ "(.+?)"$/);
-                               if (match)
-                                       o.value(match[1], match[2]);
-                       });
+
+                       for (var i = 0; i < mtdblocks.length; i += 2)
+                               o.value(mtdblocks[i], mtdblocks[i+1]);
 
                        o = ss.option(form.Button, 'mtddownload', _('Download mtdblock'));
                        o.inputstyle = 'action important';