I've played a bit with #6275, to make the iterator available for non-power users too.
this PR automate user data migration (which happens once per update). If the folder `koreader/scripts.afterupdate` contains a file `migrate` then files will be copied to internal dir preserving their relative path. Thus user data **needs** to have the same hierarchy as internal directories.
Shell scripts will be find and run if the folder `koreader/scripts.afterupdate` exists and has no `migrate file`.
In the case of `koreader/scripts.always` there's no migration available, just shell scripts.
Digging a bit seems not possible to create new directories on app internal storage (it just crashes on the emulator since API25). So very fancy extensions are not supported, but it is ok to override files and create new files if dir already exists.
Tested with:
```find scripts.afterupdate/
scripts.afterupdate/
scripts.afterupdate/data
scripts.afterupdate/data/hyph
scripts.afterupdate/data/hyph/Roman.pattern
scripts.afterupdate/data/example.css
scripts.afterupdate/migrate
```
Results:
```
06-20 16:16:33.590 3584 3597 I KOReader: after-update: running migration
06-20 16:16:33.596 3584 3597 I KOReader: command cp /storage/emulated/0/koreader/scripts.afterupdate/data/hyph/Roman.pattern /data/user/0/org.koreader.launcher/files/data/hyph/Roman.pattern returned 0
06-20 16:16:33.600 3584 3597 I KOReader: command cp /storage/emulated/0/koreader/scripts.afterupdate/data/example.css /data/user/0/org.koreader.launcher/files/data/example.css returned 0
06-20 16:16:33.604 3584 3597 I KOReader: command rm /data/user/0/org.koreader.launcher/files/afterupdate.marker returned 0
```
Add the possibility to run *.sh scripts:
After an update of koreader all *.sh scripts in /sdcard/koreader/scripts.afterupdate
are executed.
On every start of koreader run all *.sh scripts in /sdcard/koreader/scripts.always
Requires koreader/android-luajit-launcher#233
Requires koreader/koreader-base#1117
It is a workaround for #6263 but can be useful on some devices with erratic back key behaviour too (yep, Onyx)
add support for runtime permissions on api23+
add support for devices with a notch on api28+
fix some potential memory leaks
do not check luajit-launcher shell scripts
* [fix] Add LuaJIT patch to sync with koreader-base https://github.com/koreader/android-luajit-launcher/pull/141
A bit of an emergency fix to just get it working ASAP. A patch was added to base LuaJIT in https://github.com/koreader/koreader-base/pull/892, which caused a mismatch and build failures over here. Unfortunately that was hidden by some excessive Android verbosity inadvertently introduced in https://github.com/koreader/koreader-base/pull/888, and on my local instance where I did a sanity check LuaJIT was already compiled…
* Add a toggle to disable the C blitter in the Dev menu (depends on https://github.com/koreader/koreader-base/pull/882) (never shown if the JIT is disabled, grayed out if the C blitter is not installed)
* Fix a few sizeUtf8Text call sites that were doing a nil check in order to account for the new return type.
* Tweak statusbar handling to avoid spurious sizeUtf8Text warnings when it's hidden, and unify its behavior between being hidden via toggle, and hidden on book open (at least when all-at-once is not enabled).
* c.f., https://github.com/koreader/koreader-base/pull/882 (Android, PB, RGB32 & Legacy Kindle regression fixes).