35 #include <gwenhywfar/misc.h>
36 #include <gwenhywfar/debug.h>
37 #include <gwenhywfar/text.h>
40 #define DISABLE_DEBUGLOG
63 while(i<argc && !stop) {
64 GWEN_ARGS_ELEMENT_TYPE t;
81 t=GWEN_ArgsElementTypeLong;
84 t=GWEN_ArgsElementTypeShort;
87 t=GWEN_ArgsElementTypeFreeParam;
90 case GWEN_ArgsElementTypeFreeParam:
98 DBG_ERROR(
GWEN_LOGDOMAIN,
"Only options are allowed, but argument \"%s\" was not recognized as a known option.", p);
109 case GWEN_ArgsElementTypeShort:
110 for(tmpArgs=args;; tmpArgs++) {
117 tmpArgs->
name, 0, 0)+1);
147 switch(tmpArgs->
type) {
155 if (sscanf(p,
"%i", &value)!=1) {
164 tmpArgs->
name, value);
189 case GWEN_ArgsElementTypeLong:
193 while(*v && *v!=
'=') v++;
194 tmpBuf=(
char*)malloc(v-p+1);
196 memmove(tmpBuf, p, v-p);
199 for(tmpArgs=args;; tmpArgs++) {
206 tmpArgs->
name, 0, 0)+1);
242 switch(tmpArgs->
type) {
250 if (sscanf(v,
"%i", &value)!=1) {
260 tmpArgs->
name, value);
299 for(tmpArgs=args;; tmpArgs++) {
311 if (tmpArgs->
minNum && ((
unsigned int)c<tmpArgs->minNum)) {
325 if (tmpArgs->
maxNum && ((
unsigned int)c>tmpArgs->
maxNum)) {
327 "Option \"%s\" needed at most %d times (have %d)",
368 for(tmpArgs=args;; tmpArgs++) {
414 "Option \"%s\" has neither a long nor a short name",
int GWEN_Args__AppendTXT(GWEN_BUFFER *ubuf, const char *s, unsigned int ins)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
const char * shortDescription
#define GWEN_DB_FLAGS_OVERWRITE_VARS
struct GWEN_DB_NODE GWEN_DB_NODE
void GWEN_DB_Group_free(GWEN_DB_NODE *n)
#define GWEN_ARGS_FLAGS_HELP
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
int GWEN_Args_UsageHTML(GWEN_UNUSED const GWEN_ARGS *args, GWEN_UNUSED GWEN_BUFFER *ubuf)
void GWEN_Buffer_Reset(GWEN_BUFFER *bf)
#define GWEN_ARGS_RESULT_HELP
int GWEN_Args_UsageTXT(const GWEN_ARGS *args, GWEN_BUFFER *ubuf)
#define GWEN_ARGS_RESULT_ERROR
#define GWEN_ARGS_MODE_STOP_AT_FREEPARAM
const char * longDescription
int GWEN_Args_ShortUsage(GWEN_UNUSED const GWEN_ARGS *args, GWEN_UNUSED GWEN_BUFFER *ubuf, GWEN_UNUSED GWEN_ARGS_OUTTYPE ot)
#define DBG_DEBUG(dbg_logger, format, args...)
int GWEN_Args_Usage(const GWEN_ARGS *args, GWEN_BUFFER *ubuf, GWEN_ARGS_OUTTYPE ot)
#define GWEN_ARGS_MODE_ALLOW_FREEPARAM
int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
#define GWEN_ARGS_FLAGS_LAST
#define DBG_ERROR(dbg_logger, format, args...)
int GWEN_Args_Check(int argc, char **argv, int startAt, uint32_t mode, const GWEN_ARGS *args, GWEN_DB_NODE *db)
int GWEN_DB_SetCharValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const char *val)
#define DBG_INFO(dbg_logger, format, args...)
int GWEN_DB_GetIntValue(GWEN_DB_NODE *n, const char *path, int idx, int defVal)
GWEN_DB_NODE * GWEN_DB_Group_new(const char *name)
int GWEN_DB_SetIntValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, int val)
int GWEN_Gui_ReadString(const char *text, GWEN_BUFFER *tbuf)
#define GWEN_ARGS_FLAGS_HAS_ARGUMENT
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
#define GWEN_DB_FLAGS_DEFAULT