gwenhywfar 5.14.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
31int 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;
41 int rv;
42
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 DBG_INFO(dbg_logger, format,...)
Definition debug.h:181
#define GWEN_ERROR_GENERIC
Definition error.h:62
#define GWEN_ERROR_NOT_SUPPORTED
Definition error.h:109
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition buffer.h:38
#define GWEN_LOGDOMAIN
Definition logger.h:32
GWENHYWFAR_API int GWEN_Process_GetResult(GWEN_PROCESS *pr)
GWENHYWFAR_API void GWEN_Process_free(GWEN_PROCESS *pr)
#define GWEN_PROCESS_FLAGS_REDIR_STDERR
Definition process.h:40
GWENHYWFAR_API GWEN_PROCESS * GWEN_Process_new(void)
GWENHYWFAR_API GWEN_PROCESS_STATE GWEN_Process_Start(GWEN_PROCESS *pr, const char *prg, const char *args)
struct GWEN_PROCESS GWEN_PROCESS
Definition process.h:49
GWENHYWFAR_API void GWEN_Process_AddFlags(GWEN_PROCESS *pr, uint32_t f)
GWEN_PROCESS_STATE
Definition process.h:54
@ GWEN_ProcessStateRunning
Definition process.h:58
#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
int GWEN_Process_WaitAndRead(GWEN_PROCESS *pr, GWEN_BUFFER *stdOutBuffer, GWEN_BUFFER *stdErrBuffer)