gwenhywfar  5.14.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  free(cmd->logFilename);
66 
67  GWEN_FREE_OBJECT(cmd);
68  }
69 }
70 
71 
72 
74 {
75  return cmd->logFilename;
76 }
77 
78 
79 
81 {
82  free(cmd->logFilename);
83  cmd->logFilename=s?strdup(s):NULL;
84 }
85 
86 
87 
89 {
90  return cmd->flags;
91 }
92 
93 
94 
96 {
97  cmd->flags=f;
98 }
99 
100 
101 
103 {
104  cmd->flags|=f;
105 }
106 
107 
108 
110 {
111  cmd->flags&=~f;
112 }
113 
114 
115 
117 {
118  return cmd->command;
119 }
120 
121 
122 
124 {
125  free(cmd->command);
126  cmd->command=s?strdup(s):NULL;
127 }
128 
129 
130 
132 {
133  return cmd->arguments;
134 }
135 
136 
137 
139 {
140  free(cmd->arguments);
141  cmd->arguments=s?strdup(s):NULL;
142 }
143 
144 
145 
147 {
148  return cmd->buildMessage;
149 }
150 
151 
152 
154 {
155  free(cmd->buildMessage);
156  cmd->buildMessage=s?strdup(s):NULL;
157 }
158 
159 
160 
162 {
163  return cmd->depFilePath;
164 }
165 
166 
167 
169 {
170  free(cmd->depFilePath);
171  cmd->depFilePath=s?strdup(s):NULL;
172 }
173 
174 
175 
176 
178 {
179  GWEN_XMLNode_SetIntValue(xmlNode, "flags", cmd->flags);
180 
181  if (cmd->command)
182  GWEN_XMLNode_SetCharValue(xmlNode, "command", cmd->command);
183 
184  if (cmd->arguments)
185  GWEN_XMLNode_SetCharValue(xmlNode, "arguments", cmd->arguments);
186 
187  if (cmd->buildMessage)
188  GWEN_XMLNode_SetCharValue(xmlNode, "buildMessage", cmd->buildMessage);
189 
190  if (cmd->depFilePath)
191  GWEN_XMLNode_SetCharValue(xmlNode, "depFilePath", cmd->depFilePath);
192 }
193 
194 
195 
197 {
198  GWB_BUILD_SUBCMD *cmd;
199  const char *s;
200 
201  cmd=GWB_BuildSubCmd_new();
202 
203  cmd->flags=GWEN_XMLNode_GetIntValue(xmlNode, "flags", 0);
204 
205  s=GWEN_XMLNode_GetCharValue(xmlNode, "command", NULL);
207 
208  s=GWEN_XMLNode_GetCharValue(xmlNode, "arguments", NULL);
210 
211  s=GWEN_XMLNode_GetCharValue(xmlNode, "buildMessage", NULL);
213 
214  s=GWEN_XMLNode_GetCharValue(xmlNode, "depFilePath", NULL);
216 
217  return cmd;
218 }
219 
220 
221 
222 GWB_BUILD_SUBCMD_LIST *GWB_BuildSubCmd_List_dup(const GWB_BUILD_SUBCMD_LIST *cmdList)
223 {
224  GWB_BUILD_SUBCMD_LIST *newList;
225  GWB_BUILD_SUBCMD *cmd;
226 
227  newList=GWB_BuildSubCmd_List_new();
228  cmd=GWB_BuildSubCmd_List_First(cmdList);
229  while(cmd) {
230  GWB_BuildSubCmd_List_Add(GWB_BuildSubCmd_dup(cmd), newList);
231  cmd=GWB_BuildSubCmd_List_Next(cmd);
232  }
233 
234  return newList;
235 }
236 
237 
238 
239 void GWB_BuildSubCmd_Dump(const GWB_BUILD_SUBCMD *cmd, int indent)
240 {
241  if (cmd) {
242  int i;
243 
244  for(i=0; i<indent; i++)
245  fprintf(stderr, " ");
246  fprintf(stderr, "Command : %s\n", (cmd->command)?(cmd->command):"<empty>");
247 
248  for(i=0; i<indent; i++)
249  fprintf(stderr, " ");
250  fprintf(stderr, "Arguments : %s\n", (cmd->arguments)?(cmd->arguments):"<empty>");
251 
252  for(i=0; i<indent; i++)
253  fprintf(stderr, " ");
254  fprintf(stderr, "Message : %s\n", (cmd->buildMessage)?(cmd->buildMessage):"<empty>");
255 
256  for(i=0; i<indent; i++)
257  fprintf(stderr, " ");
258  fprintf(stderr, "DepFilePath: %s\n", (cmd->depFilePath)?(cmd->depFilePath):"<empty>");
259  }
260 }
261 
262 
263 
264 void GWB_BuildSubCmd_List_Dump(const GWB_BUILD_SUBCMD_LIST *cmdList, int indent, const char *text)
265 {
266  int i;
267 
268  if (text) {
269  for(i=0; i<indent; i++)
270  fprintf(stderr, " ");
271  fprintf(stderr, "%s\n", text);
272  }
273  if (cmdList) {
274  const GWB_BUILD_SUBCMD *cmd;
275 
276  cmd=GWB_BuildSubCmd_List_First(cmdList);
277  while(cmd) {
278  for(i=0; i<indent+2; i++)
279  fprintf(stderr, " ");
280  fprintf(stderr, "Sub Command:\n");
281  GWB_BuildSubCmd_Dump(cmd, indent+4);
282  cmd=GWB_BuildSubCmd_List_Next(cmd);
283  }
284  }
285  else {
286  for(i=0; i<indent+2; i++)
287  fprintf(stderr, " ");
288  fprintf(stderr, "<empty>\n");
289  }
290 }
291 
292 
293 
const char * GWB_BuildSubCmd_GetCommand(const GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:116
const char * GWB_BuildSubCmd_GetDepFilePath(const GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:161
void GWB_BuildSubCmd_SetArguments(GWB_BUILD_SUBCMD *cmd, const char *s)
Definition: buildsubcmd.c:138
#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:123
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:109
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:131
void GWB_BuildSubCmd_SetBuildMessage(GWB_BUILD_SUBCMD *cmd, const char *s)
Definition: buildsubcmd.c:153
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:55
GWEN_LIST_FUNCTIONS(GWB_BUILD_SUBCMD, GWB_BuildSubCmd)
void GWB_BuildSubCmd_Dump(const GWB_BUILD_SUBCMD *cmd, int indent)
Definition: buildsubcmd.c:239
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:222
const char * GWB_BuildSubCmd_GetBuildMessage(const GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:146
void GWB_BuildSubCmd_AddFlags(GWB_BUILD_SUBCMD *cmd, uint32_t f)
Definition: buildsubcmd.c:102
void GWB_BuildSubCmd_SetFlags(GWB_BUILD_SUBCMD *cmd, uint32_t f)
Definition: buildsubcmd.c:95
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:168
GWB_BUILD_SUBCMD * GWB_BuildSubCmd_fromXml(GWEN_XMLNODE *xmlNode)
Definition: buildsubcmd.c:196
void GWB_BuildSubCmd_toXml(const GWB_BUILD_SUBCMD *cmd, GWEN_XMLNODE *xmlNode)
Definition: buildsubcmd.c:177
const char * GWB_BuildSubCmd_GetLogFilename(const GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:73
uint32_t GWB_BuildSubCmd_GetFlags(const GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:88
void GWB_BuildSubCmd_free(GWB_BUILD_SUBCMD *cmd)
Definition: buildsubcmd.c:58
#define GWEN_LIST_INIT(t, element)
Definition: list1.h:466
#define GWEN_LIST_FINI(t, element)
Definition: list1.h:475
struct GWEN__XMLNODE GWEN_XMLNODE
Definition: xml.h:156
void GWB_BuildSubCmd_List_Dump(const GWB_BUILD_SUBCMD_LIST *cmdList, int indent, const char *text)
Definition: buildsubcmd.c:264
void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n, const char *name, int value)
Definition: xml.c:940
void GWB_BuildSubCmd_SetLogFilename(GWB_BUILD_SUBCMD *cmd, const char *s)
Definition: buildsubcmd.c:80