29#define DISABLE_DEBUGLOG
32#include "plugindescr_p.h"
34#include <gwenhywfar/buffer.h>
35#include <gwenhywfar/debug.h>
36#include <gwenhywfar/directory.h>
37#include <gwenhywfar/i18n.h>
88 pd->langDomain=strdup(p);
100 pd->version=strdup(p);
103 pd->author=strdup(p);
106 pd->shortDescr=strdup(p);
109 pd->longDescr=strdup(p);
118 assert(pd->refCount);
119 if (pd->refCount==1) {
126 free(pd->shortDescr);
129 free(pd->langDomain);
145 assert(pd->refCount);
164 np->fileName=strdup(s);
177 np->langDomain=strdup(s);
180 np->shortDescr=strdup(s);
183 np->author=strdup(s);
186 np->version=strdup(s);
189 np->longDescr=strdup(s);
190 np->isActive=pd->isActive;
248 pd->name=s?strdup(s):
NULL;
265 pd->type=s?strdup(s):
NULL;
281 free(pd->shortDescr);
282 pd->shortDescr=s?strdup(s):
NULL;
299 pd->author=s?strdup(s):
NULL;
316 pd->version=s?strdup(s):
NULL;
333 pd->longDescr=s?strdup(s):
NULL;
367#ifndef NO_DEPRECATED_SYMBOLS
382 if (
fmt && strcasecmp(
fmt, s)==0) {
453 pd->fileName=strdup(s);
519 unsigned int pathLen;
522 if (folder && *folder) {
529 const char *fileName;
533 if (fileName && *fileName) {
540 "Adding loaded plugin description %s/%s (%s)",
578 if (!pluginDescrNode)
579 pluginDescrNode=fileNode;
592 else if (strcasecmp(ft, pluginType)!=0) {
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
int GWEN_Buffer_SetPos(GWEN_BUFFER *bf, uint32_t i)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
int GWEN_Buffer_Crop(GWEN_BUFFER *bf, uint32_t pos, uint32_t l)
GWENHYWFAR_API const char * fmt
#define DBG_MEM_INC(o, attach)
#define DBG_INFO(dbg_logger, format,...)
#define DBG_NOTICE(dbg_logger, format,...)
#define DBG_ERROR(dbg_logger, format,...)
#define DBG_WARN(dbg_logger, format,...)
#define DBG_DEBUG(dbg_logger, format,...)
GWENHYWFAR_API int GWEN_Directory_GetFileEntries(const char *folder, GWEN_STRINGLIST *sl, const char *mask)
#define GWEN_ERROR_GENERIC
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
#define GWEN_DIR_SEPARATOR_S
GWEN_STRINGLIST * GWEN_I18N_GetCurrentLocaleList(void)
const char * GWEN_I18N_Translate(const char *txtdom, const char *text)
#define GWEN_LIST_FINI(t, element)
#define GWEN_LIST_FUNCTIONS(t, pr)
#define GWEN_LIST_INIT(t, element)
#define GWEN_LIST2_FUNCTIONS(t, pr)
struct GWEN_PLUGIN_DESCRIPTION_LIST2 GWEN_PLUGIN_DESCRIPTION_LIST2
GWEN_PLUGIN_DESCRIPTION * GWEN_PluginDescription_List2_ForEach(GWEN_PLUGIN_DESCRIPTION_LIST2 *list, GWEN_PLUGIN_DESCRIPTION_LIST2_FOREACH func, void *user_data)
unsigned int GWEN_PluginDescription_List2_GetSize(GWEN_PLUGIN_DESCRIPTION_LIST2 *l)
void GWEN_PluginDescription_List2_PushBack(GWEN_PLUGIN_DESCRIPTION_LIST2 *l, GWEN_PLUGIN_DESCRIPTION *p)
void GWEN_PluginDescription_List2_free(GWEN_PLUGIN_DESCRIPTION_LIST2 *l)
GWEN_PLUGIN_DESCRIPTION_LIST2 * GWEN_PluginDescription_List2_new()
#define GWEN_FREE_OBJECT(varname)
#define GWEN_NEW_OBJECT(typ, varname)
const char * GWEN_PluginDescription_GetVersion(const GWEN_PLUGIN_DESCRIPTION *pd)
void GWEN_PluginDescription_SetVersion(GWEN_PLUGIN_DESCRIPTION *pd, const char *s)
int GWEN_PluginDescription_GetLongDescrByFormat(const GWEN_PLUGIN_DESCRIPTION *pd, const char *s, GWEN_BUFFER *buf)
void GWEN_PluginDescription_SetAuthor(GWEN_PLUGIN_DESCRIPTION *pd, const char *s)
void GWEN_PluginDescription_SetName(GWEN_PLUGIN_DESCRIPTION *pd, const char *s)
void GWEN_PluginDescription_SetIsActive(GWEN_PLUGIN_DESCRIPTION *pd, int i)
GWEN_PLUGIN_DESCRIPTION * GWEN_PluginDescription_new(void)
const char * GWEN_PluginDescription_GetType(const GWEN_PLUGIN_DESCRIPTION *pd)
void GWEN_PluginDescription_SetPath(GWEN_PLUGIN_DESCRIPTION *pd, const char *s)
static GWEN_XMLNODE * _getLocalOrMainPluginNode(GWEN_XMLNODE *pluginDescrNode)
GWEN_PLUGIN_DESCRIPTION * GWEN_PluginDescription_fromXml(GWEN_XMLNODE *node)
void GWEN_PluginDescription_List2_freeAll(GWEN_PLUGIN_DESCRIPTION_LIST2 *pdl)
void GWEN_PluginDescription_free(GWEN_PLUGIN_DESCRIPTION *pd)
void GWEN_PluginDescription_Attach(GWEN_PLUGIN_DESCRIPTION *pd)
void GWEN_PluginDescription_SetFileName(GWEN_PLUGIN_DESCRIPTION *pd, const char *s)
static int _getLongDescrByFormat(const GWEN_PLUGIN_DESCRIPTION *pd, const char *s, GWEN_BUFFER *buf)
void GWEN_PluginDescription_SetType(GWEN_PLUGIN_DESCRIPTION *pd, const char *s)
GWEN_XMLNODE * GWEN_PluginDescription_GetXmlNode(const GWEN_PLUGIN_DESCRIPTION *pd)
const char * GWEN_PluginDescription_GetAuthor(const GWEN_PLUGIN_DESCRIPTION *pd)
const char * GWEN_PluginDescription_GetPath(const GWEN_PLUGIN_DESCRIPTION *pd)
void GWEN_PluginDescription_SetLongDescr(GWEN_PLUGIN_DESCRIPTION *pd, const char *s)
static GWEN_PLUGIN_DESCRIPTION * _readPluginDescriptionFromFile(const char *folder, const char *fullFileName, const char *pluginType)
static int _getLocalizedLongDescrByFormat(const GWEN_PLUGIN_DESCRIPTION *pd, const char *s, const char *lang, GWEN_BUFFER *buf)
static GWEN_PLUGIN_DESCRIPTION * _pdList2_freeAll_cb(GWEN_PLUGIN_DESCRIPTION *pd, void *)
const char * GWEN_PluginDescription_GetFileName(const GWEN_PLUGIN_DESCRIPTION *pd)
int GWEN_LoadPluginDescrsByType(const char *folder, const char *pluginType, GWEN_PLUGIN_DESCRIPTION_LIST2 *pdl)
int GWEN_PluginDescription_IsActive(const GWEN_PLUGIN_DESCRIPTION *pd)
const char * GWEN_PluginDescription_GetName(const GWEN_PLUGIN_DESCRIPTION *pd)
const char * GWEN_PluginDescription_GetLongDescr(const GWEN_PLUGIN_DESCRIPTION *pd)
GWEN_PLUGIN_DESCRIPTION * GWEN_PluginDescription_dup(const GWEN_PLUGIN_DESCRIPTION *pd)
void GWEN_PluginDescription_SetShortDescr(GWEN_PLUGIN_DESCRIPTION *pd, const char *s)
GWEN_PLUGIN_DESCRIPTION_LIST2 * GWEN_LoadPluginDescrs(const char *path)
const char * GWEN_PluginDescription_GetShortDescr(const GWEN_PLUGIN_DESCRIPTION *pd)
struct GWEN_PLUGIN_DESCRIPTION GWEN_PLUGIN_DESCRIPTION
void GWEN_StringList_free(GWEN_STRINGLIST *sl)
const char * GWEN_StringListEntry_Data(const GWEN_STRINGLISTENTRY *se)
GWEN_STRINGLISTENTRY * GWEN_StringListEntry_Next(const GWEN_STRINGLISTENTRY *se)
unsigned int GWEN_StringList_Count(const GWEN_STRINGLIST *sl)
GWEN_STRINGLISTENTRY * GWEN_StringList_FirstEntry(const GWEN_STRINGLIST *sl)
GWEN_STRINGLIST * GWEN_StringList_new(void)
struct GWEN_STRINGLISTENTRYSTRUCT GWEN_STRINGLISTENTRY
struct GWEN_STRINGLISTSTRUCT GWEN_STRINGLIST
GWEN_XMLNODE * GWEN_XMLNode_dup(const GWEN_XMLNODE *n)
const char * GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n, const char *name, const char *defaultValue)
GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
GWEN_XMLNODE * GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data)
GWEN_XMLNODE * GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
void GWEN_XMLNode_free(GWEN_XMLNODE *n)
#define GWEN_XML_FLAGS_TOLERANT_ENDTAGS
GWENHYWFAR_API int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags)
#define GWEN_XML_FLAGS_HANDLE_HEADERS
struct GWEN__XMLNODE GWEN_XMLNODE
#define GWEN_XML_FLAGS_HANDLE_OPEN_HTMLTAGS
#define GWEN_XML_FLAGS_DEFAULT
GWENHYWFAR_API int GWEN_XML_ReadFile(GWEN_XMLNODE *n, const char *filepath, uint32_t flags)