Provided by: atfs-dev_1.4pl6-14_amd64 bug

NAME

       stCallEditor, stCallCmd, stCallCmdErrno, stFindProgram - call command processor with command string

SYNOPSIS

       #include <config.h>
       #include <sttk.h.h>

       int stCallEditor (char *editor, char *file, char *contents, char **newcontents);

       int stCallCmd (char *commandProcessor, char *commandString);

       int stCallCmdErrno;

       char*stFindProgram (char *fileName)

DESCRIPTION

       stCallEditor  calls  editor  editor  with file file and returns its  contents after the editor session in
       newcontents.  Return value is the length of the new text. On failure,  0  is  returned  to  indicate  the
       error.  Newcontents is not updated and points to nowhere. On error the file will be removed.  If contents
       points to a valid text, this text is put (not appended) into the temporary  file  before  editor  starts.
       Contents must be NULL terminated, otherwise strange things will happen.

       stCallCmd  invokes  commandProcessor  as  a child process and writes commandString to its standard input.
       The current process waits for termination of the child process.  stCallCmd returns the exit status of the
       child  process reported by wait(2). The commandProcessor string may contain command line arguments to the
       command processor, separated by whitespace.  (This is necessary for  some  programs  to  make  them  read
       commands from standard input.)  The command processor program is searched for in the directories given in
       the environment variable PATH.  If commandString does not end with a newline, a newline is added.

       stFindProgram returns the full pathname of programName if program  is  found  and  executable.  Otherwise
       NULL.

ENVIRONMENT

       PATH   List  of  colon-separated  directoriy  names  where  execvp(3) searches for the program to execute
              (default /bin:/usr/bin:/usr/ucb).

SEE ALSO

       wait(2)

DIAGNOSTICS

       On a successful call stCallCmd returns the exit status  of  the  child  process.  If  an  error  occured,
       stCallCmd returns a negative number as defined in sttk.h:

       CMDPROC_EMPTY
                     An empty or NULL string has been supplied for commandProcessor.

       NO_MORE_CORE  A call to malloc(3) or calloc(3) returned a NULL pointer.

       FORK_FAILED   fork(2) could not create a child process.

       PIPE_FAILED   A call to pipe(2) failed.

       WAIT_ERROR    A call to wait(2) failed.

       EXEC_FAILED   execvp(3) could not execute commandProcessor.

       CHILD_KILLED  The child process was killed by an uncaught signal.

       WRITE_FAILED  write(2)   could   not   write  commandString  to  the  pipe.  This  usually  happens  when
                     commandProcessor does not read its standard input and terminates  before  commandString  is
                     written.

       NO_PROGRAM    commandProcessor could not be found.

       For  the  most  error  conditions  the  integer  variable  stCallCmdErrno  (declared  in sttk.h) contains
       additional information about the error condition, usually the contents of errno(3) after a failed  system
       call.
       In  the  case  of  CHILD_KILLED,  stCallCmdErrno contains the statßus of the child process as reported by
       wait(2).

BUGS

       On systems where no usable vfork(2) is available, the value of stCallCmdErrno does not make sense in case
       of EXEC_FAILED.

       Under  IRIX  stCallCmd  sometimes  (or  always?)  returns  WAIT_ERROR  where  it  should  be EXEC_FAILED,
       NO_PROGRAM, or WRITE_FAILED.

AUTHORS

       Jürgen Nickelsen <nickel@cs.tu-berlin.de> and Andreas.Lampen@cs.tu-berlin.de