Copyright (C) Kevin Larke 2009-2020

This file is part of libcm.

libcm is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

libcm is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

See the GNU General Public License distributed with the libcm package or look here: .


enum
{
  kOkExRC,
  kInvalidPgmFnExRC,  // pgmFn was NULL
  kForkFailExRC,      // internal fork() failed
  kExecFailExRC,      // internal exec() failed.
  kPgmFailExRC,       // pgm returned a non-zero exit status
  kWaitFailExRC       // internal waitpid() failed
};

typedef unsigned cmExRC_t;

// If returnValRef is non-NULL *returnValRef is set to the program return value.
cmExRC_t cmExecV( cmErr_t* err, int* returnValRef, const cmChar_t* pgmFn, va_list vl );
cmExRC_t cmExec(  cmErr_t* err, int* returnValRef, const cmChar_t* pgmFn, ... );