s6

Mirror/fork of https://skarnet.org/software/s6/
git clone https://ccx.te2000.cz/git/s6
Log | Files | Refs | README | LICENSE

s6_svstatus_write.c (489B)


      1 /* ISC license. */
      2 
      3 #include <string.h>
      4 #include <skalibs/djbunix.h>
      5 #include <s6/supervise.h>
      6 
      7 int s6_svstatus_write (char const *dir, s6_svstatus_t const *status)
      8 {
      9   size_t n = strlen(dir) ;
     10   char pack[S6_SVSTATUS_SIZE] ;
     11   char tmp[n + 1 + sizeof(S6_SVSTATUS_FILENAME)] ;
     12   memcpy(tmp, dir, n) ;
     13   memcpy(tmp + n, "/" S6_SVSTATUS_FILENAME, 1 + sizeof(S6_SVSTATUS_FILENAME)) ;
     14   s6_svstatus_pack(pack, status) ;
     15   return openwritenclose_suffix(tmp, pack, S6_SVSTATUS_SIZE, ".new") ;
     16 }