gwenhywfar 5.12.0
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
21
22
23
24
34
35
36
38{
39 if (origCmd==NULL)
40 return NULL;
41 else {
43
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
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
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
222GWB_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
239void 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
264void 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
#define NULL
Definition binreloc.c:300
void GWB_BuildSubCmd_SetFlags(GWB_BUILD_SUBCMD *cmd, uint32_t f)
Definition buildsubcmd.c:95
GWB_BUILD_SUBCMD_LIST * GWB_BuildSubCmd_List_dup(const GWB_BUILD_SUBCMD_LIST *cmdList)
uint32_t GWB_BuildSubCmd_GetFlags(const GWB_BUILD_SUBCMD *cmd)
Definition buildsubcmd.c:88
void GWB_BuildSubCmd_SetBuildMessage(GWB_BUILD_SUBCMD *cmd, const char *s)
void GWB_BuildSubCmd_SetCommand(GWB_BUILD_SUBCMD *cmd, const char *s)
void GWB_BuildSubCmd_SetArguments(GWB_BUILD_SUBCMD *cmd, const char *s)
const char * GWB_BuildSubCmd_GetArguments(const GWB_BUILD_SUBCMD *cmd)
GWB_BUILD_SUBCMD * GWB_BuildSubCmd_new(void)
Definition buildsubcmd.c:25
const char * GWB_BuildSubCmd_GetDepFilePath(const GWB_BUILD_SUBCMD *cmd)
void GWB_BuildSubCmd_List_Dump(const GWB_BUILD_SUBCMD_LIST *cmdList, int indent, const char *text)
void GWB_BuildSubCmd_DelFlags(GWB_BUILD_SUBCMD *cmd, uint32_t f)
void GWB_BuildSubCmd_free(GWB_BUILD_SUBCMD *cmd)
Definition buildsubcmd.c:58
GWB_BUILD_SUBCMD * GWB_BuildSubCmd_fromXml(GWEN_XMLNODE *xmlNode)
void GWB_BuildSubCmd_AddFlags(GWB_BUILD_SUBCMD *cmd, uint32_t f)
void GWB_BuildSubCmd_toXml(const GWB_BUILD_SUBCMD *cmd, GWEN_XMLNODE *xmlNode)
const char * GWB_BuildSubCmd_GetLogFilename(const GWB_BUILD_SUBCMD *cmd)
Definition buildsubcmd.c:73
GWB_BUILD_SUBCMD * GWB_BuildSubCmd_dup(const GWB_BUILD_SUBCMD *origCmd)
Definition buildsubcmd.c:37
const char * GWB_BuildSubCmd_GetCommand(const GWB_BUILD_SUBCMD *cmd)
void GWB_BuildSubCmd_SetDepFilePath(GWB_BUILD_SUBCMD *cmd, const char *s)
void GWB_BuildSubCmd_SetLogFilename(GWB_BUILD_SUBCMD *cmd, const char *s)
Definition buildsubcmd.c:80
void GWB_BuildSubCmd_Dump(const GWB_BUILD_SUBCMD *cmd, int indent)
const char * GWB_BuildSubCmd_GetBuildMessage(const GWB_BUILD_SUBCMD *cmd)
struct GWB_BUILD_SUBCMD GWB_BUILD_SUBCMD
Definition buildsubcmd.h:16
#define GWEN_LIST_FINI(t, element)
Definition list1.h:475
#define GWEN_LIST_FUNCTIONS(t, pr)
Definition list1.h:367
#define GWEN_LIST_INIT(t, element)
Definition list1.h:466
#define GWEN_FREE_OBJECT(varname)
Definition memory.h:61
#define GWEN_NEW_OBJECT(typ, varname)
Definition memory.h:55
void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n, const char *name, int value)
Definition xml.c:940
int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n, const char *name, int defValue)
Definition xml.c:923
const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
Definition xml.c:812
void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n, const char *name, const char *value)
Definition xml.c:897
struct GWEN__XMLNODE GWEN_XMLNODE
Definition xml.h:156