[ALL] Added more fields to the metadata

- Now the plugin it holds the build timestamp and a description
- Added descriptions for all plugins
This commit is contained in:
Maschell 2018-02-18 18:43:51 +01:00
parent 869b3bc391
commit d64f221a92
10 changed files with 56 additions and 21 deletions

View File

@ -79,7 +79,7 @@ extern "C" int Menu_Main(int argc, char **argv){
DEBUG_FUNCTION_LINE("Wii U Plugin System Loader %s\n",APP_VERSION);
//setup_os_exceptions();
setup_os_exceptions();
DEBUG_FUNCTION_LINE("Mount SD partition\n");
Init_SD_USB();

View File

@ -239,7 +239,7 @@ exit_error:
bool PluginInformation::metadataRead(Elf *elf, Elf32_Sym *symtab, size_t symtab_count, size_t symtab_strndx) {
char *metadata = NULL, *metadata_cur, *metadata_end;
const char *game, *name, *author, *version, *license, *wups;
const char *name, *author, *version, *license, *wups, *buildtimestamp, *description;
Elf_Scn *scn;
size_t shstrndx;
@ -300,12 +300,13 @@ bool PluginInformation::metadataRead(Elf *elf, Elf32_Sym *symtab, size_t symtab_
goto exit_error;
}
game = NULL;
name = NULL;
author = NULL;
version = NULL;
license = NULL;
wups = NULL;
buildtimestamp = NULL;
description = NULL;
for (metadata_cur = metadata; metadata_cur < metadata_end; metadata_cur = strchr(metadata_cur, '\0') + 1) {
@ -324,13 +325,7 @@ bool PluginInformation::metadataRead(Elf *elf, Elf32_Sym *symtab, size_t symtab_
continue;
}
if (strncmp(metadata_cur, "game", eq - metadata_cur) == 0) {
if (game != NULL) {
DEBUG_FUNCTION_LINE("Warning: Ignoring '%s' - Multiple WUPS_PLUGIN_GAME declarations.\n", path);
goto exit_error;
}
game = eq + 1;
} else if (strncmp(metadata_cur, "name", eq - metadata_cur) == 0) {
if (strncmp(metadata_cur, "name", eq - metadata_cur) == 0) {
if (name != NULL) {
DEBUG_FUNCTION_LINE("Warning: Ignoring '%s' - Multiple WUPS_PLUGIN_NAME declarations.\n", path);
goto exit_error;
@ -354,6 +349,18 @@ bool PluginInformation::metadataRead(Elf *elf, Elf32_Sym *symtab, size_t symtab_
goto exit_error;
}
license = eq + 1;
} else if (strncmp(metadata_cur, "buildtimestamp", eq - metadata_cur) == 0) {
if (buildtimestamp != NULL) {
DEBUG_FUNCTION_LINE("Warning: Ignoring '%s' - Multiple WUPS_PLUGIN_TIMESTAMP declarations.\n", path);
goto exit_error;
}
buildtimestamp = eq + 1;
} else if (strncmp(metadata_cur, "description", eq - metadata_cur) == 0) {
if (description != NULL) {
DEBUG_FUNCTION_LINE("Warning: Ignoring '%s' - Multiple WUPS_PLUGIN_LICENSE declarations.\n", path);
goto exit_error;
}
description = eq + 1;
} else if (strncmp(metadata_cur, "wups", eq - metadata_cur) == 0) {
if (wups != NULL) {
DEBUG_FUNCTION_LINE("Warning: Ignoring '%s' - Multiple WUPS_PLUGIN_NAME declarations.\n", path);
@ -363,14 +370,18 @@ bool PluginInformation::metadataRead(Elf *elf, Elf32_Sym *symtab, size_t symtab_
}
}
if (game == NULL){
game = "";
if (description == NULL){
description = "";
}
// TODO:
/*if (wups == NULL || strcmp(wups, "0.1") != 0) {
if (wups == NULL || strcmp(wups, "0.1") != 0) {
DEBUG_FUNCTION_LINE("Warning: Ignoring '%s' - Unrecognised WUPS version.\n", path);
goto exit_error;
}*/
}
if (buildtimestamp == NULL) {
DEBUG_FUNCTION_LINE("Warning: Ignoring '%s' - Couldn't find buildtimestamp.\n", path);
goto exit_error;
}
if (name == NULL) {
DEBUG_FUNCTION_LINE("Warning: Ignoring '%s' - Missing WUPS_PLUGIN_NAME declaration.\n",path);
goto exit_error;
@ -392,6 +403,8 @@ bool PluginInformation::metadataRead(Elf *elf, Elf32_Sym *symtab, size_t symtab_
this->setAuthor(author);
this->setVersion(version);
this->setLicense(license);
this->setBuildTimestamp(buildtimestamp);
this->setDescription(description);
return true;

View File

@ -79,6 +79,14 @@ class PluginInformation{
return this->license;
}
std::string getBuildTimestamp(){
return this->buildtimestamp;
}
std::string getDescription(){
return this->description;
}
std::string getPath(){
return path;
}
@ -107,6 +115,14 @@ class PluginInformation{
this->license = license;
}
void setBuildTimestamp(const char * buildtimestamp){
this->buildtimestamp = buildtimestamp;
}
void setDescription(const char * description){
this->description = description;
}
void setSize(size_t size){
this->size = size;
}
@ -126,6 +142,8 @@ class PluginInformation{
std::string author;
std::string version;
std::string license;
std::string buildtimestamp;
std::string description;
size_t size;
};

View File

@ -66,7 +66,8 @@ std::vector<PluginInformation *> PluginLoader::getPluginInformation(const char *
DEBUG_FUNCTION_LINE("Found file: %s\n",full_file_path.c_str()) ;
PluginInformation * plugin = PluginInformation::loadPluginInformation(full_file_path);
if(plugin != NULL){
DEBUG_FUNCTION_LINE("Found plugin %s by %s. Size: %d kb \n",plugin->getName().c_str(),plugin->getAuthor().c_str(),plugin->getSize()/1024) ;
DEBUG_FUNCTION_LINE("Found plugin %s by %s. Built on %s Size: %d kb \n",plugin->getName().c_str(),plugin->getAuthor().c_str(),plugin->getBuildTimestamp().c_str(),plugin->getSize()/1024) ;
DEBUG_FUNCTION_LINE("Description: %s \n",plugin->getDescription().c_str()) ;
result.push_back(plugin);
} else {
DEBUG_FUNCTION_LINE("%s is not a valid plugin\n",full_file_path.c_str()) ;
@ -92,7 +93,6 @@ std::vector<PluginInformation *> PluginLoader::getPluginsLoadedInMemory(){
void PluginLoader::loadAndLinkPlugins(std::vector<PluginInformation *> pluginInformation){
std::vector<PluginData *> loadedPlugins;
for(size_t i = 0;i < pluginInformation.size(); i++){
DEBUG_FUNCTION_LINE("loadAndLinkPlugins for %d\n",i) ;
PluginInformation * cur_info = pluginInformation[i];
PluginData * pluginData = loadAndLinkPlugin(cur_info);
if(pluginData == NULL){
@ -126,7 +126,6 @@ void PluginLoader::clearPluginInformation(std::vector<PluginInformation *> plugi
}
PluginData * PluginLoader::loadAndLinkPlugin(PluginInformation * pluginInformation){
DEBUG_FUNCTION_LINE("\n");
PluginData * result = NULL;
int fd = -1;
Elf *elf = NULL;
@ -160,7 +159,6 @@ PluginData * PluginLoader::loadAndLinkPlugin(PluginInformation * pluginInformati
goto exit_error;
}
DEBUG_FUNCTION_LINE("\n");
result = new PluginData(pluginInformation);
if(result == NULL){
DEBUG_FUNCTION_LINE("Failed to create object\n");

View File

@ -6,7 +6,8 @@
#include "dynamic_libs/fs_functions.h"
#include "utils/logger.h"
WUPS_PLUGIN_NAME("test PLUGIN");
WUPS_PLUGIN_NAME("Example plugin");
WUPS_PLUGIN_DESCRIPTION("This is just an example plugin and will log the FSOpenFile function.");
WUPS_PLUGIN_VERSION("v1.0");
WUPS_PLUGIN_AUTHOR("Maschell");
WUPS_PLUGIN_LICENSE("BSD");

View File

@ -10,6 +10,7 @@
#include <fs/sd_fat_devoptab.h>
WUPS_PLUGIN_NAME("HID to VPAD lite");
WUPS_PLUGIN_DESCRIPTION("Enables HID devices as controllers on your Wii U");
WUPS_PLUGIN_VERSION("v1.0");
WUPS_PLUGIN_AUTHOR("Maschell");
WUPS_PLUGIN_LICENSE("GPL");

View File

@ -6,6 +6,7 @@
#include "utils/logger.h"
WUPS_PLUGIN_NAME("Padcon");
WUPS_PLUGIN_DESCRIPTION("Turns the gamepad screen on/off when pressing the right stick.");
WUPS_PLUGIN_VERSION("v1.0");
WUPS_PLUGIN_AUTHOR("Maschell");
WUPS_PLUGIN_LICENSE("GPL");

View File

@ -15,6 +15,7 @@
#include "modpackSelector.h"
WUPS_PLUGIN_NAME("SDCaffiine lite");
WUPS_PLUGIN_DESCRIPTION("Replaces the game files on the fly. Can be used for gamemods");
WUPS_PLUGIN_VERSION("v1.0");
WUPS_PLUGIN_AUTHOR("Maschell");
WUPS_PLUGIN_LICENSE("GPL");

View File

@ -35,6 +35,7 @@
#include <common/c_retain_vars.h>
WUPS_PLUGIN_NAME("SwipSwapMe");
WUPS_PLUGIN_DESCRIPTION("Swaps the gamepad and tv screen when pressing a certain button (TV is default)");
WUPS_PLUGIN_VERSION("v1.0");
WUPS_PLUGIN_AUTHOR("Maschell");
WUPS_PLUGIN_LICENSE("GPL");

View File

@ -215,10 +215,11 @@ typedef struct wups_loader_entry_t {
extern const char wups_meta_ ## id [] WUPS_SECTION("meta"); \
const char wups_meta_ ## id [] = #id "=" value
#define WUPS_PLUGIN_NAME(x) WUPS_META(name, x); WUPS_META(wups, "0.1")
#define WUPS_PLUGIN_NAME(x) WUPS_META(name, x); WUPS_META(wups, "0.1"); WUPS_META(buildtimestamp, __DATE__ " " __TIME__)
#define WUPS_PLUGIN_AUTHOR(x) WUPS_META(author, x)
#define WUPS_PLUGIN_VERSION(x) WUPS_META(version, x)
#define WUPS_PLUGIN_LICENSE(x) WUPS_META(license, x)
#define WUPS_PLUGIN_DESCRIPTION(x) WUPS_META(description, x)
void WUPS_InitFS(wups_loader_init_args_t* args);