gwenhywfar  5.10.1
buildsubcmd.c
Go to the documentation of this file.
1 /***************************************************************************
2  begin : Mon Feb 08 2021
3  copyright : (C) 2021 by Martin Preuss
4  email : martin@libchipcard.de
5 
6  ***************************************************************************
7  * Please see toplevel file COPYING for license details *
8  ***************************************************************************/
9 
10 #ifdef HAVE_CONFIG_H
11 # include <config.h>
12 #endif
13 
14 #include "gwenbuild/buildctx/buildsubcmd_p.h"
15 
16 #include <gwenhywfar/debug.h>
17 #include <gwenhywfar/misc.h>
18 
19 
20 GWEN_LIST_FUNCTIONS(GWB_BUILD_SUBCMD, GWB_BuildSubCmd);
21 
22 
23 
24 
26 {
27  GWB_BUILD_SUBCMD *cmd;
28 
31 
32  return cmd;
33 }
34 
35 
36 
38 {
39  if (origCmd==NULL)
40  return NULL;
41  else {
42  GWB_BUILD_SUBCMD *cmd;
43 
44  cmd=GWB_BuildSubCmd_new();
45  cmd->flags=origCmd->flags;
46  cmd->command=(origCmd->command)?strdup(origCmd->command):NULL;
47  cmd->arguments=(origCmd->arguments)?strdup(origCmd->arguments):NULL;
48  cmd->buildMessage=(origCmd->buildMessage)?strdup(origCmd->buildMessage):NULL;
49  cmd->depFilePath=(origCmd->depFilePath)?strdup(origCmd->depFilePath):NULL;
50 
51  return cmd;
52  }
53 
54 }
55 
56 
57 
59 {
60  if (cmd) {
62  free(cmd->command);
63  free(cmd->arguments);
64  free(cmd->buildMessage);
65 
66  GWEN_FREE_OBJECT(cmd);
67  }
68 }
69 
70 
71 
73 {
74  return cmd->flags;
75 }
76 
77 
78 
80 {
81  cmd->flags=f;
82 }
83 
84 
85 
87 {
88  cmd->flags|=f;
89 }
90 
91 
92 
94 {
95  cmd->flags&=~f;
96 }
97 
98 
99 
101 {
102  return cmd->command;
103 }
104 
105 
106 
108 {
109  free(cmd->command);
110  cmd->command=s?strdup(s):NULL;
111 }
112 
113 
114 
116 {
117  return cmd->arguments;
118 }
119 
120 
121 
123 {
124  free(cmd->arguments);
125  cmd->arguments=s?strdup(s):NULL;
126 }
127 
128 
129 
131 {
132  return cmd->buildMessage;
133 }
134 
135 
136 
138 {
139  free(cmd->buildMessage);
140  cmd->buildMessage=s?strdup(s):NULL;
141 }
142 
143 
144 
146 {
147  return cmd->depFilePath;
148 }
149 
150 
151 
153 {
154  free(cmd->depFilePath);
155  cmd->depFilePath=s?strdup(s):NULL;
156 }
157 
158 
159 
160 
162 {
163  GWEN_XMLNode_SetIntValue(xmlNode, "flags", cmd->flags);
164 
165  if (cmd->command)
166  GWEN_XMLNode_SetCharValue(xmlNode, "command", cmd->command);
167 
168  if (cmd->arguments)
169  GWEN_XMLNode_SetCharValue(xmlNode, "arguments", cmd->arguments);
170 
171  if (cmd->buildMessage)
172  GWEN_XMLNode_SetCharValue(xmlNode, "buildMessage", cmd->buildMessage);
173 
174  if (cmd->depFilePath)
175  GWEN_XMLNode_SetCharValue(xmlNode, "depFilePath", cmd->depFilePath);
176 }
177 
178 
179 
181 {
182  GWB_BUILD_SUBCMD *cmd;
183  const char *s;
184 
185  cmd=GWB_BuildSubCmd_new();
186 
187  cmd->flags=GWEN_XMLNode_GetIntValue(xmlNode, "flags", 0);
188 
189  s=GWEN_XMLNode_GetCharValue(xmlNode, "command", NULL);
191 
192  s=GWEN_XMLNode_GetCharValue(xmlNode, "arguments", NULL);
194 
195  s=GWEN_XMLNode_GetCharValue(xmlNode, "buildMessage", NULL);
197 
198  s=GWEN_XMLNode_GetCharValue(xmlNode, "depFilePath", NULL);
200 
201  return cmd;
202 }
203 
204 
205 
206 GWB_BUILD_SUBCMD_LIST *GWB_BuildSubCmd_List_dup(const GWB_BUILD_SUBCMD_LIST *cmdList)
207 {
208  GWB_BUILD_SUBCMD_LIST *newList;
209  GWB_BUILD_SUBCMD *cmd;
210 
211  newList=GWB_BuildSubCmd_List_new();
212  cmd=GWB_BuildSubCmd_List_First(cmdList);
213  while(cmd) {
214  GWB_BuildSubCmd_List_Add(GWB_BuildSubCmd_dup(cmd), newList);
215  cmd=GWB_BuildSubCmd_List_Next(cmd);
216  }
217 
218  return newList;
219 }
220 
221 
222 
const char * GWB_BuildSubCmd_GetCommand(const GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:100
const char * GWB_BuildSubCmd_GetDepFilePath(const GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:145
void GWB_BuildSubCmd_SetArguments(GWB_BUILD_SUBCMD *cmd, const char *s)
Definition: buildsubcmd.c:122
#define GWEN_FREE_OBJECT(varname)
Definition: memory.h:61
#define NULL
Definition: binreloc.c:300
void GWB_BuildSubCmd_SetCommand(GWB_BUILD_SUBCMD *cmd, const char *s)
Definition: buildsubcmd.c:107
void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n, const char *name, const char *value)
Definition: xml.c:897
int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n, const char *name, int defValue)
Definition: xml.c:923
GWB_BUILD_SUBCMD * GWB_BuildSubCmd_new(void)
Definition: buildsubcmd.c:25
void GWB_BuildSubCmd_DelFlags(GWB_BUILD_SUBCMD *cmd, uint32_t f)
Definition: buildsubcmd.c:93
GWB_BUILD_SUBCMD * GWB_BuildSubCmd_dup(const GWB_BUILD_SUBCMD *origCmd)
Definition: buildsubcmd.c:37
const char * GWB_BuildSubCmd_GetArguments(const GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:115
void GWB_BuildSubCmd_SetBuildMessage(GWB_BUILD_SUBCMD *cmd, const char *s)
Definition: buildsubcmd.c:137
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:55
GWEN_LIST_FUNCTIONS(GWB_BUILD_SUBCMD, GWB_BuildSubCmd)
const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
Definition: xml.c:812
GWB_BUILD_SUBCMD_LIST * GWB_BuildSubCmd_List_dup(const GWB_BUILD_SUBCMD_LIST *cmdList)
Definition: buildsubcmd.c:206
const char * GWB_BuildSubCmd_GetBuildMessage(const GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:130
void GWB_BuildSubCmd_AddFlags(GWB_BUILD_SUBCMD *cmd, uint32_t f)
Definition: buildsubcmd.c:86
void GWB_BuildSubCmd_SetFlags(GWB_BUILD_SUBCMD *cmd, uint32_t f)
Definition: buildsubcmd.c:79
struct GWB_BUILD_SUBCMD GWB_BUILD_SUBCMD
Definition: buildsubcmd.h:16
void GWB_BuildSubCmd_SetDepFilePath(GWB_BUILD_SUBCMD *cmd, const char *s)
Definition: buildsubcmd.c:152
GWB_BUILD_SUBCMD * GWB_BuildSubCmd_fromXml(GWEN_XMLNODE *xmlNode)
Definition: buildsubcmd.c:180
void GWB_BuildSubCmd_toXml(const GWB_BUILD_SUBCMD *cmd, GWEN_XMLNODE *xmlNode)
Definition: buildsubcmd.c:161
uint32_t GWB_BuildSubCmd_GetFlags(const GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:72
void GWB_BuildSubCmd_free(GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:58
#define GWEN_LIST_INIT(t, element)
Definition: list1.h:465
#define GWEN_LIST_FINI(t, element)
Definition: list1.h:474
struct GWEN__XMLNODE GWEN_XMLNODE
Definition: xml.h:156
void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n, const char *name, int value)
Definition: xml.c:940