neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

proc.h (1098B)


      1 #pragma once
      2 
      3 #include <stdbool.h>
      4 #include <stddef.h>
      5 
      6 #include "nvim/event/defs.h"  // IWYU pragma: keep
      7 #include "nvim/os/os_defs.h"
      8 #include "nvim/types_defs.h"
      9 
     10 static inline Proc proc_init(Loop *loop, ProcType type, void *data)
     11 {
     12  return (Proc) {
     13    .type = type,
     14    .data = data,
     15    .loop = loop,
     16    .events = NULL,
     17    .pid = 0,
     18    .status = -1,
     19    .refcount = 0,
     20    .stopped_time = 0,
     21    .cwd = NULL,
     22    .argv = NULL,
     23    .exepath = NULL,
     24    .in = { .closed = false },
     25    .out = { .s.closed = false, .s.fd = STDOUT_FILENO },
     26    .err = { .s.closed = false, .s.fd = STDERR_FILENO },
     27    .cb = NULL,
     28    .state_cb = NULL,
     29    .closed = false,
     30    .internal_close_cb = NULL,
     31    .internal_exit_cb = NULL,
     32    .detach = false,
     33  };
     34 }
     35 
     36 /// Get the path to the executable of the process.
     37 static inline const char *proc_get_exepath(Proc *proc)
     38 {
     39  return proc->exepath != NULL ? proc->exepath : proc->argv[0];
     40 }
     41 
     42 static inline bool proc_is_stopped(Proc *proc)
     43 {
     44  bool exited = (proc->status >= 0);
     45  return exited || (proc->stopped_time != 0);
     46 }
     47 
     48 #include "event/proc.h.generated.h"