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 
22 GWEN_LIST_FUNCTIONS(GWB_BUILD_CMD, GWB_BuildCmd);
23 GWEN_LIST2_FUNCTIONS(GWB_BUILD_CMD, GWB_BuildCmd);
24 
25 
26 
27 static void _writeIdsFromFile2ListToXml(const GWB_FILE_LIST2 *fileList2, GWEN_XMLNODE *xmlNode, const char *groupName);
28 
29 static void _readFileIdsFromXml(GWEN_XMLNODE *xmlNode,
30  const char *groupName,
31  GWB_FILE_LIST2 *ctxFileList, GWB_FILE_LIST2 *destFileList);
32 static void _writeSubCommandListToXml(const GWB_BUILD_SUBCMD_LIST *cmdList,
33  GWEN_XMLNODE *xmlNode,
34  const char *groupName);
35 static 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 
127 void GWB_BuildCmd_SetFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
128 {
129  bcmd->flags=i;
130 }
131 
132 
133 
134 void GWB_BuildCmd_AddFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
135 {
136  bcmd->flags|=i;
137 }
138 
139 
140 
141 void GWB_BuildCmd_DelFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
142 {
143  bcmd->flags&=~i;
144 }
145 
146 
147 
149 {
150  return bcmd->builderName;
151 }
152 
153 
154 
155 void GWB_BuildCmd_SetBuilderName(GWB_BUILD_CMD *bcmd, const char *s)
156 {
157  free(bcmd->builderName);
158  bcmd->builderName=s?strdup(s):NULL;
159 }
160 
161 
162 
163 
164 
165 
166 const char *GWB_BuildCmd_GetFolder(const GWB_BUILD_CMD *bcmd)
167 {
168  return bcmd->folder;
169 }
170 
171 
172 
173 void 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 
188 void GWB_BuildCmd_SetBuildMessage(GWB_BUILD_CMD *bcmd, const char *s)
189 {
190  free(bcmd->buildMessage);
191  bcmd->buildMessage=s?strdup(s):NULL;
192 }
193 
194 
195 
196 GWB_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 
210 GWB_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 
255 GWB_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 
270 GWB_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 
323 void GWB_BuildCmd_toXml(const GWB_BUILD_CMD *bcmd, GWEN_XMLNODE *xmlNode)
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 
371 GWB_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 
412 void _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 
431 void _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 
450 void _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 
507 void 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 
530 void 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 
548 void 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) {
559  GWB_BuildCmd_free(cmd);
560  cmd=GWB_BuildCmd_List2Iterator_Next(it);
561  }
562  }
563  GWB_BuildCmd_List2_free(cmdList);
564  }
565 }
566 
567 
568 
569 
570 
571 void 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 
590 void 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 
GWEN_LIST2_FUNCTIONS(GWB_BUILD_CMD, GWB_BuildCmd)
GWB_FILE_LIST2 * GWB_BuildCmd_GetInFileList2(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:255
void GWBUILD_Debug_PrintIntValue(const char *sName, int value, int indent)
Definition: gwenbuild.c:236
GWB_BUILD_SUBCMD_LIST * GWB_BuildCmd_GetPrepareCommandList(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:196
GWB_FILE * GWB_File_List2_GetFileById(const GWB_FILE_LIST2 *fileList, uint32_t id)
Definition: file.c:421
const char * GWB_BuildCmd_GetBuildMessage(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:181
uint32_t GWB_File_GetId(const GWB_FILE *f)
Definition: file.c:85
void GWB_BuildCmd_SetCurrentProcess(GWB_BUILD_CMD *bcmd, GWEN_PROCESS *process)
Definition: buildcmd.c:292
static void _writeIdsFromFile2ListToXml(const GWB_FILE_LIST2 *fileList2, GWEN_XMLNODE *xmlNode, const char *groupName)
Definition: buildcmd.c:450
GWEN_XMLNODE * GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
Definition: xml.c:794
void GWB_BuildCmd_SetFolder(GWB_BUILD_CMD *bcmd, const char *s)
Definition: buildcmd.c:173
struct GWB_FILE GWB_FILE
Definition: file.h:18
#define GWEN_FREE_OBJECT(varname)
Definition: memory.h:61
#define NULL
Definition: binreloc.c:300
void GWB_BuildCmd_DelFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
Definition: buildcmd.c:141
GWB_BUILD_CMD * GWB_BuildCmd_fromXml(GWEN_XMLNODE *xmlNode, GWB_FILE_LIST2 *fileList)
Definition: buildcmd.c:371
const char * GWB_BuildCmd_GetFolder(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:166
void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n, const char *name, const char *value)
Definition: xml.c:897
GWEN_XMLNODE * GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data)
Definition: xml.c:144
GWEN_LIST_FUNCTIONS(GWB_BUILD_CMD, GWB_BuildCmd)
void GWB_BuildCmd_List2_WriteXml(const GWB_BUILD_CMD_LIST2 *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
Definition: buildcmd.c:507
void GWB_BuildCmd_SetBuildMessage(GWB_BUILD_CMD *bcmd, const char *s)
Definition: buildcmd.c:188
int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n, const char *name, int defValue)
Definition: xml.c:923
GWB_BUILD_CMD * GWB_BuildCmd_dup(GWB_BUILD_CMD *origCmd)
Definition: buildcmd.c:60
const char * GWB_File_GetName(const GWB_FILE *f)
Definition: file.c:146
void GWBUILD_Debug_PrintValue(const char *sName, const char *sValue, int indent)
Definition: gwenbuild.c:225
GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
Definition: xml.c:776
void GWB_BuildCmd_SetBuilderName(GWB_BUILD_CMD *bcmd, const char *s)
Definition: buildcmd.c:155
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:55
int GWEN_XMLNode_GetIntProperty(const GWEN_XMLNODE *n, const char *name, int defaultValue)
Definition: xml.c:263
GWENHYWFAR_API GWEN_PROCESS_STATE GWEN_Process_CheckState(GWEN_PROCESS *pr)
GWEN_PROCESS * GWB_BuildCmd_GetCurrentProcess(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:285
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
int GWB_BuildCmd_DecBlockingFiles(GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:245
void GWBUILD_Debug_PrintKvpList(const char *sName, const GWB_KEYVALUEPAIR_LIST *kvpList, int indent)
Definition: gwenbuild.c:247
GWB_FILE_LIST2 * GWB_BuildCmd_GetOutFileList2(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:270
void GWB_BuildCmd_AddInFile(GWB_BUILD_CMD *bcmd, GWB_FILE *file)
Definition: buildcmd.c:262
void GWB_BuildCmd_SetBlockingFiles(GWB_BUILD_CMD *bcmd, int i)
Definition: buildcmd.c:231
void GWBUILD_Debug_PrintFileList2(const char *sName, const GWB_FILE_LIST2 *fileList2, int indent)
Definition: gwenbuild.c:334
GWB_BUILD_SUBCMD_LIST * GWB_BuildCmd_GetBuildCommandList(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:210
struct GWB_BUILD_SUBCMD GWB_BUILD_SUBCMD
Definition: buildsubcmd.h:16
GWENHYWFAR_API int GWEN_Process_Terminate(GWEN_PROCESS *pr)
void GWEN_XMLNode_SetIntProperty(GWEN_XMLNODE *n, const char *name, int value)
Definition: xml.c:330
void GWB_BuildCmd_SetFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
Definition: buildcmd.c:127
#define DBG_ERROR(dbg_logger, format, args...)
Definition: debug.h:97
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 GWEN_PROCESS GWEN_PROCESS
Definition: process.h:49
GWB_BUILD_SUBCMD * GWB_BuildCmd_GetCurrentCommand(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:306
void GWB_BuildCmd_AddPrepareCommand(GWB_BUILD_CMD *bcmd, GWB_BUILD_SUBCMD *cmd)
Definition: buildcmd.c:203
GWB_BUILD_CMD * GWB_BuildCmd_new(void)
Definition: buildcmd.c:42
void GWB_BuildCmd_Dump(const GWB_BUILD_CMD *bcmd, int indent)
Definition: buildcmd.c:571
void GWB_BuildCmd_List2_FreeAll(GWB_BUILD_CMD_LIST2 *cmdList)
Definition: buildcmd.c:548
void GWB_BuildCmd_AddFlags(GWB_BUILD_CMD *bcmd, uint32_t i)
Definition: buildcmd.c:134
struct GWB_BUILD_CMD GWB_BUILD_CMD
Definition: buildcmd.h:20
void GWB_BuildCmd_AddOutFile(GWB_BUILD_CMD *bcmd, GWB_FILE *file)
Definition: buildcmd.c:277
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
#define GWEN_LIST_INIT(t, element)
Definition: list1.h:465
void GWB_BuildCmd_toXml(const GWB_BUILD_CMD *bcmd, GWEN_XMLNODE *xmlNode)
Definition: buildcmd.c:323
void GWB_BuildCmd_AddBuildCommand(GWB_BUILD_CMD *bcmd, GWB_BUILD_SUBCMD *cmd)
Definition: buildcmd.c:217
const char * GWB_BuildCmd_GetBuilderName(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:148
void GWB_BuildCmd_PrintDescriptionWithText(const GWB_BUILD_CMD *bcmd, int indent, const char *text)
Definition: buildcmd.c:590
void GWB_BuildCmd_free(GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:97
uint32_t GWB_BuildCmd_GetFlags(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:120
int GWB_BuildCmd_GetBlockingFiles(const GWB_BUILD_CMD *bcmd)
Definition: buildcmd.c:224
static void _readSubCommandListFromXml(GWB_BUILD_SUBCMD_LIST *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
Definition: buildcmd.c:431
#define GWEN_LIST_FINI(t, element)
Definition: list1.h:474
struct GWEN__XMLNODE GWEN_XMLNODE
Definition: xml.h:156
static void _writeSubCommandListToXml(const GWB_BUILD_SUBCMD_LIST *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
Definition: buildcmd.c:412
GWENHYWFAR_API void GWEN_Process_free(GWEN_PROCESS *pr)
void GWB_BuildCmd_List_WriteXml(const GWB_BUILD_CMD_LIST *cmdList, GWEN_XMLNODE *xmlNode, const char *groupName)
Definition: buildcmd.c:530
void GWB_BuildCmd_SetCurrentCommand(GWB_BUILD_CMD *bcmd, GWB_BUILD_SUBCMD *cmd)
Definition: buildcmd.c:313
void GWEN_XMLNode_AddChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child)
Definition: xml.c:423
void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n, const char *name, int value)
Definition: xml.c:940