gwenhywfar  5.10.1
process_all.c
Go to the documentation of this file.
1 /***************************************************************************
2  begin : Wed Mar 24 2021
3  copyright : (C) 2021 by Martin Preuss
4  email : martin@libchipcard.de
5 
6  ***************************************************************************
7  * This file is part of the project "Gwenhywfar". *
8  * Please see toplevel file COPYING of that project for license details. *
9  ***************************************************************************/
10 
11 #ifdef HAVE_CONFIG_H
12 # include <config.h>
13 #endif
14 
15 #define DISABLE_DEBUGLOG
16 
17 #include "process_l.h"
18 
19 #include <gwenhywfar/process.h>
20 
21 #include <gwenhywfar/gwenhywfarapi.h>
22 #include <gwenhywfar/misc.h>
23 #include <gwenhywfar/debug.h>
24 
25 #include <unistd.h>
26 #include <time.h>
27 
28 
29 
30 
31 int GWEN_Process_RunCommandWaitAndGather(const char *prg, const char *args,
32  GWEN_BUFFER *stdOutBuffer,
33  GWEN_BUFFER *stdErrBuffer)
34 {
35 #if GWENHYWFAR_SYS_IS_WINDOWS
36  /* not supported for now */
38 #else
39  GWEN_PROCESS *pr;
40  GWEN_PROCESS_STATE state;
41  int rv;
42 
43  pr=GWEN_Process_new();
44  if (stdOutBuffer)
46  if (stdErrBuffer)
48 
49  state=GWEN_Process_Start(pr, prg, args);
50  if (state!=GWEN_ProcessStateRunning) {
51  DBG_INFO(GWEN_LOGDOMAIN, "Error starting process (%d)", state);
53  return GWEN_ERROR_GENERIC;
54  }
55 
56  rv=GWEN_Process_WaitAndRead(pr, stdOutBuffer, stdErrBuffer);
57  if (rv<0) {
58  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
60  return rv;
61  }
62 
65  return rv;
66 #endif
67 }
68 
69 
70 
71 
72 
73 
#define GWEN_PROCESS_FLAGS_REDIR_STDOUT
Definition: process.h:38
int GWEN_Process_RunCommandWaitAndGather(const char *prg, const char *args, GWEN_BUFFER *stdOutBuffer, GWEN_BUFFER *stdErrBuffer)
Definition: process_all.c:31
#define GWEN_LOGDOMAIN
Definition: logger.h:35
int GWEN_Process_WaitAndRead(GWEN_PROCESS *pr, GWEN_BUFFER *stdOutBuffer, GWEN_BUFFER *stdErrBuffer)
GWEN_PROCESS_STATE
Definition: process.h:54
#define GWEN_ERROR_GENERIC
Definition: error.h:62
GWENHYWFAR_API int GWEN_Process_GetResult(GWEN_PROCESS *pr)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:38
GWENHYWFAR_API GWEN_PROCESS * GWEN_Process_new(void)
GWENHYWFAR_API void GWEN_Process_AddFlags(GWEN_PROCESS *pr, uint32_t f)
struct GWEN_PROCESS GWEN_PROCESS
Definition: process.h:49
#define GWEN_ERROR_NOT_SUPPORTED
Definition: error.h:109
#define DBG_INFO(dbg_logger, format, args...)
Definition: debug.h:181
GWENHYWFAR_API GWEN_PROCESS_STATE GWEN_Process_Start(GWEN_PROCESS *pr, const char *prg, const char *args)
GWENHYWFAR_API void GWEN_Process_free(GWEN_PROCESS *pr)
#define GWEN_PROCESS_FLAGS_REDIR_STDERR
Definition: process.h:40