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>
80 pd->langDomain=strdup(p);
92 pd->version=strdup(p);
98 pd->shortDescr=strdup(p);
101 pd->longDescr=strdup(p);
110 assert(pd->refCount);
111 if (pd->refCount==1) {
118 free(pd->shortDescr);
121 free(pd->langDomain);
137 assert(pd->refCount);
156 np->fileName=strdup(s);
169 np->langDomain=strdup(s);
172 np->shortDescr=strdup(s);
175 np->author=strdup(s);
178 np->version=strdup(s);
181 np->longDescr=strdup(s);
182 np->isActive=pd->isActive;
192 __attribute__((unused))
void *user_data)
329 if (
fmt && strcasecmp(
fmt, s)==0) {
348#ifndef NO_DEPRECATED_SYMBOLS
405 pd->fileName=strdup(s);
459 unsigned int pathLen;
472 "Path \"%s\" is not available",
482 if (strcmp(nbuffer,
".") &&
483 strcmp(nbuffer,
"..")) {
486 nlen=strlen(nbuffer);
488 if (strcasecmp(nbuffer+nlen-4,
".xml")==0) {
502 if (!S_ISDIR(st.st_mode)) {
554 else if (strcasecmp(ft, type)!=0) {
575 "Ignoring file \"%s\" (bad/missing type)",
581 "File \"%s\" does not contain a plugin "
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)
int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c)
GWENHYWFAR_API const char * fmt
#define DBG_MEM_INC(o, attach)
#define DBG_DEBUG(dbg_logger, format, args...)
#define DBG_WARN(dbg_logger, format, args...)
#define DBG_NOTICE(dbg_logger, format, args...)
#define DBG_INFO(dbg_logger, format, args...)
#define DBG_ERROR(dbg_logger, format, args...)
GWENHYWFAR_API int GWEN_Directory_Read(GWEN_DIRECTORY *d, char *buffer, unsigned int len)
struct GWEN_DIRECTORY GWEN_DIRECTORY
GWENHYWFAR_API int GWEN_Directory_Open(GWEN_DIRECTORY *d, const char *n)
GWENHYWFAR_API GWEN_DIRECTORY * GWEN_Directory_new(void)
GWENHYWFAR_API void GWEN_Directory_free(GWEN_DIRECTORY *d)
GWENHYWFAR_API int GWEN_Directory_Close(GWEN_DIRECTORY *d)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
#define GWEN_DIR_SEPARATOR
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)
int GWEN_PluginDescription_GetLongDescrByFormat(const GWEN_PLUGIN_DESCRIPTION *pd, const char *s, GWEN_BUFFER *buf)
void GWEN_PluginDescription_SetIsActive(GWEN_PLUGIN_DESCRIPTION *pd, int i)
const char * GWEN_PluginDescription_GetType(const GWEN_PLUGIN_DESCRIPTION *pd)
void GWEN_PluginDescription_SetPath(GWEN_PLUGIN_DESCRIPTION *pd, const char *s)
void GWEN_PluginDescription_List2_freeAll(GWEN_PLUGIN_DESCRIPTION_LIST2 *pdl)
void GWEN_PluginDescription_free(GWEN_PLUGIN_DESCRIPTION *pd)
int GWEN_LoadPluginDescrsByType(const char *path, const char *type, GWEN_PLUGIN_DESCRIPTION_LIST2 *pdl)
void GWEN_PluginDescription_Attach(GWEN_PLUGIN_DESCRIPTION *pd)
GWEN_PLUGIN_DESCRIPTION * GWEN_PluginDescription_new(GWEN_XMLNODE *node)
void GWEN_PluginDescription_SetFileName(GWEN_PLUGIN_DESCRIPTION *pd, const char *s)
int GWEN_PluginDescription__GetLongDescrByFormat(const GWEN_PLUGIN_DESCRIPTION *pd, const char *s, GWEN_BUFFER *buf)
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)
GWEN_PLUGIN_DESCRIPTION * GWEN_PluginDescription_List2_freeAll_cb(GWEN_PLUGIN_DESCRIPTION *pd, __attribute__((unused)) void *user_data)
const char * GWEN_PluginDescription_GetFileName(const GWEN_PLUGIN_DESCRIPTION *pd)
int GWEN_PluginDescription_IsActive(const GWEN_PLUGIN_DESCRIPTION *pd)
int GWEN_PluginDescription__GetLocalizedLongDescrByFormat(const GWEN_PLUGIN_DESCRIPTION *pd, const char *s, const char *lang, GWEN_BUFFER *buf)
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)
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
const char * GWEN_StringListEntry_Data(const GWEN_STRINGLISTENTRY *se)
GWEN_STRINGLISTENTRY * GWEN_StringListEntry_Next(const GWEN_STRINGLISTENTRY *se)
GWEN_STRINGLISTENTRY * GWEN_StringList_FirstEntry(const GWEN_STRINGLIST *sl)
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)