Commit graph

18 commits

Author SHA1 Message Date
Aidan MacDonald
6c52fa139c Remove browse_context_init()
Prefer to use designated initializers to avoid having to specify
unneeded parameters. Non-initialized members are zero-initialized
by the compiler.

Change-Id: Ia6a03c45cb3ef0b30f458d7d0ae1604a350c737c
2022-12-17 13:36:38 +00:00
William Wilgus
6f54bb63fc open_plugin.c access open_plugin_entry through a function
just a few updates to open_plugin save a bit of space by granting access through a getter function

Change-Id: I2c0eaa1ade867510798b213006064ee1c00aa016
2022-12-16 09:05:06 -05:00
William Wilgus
eaf717744d [Bug Fix] open_plugin.c update checksum check for spinning disks
Lang_id keys take LANG_LAST_INDEX_IN_ARRAY for the checksum
spinning disks did not have the code to do so

Change-Id: I617e1a5462d8d6c4830a9b59171bdd7167d5e7a1
2022-12-13 23:37:26 -05:00
William Wilgus
0b7a387671 open_plugins add name when plugin can't open & check LANG_LAST_INDEX_IN_ARRAY
can't open '' was confusing for users so pass the key to open plugin
in theory you could have a plugin that defaulted to these lang_ids
run but its good enough to tell the user what failed to open IMO

lang_id changes mess with open_plugin since it uses them as look-up keys
so add checks for LANG_LAST_INDEX_IN_ARRAY to the checksum

the plugin now removes entries with an invalid checksum

devices with harddrives only append their .dat file so have them skip entries
with invalid checksums and only notify user if a valid entry wasn't found
(these users can run the open_plugins plugin to remove invalid entries)

Change-Id: Icf157675beaccda785643d5a9ed032a7cde30f12
2022-11-17 01:43:16 -05:00
William Wilgus
f6c719d7ec replace strlcpy with strmemccpy
replace applicable calls to strlcpy with calls to strmemccpy
which null terminates on truncation

in theory the strmemccpy calls should be slightly faster since they
don't traverse the rest of the source string on truncation
but I seriously doubt there is too much of that going on in the code base

Change-Id: Ia0251514e36a6242bbf3f03c5e0df123aba60ed2
2022-11-14 23:56:16 -05:00
Aidan MacDonald
6e37b31851 apps: fix use of negative fd in open_plugin.c
Bug reported by UBSan.

Change-Id: I3223a496dfa5df4e3df97fb88a14ea0174d4b428
2022-05-02 16:42:32 +01:00
William Wilgus
1d67f83c58 root_menu.c fix recent regression for shortcuts add resume for plugins
recent changes broke shortcuts when they originated from the root menu

I mistakenly thought GO_TO_ROOT only happened at start and otherwise was
GO_TO_PREVIOUS

this commit also adds a few missing features for Start In Previous
to resume the last plugin running at shutdown

Additionally GO_TO_ROOT now overwrites the global last_screen so you can
return to the main menu on next startup

Change-Id: I86bf842616e25dc3d4f684ff9d476e6a5ba96b04
2021-11-07 01:49:15 -05:00
William Wilgus
36d319b084 Open Plugins Ignore hash for lang Ids
no need to look up a hash when we have another searchable field
remove some un-needed checks

Change-Id: I394e5f796a164aa4bcb68a56ca02cd6a7f18d332
2021-10-23 02:45:54 -04:00
William Wilgus
e1553d860d Open_Plugin add checksum on struct offsets
Adding a checksum over the struct offset will allow checking
for compatibility across machines rather than using packed structs
to ensure compability

For any file created by the user from the device  this isn't really a concern

But for files between machines, across installs (sim v device),
possibly even across compilers this at least will alert the user
rather than returning junk data

Change-Id: Id0531bbaa7013dce24dece270849f0a10ac99c20
2021-10-18 23:30:27 -04:00
William Wilgus
15ee740060 Open Plugins search by langids
On language change Stored plugins may fail to run due
to hashing on lang dependent string

allows searching by langid when the supplied key is LANG_PTR

Fixes error on hash flush where previous entry was not restored

Adds routine to update file in-place (for ATA targets)
Other targets make a temp file to copy entries

breaking changes:
ROCKBOXDIR is no longer hashed since
/.rockbox directory may soon be able to be changed
packed attribute added to op data structure -- oops

Change-Id: Ieead26609559b9c5bdadc6a95227cb2bfbb9f71c
2021-10-16 10:18:44 -04:00
William Wilgus
3b6c3d769f open_plugins bugfix failure to save
if you added a plugin through the core settings and then used the shortcut
immediately the entry would never get flushed to disk

Change-Id: I62e876bbf0a8fa96acba1cc2582e2563401547f1
2021-08-03 00:31:10 +00:00
William Wilgus
f9c5d1fccf open_plugin.c (CORE) File input Bugfixes
Explicitly Null terminate char fields
0 is a valid file descriptor

Change-Id: I0faa9f5ec919ca913bceabf919fbaefcb38c39b9
2021-07-29 23:15:33 -04:00
William Wilgus
775645e649 Shortcuts.c fix regression from last bugfix
wiped out the lang id check which causes shortcuts menu to
pop error message when browsing to folders

shortcut menu uses the return to check for validity

Change-Id: I30061f034f99ea66844e45ea842e52843ea6062b
2021-03-18 13:23:24 -04:00
William Wilgus
29fa47d43d Open Plugin cache plugin entry when possible
leave plugin entries in ram and try not to save them unless necessary
doesn't use more space just a bit of careful ordering with the buffer

Change-Id: I1973e9ad4655c2544f596b37cee35601a0cffa94
2021-03-18 02:39:30 +00:00
William Wilgus
0dce973729 OpenPlugins Allow opx shortcuts
Allow opx shortcuts to be run through the shortcut menu

Change-Id: I6597b9485dfb224766c442257c4d9c8ac02eece4
2021-03-07 08:22:01 -05:00
William Wilgus
8ee035b6c8 Open_plugin add ability to import opx shortcuts, bug fix
shortcuts can be exported as .opx; now they can import as well

if parameter is a valid file..
 plugins with parameters are now hashed on the parameter path

fix bug with empty parameters not overwriting last valid parameter

Change-Id: I149519811f07cb4ba22b7113449e2f89f77f1eee
2020-08-19 02:06:16 -04:00
William Wilgus
96e1bb6556 Open Plugin cleanup
cleanup a few unneded functions

Change-Id: I7207fd1380f92bb26ab8365a4bbef6104975acbe
2020-08-18 02:07:23 +00:00
William Wilgus
3550283442 Add open_plugin to core
open_plugin allows arbitrary plugins to be called
in hotkey and start screen

replaces PictureFlow Integration
shortcuts menu plays plugins now too

rather than store paths and parameters in the settings
that reside in memory instead entries in a file are searched by hash.
after all, the plugin has to be loaded from disk anyways

----------------------------------------------------------------------------
shortcut_viewer.rock--  can now call plugins rather than taking you to them
in the browser
-----------------------------------------------------------------------------
Added a new option to menus:
 F_CB_ON_SELECT_ONLY
 instead of option callback every time a item is accessed
 F_CB_ON_SELECT_ONLY fires callback only when item is selected
-----------------------------------------------------------------------------
Added manual entries
-----------------------------------------------------------------------------

Change-Id: I078b57b1d2b4dd633c89212c1082fcbc1b516e6a
2020-08-17 10:15:14 -04:00