gwenhywfar 5.10.1
buildcmd.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
15#include "gwenbuild/buildctx/buildcmd_p.h"
16
17#include <gwenhywfar/debug.h>
18#include <gwenhywfar/misc.h>
19
20
21
24
25
26
27static void _writeIdsFromFile2ListToXml(const GWB_FILE_LIST2 *fileList2, GWEN_XMLNODE *xmlNode, const char *groupName);
28
29static void _readFileIdsFromXml(GWEN_XMLNODE *xmlNode,
30 const char *groupName,
31 GWB_FILE_LIST2 *ctxFileList, GWB_FILE_LIST2 *destFileList);
32static void _writeSubCommandListToXml(const GWB_BUILD_SUBCMD_LIST *cmdList,
33 GWEN_XMLNODE *xmlNode,
34 const char *groupName);
35static void _readSubCommandListFromXml(GWB_BUILD_SUBCMD_LIST *cmdList,
36 GWEN_XMLNODE *xmlNode,
37 const char *groupName);
38
39
40
41
43{
44 GWB_BUILD_CMD *bcmd;
45
48
49 bcmd->inFileList2=GWB_File_List2_new();
50 bcmd->outFileList2=GWB_File_List2_new();
51
52 bcmd->prepareCommandList=GWB_BuildSubCmd_List_new();
53 bcmd->buildCommandList=GWB_BuildSubCmd_List_new();
54
55 return bcmd;
56}
57
58
59
61{
62 GWB_BUILD_CMD *bcmd;
63
66
67 bcmd->flags=origCmd->flags;
68 bcmd->builderName=(origCmd->builderName)?strdup(origCmd->builderName):NULL;
69 bcmd->folder=(origCmd->folder)?strdup(origCmd->folder):NULL;
70 bcmd->buildMessage=(origCmd->buildMessage)?strdup(origCmd->buildMessage):NULL;
71 if (origCmd->prepareCommandList)
72 bcmd->prepareCommandList=GWB_BuildSubCmd_List_dup(origCmd->prepareCommandList);
73 else
74 bcmd->prepareCommandList=GWB_BuildSubCmd_List_new();
75
76 if (origCmd->buildCommandList)
77 bcmd->buildCommandList=GWB_BuildSubCmd_List_dup(origCmd->buildCommandList);
78 else
79 bcmd->buildCommandList=GWB_BuildSubCmd_List_new();
80 bcmd->blockingFiles=origCmd->blockingFiles;
81 if (origCmd->inFileList2)
82 bcmd->inFileList2=GWB_File_List2_dup(origCmd->inFileList2);
83 else
84 bcmd->inFileList2=GWB_File_List2_new();
85 if (origCmd->outFileList2)
86 bcmd->outFileList2=GWB_File_List2_dup(origCmd->outFileList2);
87 else
88 bcmd->outFileList2=GWB_File_List2_new();
89 bcmd->currentProcess=NULL;
90 bcmd->currentCommand=NULL;
91
92 return bcmd;
93}
94
95
96
98{
99 if (bcmd) {
101
104
105 free(bcmd->buildMessage);
106 free(bcmd->folder);
107 free(bcmd->builderName);
108
109 GWB_BuildSubCmd_List_free(bcmd->prepareCommandList);
110 GWB_BuildSubCmd_List_free(bcmd->buildCommandList);
111
112 GWB_File_List2_free(bcmd->inFileList2);
113 GWB_File_List2_free(bcmd->outFileList2);
114 GWEN_FREE_OBJECT(bcmd);
115 }
116}
117
118
119
121{
122 return bcmd->flags;
123}
124
125
126
128{
129 bcmd->flags=i;
130}
131
132
133
135{
136 bcmd->flags|=i;
137}
138
139
140
142{
143 bcmd->flags&=~i;
144}
145
146
147
149{
150 return bcmd->builderName;
151}
152
153
154
156{
157 free(bcmd->builderName);
158 bcmd->builderName=s?strdup(s):NULL;
159}
160
161
162
163
164
165
166const char *GWB_BuildCmd_GetFolder(const GWB_BUILD_CMD *bcmd)
167{
168 return bcmd->folder;
169}
170
171
172
173void GWB_BuildCmd_SetFolder(GWB_BUILD_CMD *bcmd, const char *s)
174{
175 free(bcmd->folder);
176 bcmd->folder=s?strdup(s):NULL;
177}
178
179
180
182{
183 return bcmd->buildMessage;
184}
185
186
187
189{
190 free(bcmd->buildMessage);
191 bcmd->buildMessage=s?strdup(s):NULL;
192}
193
194
195
196GWB_BUILD_SUBCMD_LIST *GWB_BuildCmd_GetPrepareCommandList(const GWB_BUILD_CMD *bcmd)
197{
198 return bcmd->prepareCommandList;
199}
200
201
202
204{
205 GWB_BuildSubCmd_List_Add(cmd, bcmd->prepareCommandList);
206}
207
208
209
210GWB_BUILD_SUBCMD_LIST *GWB_BuildCmd_GetBuildCommandList(const GWB_BUILD_CMD *bcmd)
211{
212 return bcmd->buildCommandList;
213}
214
215
216
218{
219 GWB_BuildSubCmd_List_Add(cmd, bcmd->buildCommandList);
220}
221
222
223
225{
226 return bcmd->blockingFiles;
227}
228
229
230
232{
233 bcmd->blockingFiles=i;
234}
235
236
237
239{
240 return ++(bcmd->blockingFiles);
241}
242
243
244
246{
247 if (bcmd->blockingFiles>0)
248 return --(bcmd->blockingFiles);
249 else
250 return bcmd->blockingFiles;
251}
252
253
254
255GWB_FILE_LIST2 *GWB_BuildCmd_GetInFileList2(const GWB_BUILD_CMD *bcmd)
256{
257 return bcmd->inFileList2;
258}
259
260
261
263{
264 if (file)
265 GWB_File_List2_PushBack(bcmd->inFileList2, file);
266}
267
268
269
270GWB_FILE_LIST2 *GWB_BuildCmd_GetOutFileList2(const GWB_BUILD_CMD *bcmd)
271{
272 return bcmd->outFileList2;
273}
274
275
276
278{
279 if (file)
280 GWB_File_List2_PushBack(bcmd->outFileList2, file);
281}
282
283
284
286{
287 return bcmd->currentProcess;
288}
289
290
291
293{
294 if (bcmd->currentProcess) {
295 if (GWEN_Process_CheckState(bcmd->currentProcess)==GWEN_ProcessStateRunning) {
296 DBG_ERROR(NULL, "Process is still running!");
297 GWEN_Process_Terminate(bcmd->currentProcess);
298 }
299 GWEN_Process_free(bcmd->currentProcess);
300 }
301 bcmd->currentProcess=process;
302}
303
304
305
307{
308 return bcmd->currentCommand;
309}
310
311
312
314{
315 bcmd->currentCommand=cmd;
316}
317
318
319
320
321
322
324{
325 if (bcmd->builderName)
326 GWEN_XMLNode_SetCharValue(xmlNode, "builderName", bcmd->builderName);
327
328 GWEN_XMLNode_SetIntValue(xmlNode, "flags", bcmd->flags);
329
330 if (bcmd->folder)
331 GWEN_XMLNode_SetCharValue(xmlNode, "folder", bcmd->folder);
332
333 if (bcmd->buildMessage)
334 GWEN_XMLNode_SetCharValue(xmlNode, "buildMessage", bcmd->buildMessage);
335
336 if (bcmd->prepareCommandList) {
337 GWEN_XMLNODE *xmlGroupNode;
338
339 xmlGroupNode=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "prepareCommands");
340 _writeSubCommandListToXml(bcmd->prepareCommandList, xmlGroupNode, "command");
341 GWEN_XMLNode_AddChild(xmlNode, xmlGroupNode);
342 }
343
344 if (bcmd->buildCommandList) {
345 GWEN_XMLNODE *xmlGroupNode;
346
347 xmlGroupNode=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "buildCommands");
348 _writeSubCommandListToXml(bcmd->buildCommandList, xmlGroupNode, "command");
349 GWEN_XMLNode_AddChild(xmlNode, xmlGroupNode);
350 }
351
352 if (bcmd->inFileList2) {
353 GWEN_XMLNODE *xmlGroupNode;
354
355 xmlGroupNode=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "inputFiles");
356 _writeIdsFromFile2ListToXml(bcmd->inFileList2, xmlGroupNode, "file");
357 GWEN_XMLNode_AddChild(xmlNode, xmlGroupNode);
358 }
359
360 if (bcmd->outFileList2) {
361 GWEN_XMLNODE *xmlGroupNode;
362
363 xmlGroupNode=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "outputFiles");
364 _writeIdsFromFile2ListToXml(bcmd->outFileList2, xmlGroupNode, "file");
365 GWEN_XMLNode_AddChild(xmlNode, xmlGroupNode);
366 }
367}
368
369
370
371GWB_BUILD_CMD *GWB_BuildCmd_fromXml(GWEN_XMLNODE *xmlNode, GWB_FILE_LIST2 *fileList)
372{
373 GWB_BUILD_CMD *bcmd;
374 GWEN_XMLNODE *xmlGroupNode;
375 const char *s;
376
377 bcmd=GWB_BuildCmd_new();
378
379 s=GWEN_XMLNode_GetCharValue(xmlNode, "builderName", NULL);
381
382 bcmd->flags=GWEN_XMLNode_GetIntValue(xmlNode, "flags", 0);
383
384 s=GWEN_XMLNode_GetCharValue(xmlNode, "folder", NULL);
385 GWB_BuildCmd_SetFolder(bcmd, s);
386
387 s=GWEN_XMLNode_GetCharValue(xmlNode, "buildMessage", NULL);
389
390
391 xmlGroupNode=GWEN_XMLNode_FindFirstTag(xmlNode, "prepareCommands", NULL, NULL);
392 if (xmlGroupNode)
393 _readSubCommandListFromXml(bcmd->prepareCommandList, xmlGroupNode, "command");
394
395 xmlGroupNode=GWEN_XMLNode_FindFirstTag(xmlNode, "buildCommands", NULL, NULL);
396 if (xmlGroupNode)
397 _readSubCommandListFromXml(bcmd->buildCommandList, xmlGroupNode, "command");
398
399 xmlGroupNode=GWEN_XMLNode_FindFirstTag(xmlNode, "inputFiles", NULL, NULL);
400 if (xmlGroupNode)
401 _readFileIdsFromXml(xmlGroupNode, "file", fileList, bcmd->inFileList2);
402
403 xmlGroupNode=GWEN_XMLNode_FindFirstTag(xmlNode, "outputFiles", NULL, NULL);
404 if (xmlGroupNode)
405 _readFileIdsFromXml(xmlGroupNode, "file", fileList, bcmd->outFileList2);
406
407 return bcmd;
408}
409
410
411
412void _writeSubCommandListToXml(const GWB_BUILD_SUBCMD_LIST *cmdList,
413 GWEN_XMLNODE *xmlNode,
414 const char *groupName)
415{
416 const GWB_BUILD_SUBCMD *cmd;
417
418 cmd=GWB_BuildSubCmd_List_First(cmdList);
419 while(cmd) {
420 GWEN_XMLNODE *entryNode;
421
422 entryNode=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, groupName);
423 GWB_BuildSubCmd_toXml(cmd, entryNode);
424 GWEN_XMLNode_AddChild(xmlNode, entryNode);
425 cmd=GWB_BuildSubCmd_List_Next(cmd);
426 }
427}
428
429
430
431void _readSubCommandListFromXml(GWB_BUILD_SUBCMD_LIST *cmdList,
432 GWEN_XMLNODE *xmlNode,
433 const char *groupName)
434{
435 GWEN_XMLNODE *xmlEntry;
436
437 xmlEntry=GWEN_XMLNode_FindFirstTag(xmlNode, groupName, NULL, NULL);
438 while(xmlEntry) {
439 GWB_BUILD_SUBCMD *cmd;
440
441 cmd=GWB_BuildSubCmd_fromXml(xmlEntry);
442 if (cmd)
443 GWB_BuildSubCmd_List_Add(cmd, cmdList);
444 xmlEntry=GWEN_XMLNode_FindNextTag(xmlEntry, groupName, NULL, NULL);
445 }
446}
447
448
449
450void _writeIdsFromFile2ListToXml(const GWB_FILE_LIST2 *fileList2,
451 GWEN_XMLNODE *xmlNode,
452 const char *groupName)
453{
454 GWB_FILE_LIST2_ITERATOR *it;
455
456 it=GWB_File_List2_First(fileList2);
457 if (it) {
458 GWB_FILE *file;
459
460 file=GWB_File_List2Iterator_Data(it);
461 while(file) {
462 GWEN_XMLNODE *entryNode;
463 uint32_t id;
464
465 entryNode=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, groupName);
466 id=GWB_File_GetId(file);
467 GWEN_XMLNode_SetIntProperty(entryNode, "id", (int) id);
468 GWEN_XMLNode_AddChild(xmlNode, entryNode);
469 file=GWB_File_List2Iterator_Next(it);
470 }
471 GWB_File_List2Iterator_free(it);
472 }
473}
474
475
476
478 const char *groupName,
479 GWB_FILE_LIST2 *ctxFileList, GWB_FILE_LIST2 *destFileList)
480{
481 GWEN_XMLNODE *xmlEntry;
482
483 xmlEntry=GWEN_XMLNode_FindFirstTag(xmlNode, groupName, NULL, NULL);
484 while(xmlEntry) {
485 uint32_t id;
486
487 id=(uint32_t) GWEN_XMLNode_GetIntProperty(xmlEntry, "id", 0);
488 if (id==0) {
489 DBG_ERROR(NULL, "FILE has no id");
490 }
491 else {
492 GWB_FILE *file;
493
494 file=GWB_File_List2_GetFileById(ctxFileList, id);
495 if (file==NULL) {
496 DBG_ERROR(NULL, "FILE %d not found", (int) id);
497 }
498 else
499 GWB_File_List2_PushBack(destFileList, file);
500 }
501 xmlEntry=GWEN_XMLNode_FindNextTag(xmlEntry, groupName, NULL, NULL);
502 }
503}
504
505
506
507void GWB_BuildCmd_List2_WriteXml(const GWB_BUILD_CMD_LIST2 *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
508{
509 GWB_BUILD_CMD_LIST2_ITERATOR *it;
510
511 it=GWB_BuildCmd_List2_First(cmdList);
512 if (it) {
513 GWB_BUILD_CMD *cmd;
514
515 cmd=GWB_BuildCmd_List2Iterator_Data(it);
516 while(cmd) {
517 GWEN_XMLNODE *entryNode;
518
519 entryNode=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, groupName);
520 GWB_BuildCmd_toXml(cmd, entryNode);
521 GWEN_XMLNode_AddChild(xmlNode, entryNode);
522 cmd=GWB_BuildCmd_List2Iterator_Next(it);
523 }
524 GWB_BuildCmd_List2Iterator_free(it);
525 }
526}
527
528
529
530void GWB_BuildCmd_List_WriteXml(const GWB_BUILD_CMD_LIST *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
531{
532 GWB_BUILD_CMD *cmd;
533
534 cmd=GWB_BuildCmd_List_First(cmdList);
535 while(cmd) {
536 GWEN_XMLNODE *entryNode;
537
538 entryNode=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, groupName);
539 GWB_BuildCmd_toXml(cmd, entryNode);
540 GWEN_XMLNode_AddChild(xmlNode, entryNode);
541 cmd=GWB_BuildCmd_List_Next(cmd);
542 }
543}
544
545
546
547
548void GWB_BuildCmd_List2_FreeAll(GWB_BUILD_CMD_LIST2 *cmdList)
549{
550 if (cmdList) {
551 GWB_BUILD_CMD_LIST2_ITERATOR *it;
552
553 it=GWB_BuildCmd_List2_First(cmdList);
554 if (it) {
555 GWB_BUILD_CMD *cmd;
556
557 cmd=GWB_BuildCmd_List2Iterator_Data(it);
558 while(cmd) {
560 cmd=GWB_BuildCmd_List2Iterator_Next(it);
561 }
562 }
563 GWB_BuildCmd_List2_free(cmdList);
564 }
565}
566
567
568
569
570
571void GWB_BuildCmd_Dump(const GWB_BUILD_CMD *bcmd, int indent)
572{
573 int i;
574
575 for(i=0; i<indent; i++)
576 fprintf(stderr, " ");
577 fprintf(stderr, "BuildCmd:\n");
578
579 GWBUILD_Debug_PrintValue( "folder.......", bcmd->folder, indent+2);
580 GWBUILD_Debug_PrintIntValue("blockingFiles", bcmd->blockingFiles, indent+2);
581 GWBUILD_Debug_PrintKvpList("prepareCommandList", bcmd->prepareCommandList, indent+2);
582 GWBUILD_Debug_PrintKvpList("buildCommandList", bcmd->buildCommandList, indent+2);
583 GWBUILD_Debug_PrintFileList2("inFileList2", bcmd->inFileList2, indent+2);
584 GWBUILD_Debug_PrintFileList2("outFileList2", bcmd->outFileList2, indent+2);
585
586}
587
588
589
590void GWB_BuildCmd_PrintDescriptionWithText(const GWB_BUILD_CMD *bcmd, int indent, const char *text)
591{
592 if (bcmd) {
593 const GWB_FILE *fileIn=NULL;
594 const GWB_FILE *fileOut=NULL;
595
596 if (bcmd->inFileList2)
597 fileIn=GWB_File_List2_GetFront(bcmd->inFileList2);
598 if (bcmd->outFileList2)
599 fileOut=GWB_File_List2_GetFront(bcmd->outFileList2);
600 if (fileIn || fileOut) {
601 const char *folder;
602 const char *fileNameIn=NULL;
603 const char *fileNameOut=NULL;
604
605 folder=GWB_BuildCmd_GetFolder(bcmd);
606
607 if (fileIn)
608 fileNameIn=GWB_File_GetName(fileIn);
609 if (fileOut)
610 fileNameOut=GWB_File_GetName(fileOut);
611
612 if (fileNameIn && fileNameOut) {
613 int i;
614
615 for(i=0; i<indent; i++)
616 fprintf(stderr, " ");
617 fprintf(stderr, "%s: %s (%s -> %s)\n",
618 folder?folder:"<no folder>",
619 text?text:"BuildCmd",
620 fileNameIn?fileNameIn:"<no filename>",
621 fileNameOut?fileNameOut:"<no filename>");
622 }
623 else if (fileIn) {
624 int i;
625
626 for(i=0; i<indent; i++)
627 fprintf(stderr, " ");
628 fprintf(stderr, "%s: %s (%s) \n",
629 folder?folder:"<no folder>",
630 text?text:"BuildCmd",
631 fileNameIn?fileNameIn:"<no filename>");
632 }
633 }
634 }
635}
636
637
638
639
640
641
#define NULL
Definition: binreloc.c:300
void GWB_BuildCmd_AddInFile(GWB_BUILD_CMD *bcmd, GWB_FILE *file)
Definition: buildcmd.c:262
static void _writeIdsFromFile2ListToXml(const GWB_FILE_LIST2 *fileList2, GWEN_XMLNODE *xmlNode, const char *groupName)
Definition: buildcmd.c:450
GWB_BUILD_CMD * GWB_BuildCmd_dup(GWB_BUILD_CMD *origCmd)
Definition: buildcmd.c:60
GWB_FILE_LIST2 * GWB_BuildCmd_GetOutFileList2(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:270
void GWB_BuildCmd_SetFolder(GWB_BUILD_CMD *bcmd, const char *s)
Definition: buildcmd.c:173
static void _readSubCommandListFromXml(GWB_BUILD_SUBCMD_LIST *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
Definition: buildcmd.c:431
void GWB_BuildCmd_SetBuilderName(GWB_BUILD_CMD *bcmd, const char *s)
Definition: buildcmd.c:155
GWB_BUILD_SUBCMD_LIST * GWB_BuildCmd_GetPrepareCommandList(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:196
void GWB_BuildCmd_Dump(const GWB_BUILD_CMD *bcmd, int indent)
Definition: buildcmd.c:571
void GWB_BuildCmd_List_WriteXml(const GWB_BUILD_CMD_LIST *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
Definition: buildcmd.c:530
void GWB_BuildCmd_List2_FreeAll(GWB_BUILD_CMD_LIST2 *cmdList)
Definition: buildcmd.c:548
void GWB_BuildCmd_SetBlockingFiles(GWB_BUILD_CMD *bcmd, int i)
Definition: buildcmd.c:231
void GWB_BuildCmd_SetCurrentProcess(GWB_BUILD_CMD *bcmd, GWEN_PROCESS *process)
Definition: buildcmd.c:292
const char * GWB_BuildCmd_GetBuildMessage(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:181
void GWB_BuildCmd_SetCurrentCommand(GWB_BUILD_CMD *bcmd, GWB_BUILD_SUBCMD *cmd)
Definition: buildcmd.c:313
void GWB_BuildCmd_SetFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
Definition: buildcmd.c:127
GWB_BUILD_CMD * GWB_BuildCmd_new(void)
Definition: buildcmd.c:42
GWB_BUILD_CMD * GWB_BuildCmd_fromXml(GWEN_XMLNODE *xmlNode, GWB_FILE_LIST2 *fileList)
Definition: buildcmd.c:371
uint32_t GWB_BuildCmd_GetFlags(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:120
GWB_FILE_LIST2 * GWB_BuildCmd_GetInFileList2(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:255
void GWB_BuildCmd_toXml(const GWB_BUILD_CMD *bcmd, GWEN_XMLNODE *xmlNode)
Definition: buildcmd.c:323
void GWB_BuildCmd_DelFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
Definition: buildcmd.c:141
void GWB_BuildCmd_free(GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:97
int GWB_BuildCmd_DecBlockingFiles(GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:245
void GWB_BuildCmd_List2_WriteXml(const GWB_BUILD_CMD_LIST2 *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
Definition: buildcmd.c:507
void GWB_BuildCmd_AddOutFile(GWB_BUILD_CMD *bcmd, GWB_FILE *file)
Definition: buildcmd.c:277
void GWB_BuildCmd_AddBuildCommand(GWB_BUILD_CMD *bcmd, GWB_BUILD_SUBCMD *cmd)
Definition: buildcmd.c:217
void GWB_BuildCmd_PrintDescriptionWithText(const GWB_BUILD_CMD *bcmd, int indent, const char *text)
Definition: buildcmd.c:590
GWB_BUILD_SUBCMD * GWB_BuildCmd_GetCurrentCommand(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:306
int GWB_BuildCmd_IncBlockingFiles(GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:238
static void _readFileIdsFromXml(GWEN_XMLNODE *xmlNode, const char *groupName, GWB_FILE_LIST2 *ctxFileList, GWB_FILE_LIST2 *destFileList)
Definition: buildcmd.c:477
GWB_BUILD_SUBCMD_LIST * GWB_BuildCmd_GetBuildCommandList(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:210
const char * GWB_BuildCmd_GetFolder(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:166
const char * GWB_BuildCmd_GetBuilderName(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:148
static void _writeSubCommandListToXml(const GWB_BUILD_SUBCMD_LIST *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
Definition: buildcmd.c:412
void GWB_BuildCmd_SetBuildMessage(GWB_BUILD_CMD *bcmd, const char *s)
Definition: buildcmd.c:188
void GWB_BuildCmd_AddFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
Definition: buildcmd.c:134
int GWB_BuildCmd_GetBlockingFiles(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:224
GWEN_PROCESS * GWB_BuildCmd_GetCurrentProcess(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:285
void GWB_BuildCmd_AddPrepareCommand(GWB_BUILD_CMD *bcmd, GWB_BUILD_SUBCMD *cmd)
Definition: buildcmd.c:203
struct GWB_BUILD_CMD GWB_BUILD_CMD
Definition: buildcmd.h:20
GWB_BUILD_SUBCMD_LIST * GWB_BuildSubCmd_List_dup(const GWB_BUILD_SUBCMD_LIST *cmdList)
Definition: buildsubcmd.c:206
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
struct GWB_BUILD_SUBCMD GWB_BUILD_SUBCMD
Definition: buildsubcmd.h:16
#define DBG_ERROR(dbg_logger, format, args...)
Definition: debug.h:97
const char * GWB_File_GetName(const GWB_FILE *f)
Definition: file.c:146
GWB_FILE * GWB_File_List2_GetFileById(const GWB_FILE_LIST2 *fileList, uint32_t id)
Definition: file.c:421
uint32_t GWB_File_GetId(const GWB_FILE *f)
Definition: file.c:85
struct GWB_FILE GWB_FILE
Definition: file.h:18
void GWBUILD_Debug_PrintKvpList(const char *sName, const GWB_KEYVALUEPAIR_LIST *kvpList, int indent)
Definition: gwenbuild.c:247
void GWBUILD_Debug_PrintIntValue(const char *sName, int value, int indent)
Definition: gwenbuild.c:236
void GWBUILD_Debug_PrintFileList2(const char *sName, const GWB_FILE_LIST2 *fileList2, int indent)
Definition: gwenbuild.c:334
void GWBUILD_Debug_PrintValue(const char *sName, const char *sValue, int indent)
Definition: gwenbuild.c:225
#define GWEN_LIST_FINI(t, element)
Definition: list1.h:474
#define GWEN_LIST_FUNCTIONS(t, pr)
Definition: list1.h:366
#define GWEN_LIST_INIT(t, element)
Definition: list1.h:465
#define GWEN_LIST2_FUNCTIONS(t, pr)
Definition: list2.h:99
#define GWEN_FREE_OBJECT(varname)
Definition: memory.h:61
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:55
GWENHYWFAR_API void GWEN_Process_free(GWEN_PROCESS *pr)
GWENHYWFAR_API int GWEN_Process_Terminate(GWEN_PROCESS *pr)
GWENHYWFAR_API GWEN_PROCESS_STATE GWEN_Process_CheckState(GWEN_PROCESS *pr)
struct GWEN_PROCESS GWEN_PROCESS
Definition: process.h:49
@ GWEN_ProcessStateRunning
Definition: process.h:58
GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
Definition: xml.c:776
void GWEN_XMLNode_SetIntProperty(GWEN_XMLNODE *n, const char *name, int value)
Definition: xml.c:330
GWEN_XMLNODE * GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data)
Definition: xml.c:144
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
GWEN_XMLNODE * GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
Definition: xml.c:794
const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
Definition: xml.c:812
void GWEN_XMLNode_AddChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child)
Definition: xml.c:423
void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n, const char *name, const char *value)
Definition: xml.c:897
int GWEN_XMLNode_GetIntProperty(const GWEN_XMLNODE *n, const char *name, int defaultValue)
Definition: xml.c:263
struct GWEN__XMLNODE GWEN_XMLNODE
Definition: xml.h:156
@ GWEN_XMLNodeTypeTag
Definition: xml.h:145