Example #1
0
/* _unix_hot_gain(): gain ship.
*/
static void
_unix_hot_gain(u2_noun who, u2_bean mek)
{
  u2_noun hox = u2_dc("scot", 'p', who);
  c3_c*   hox_c = u2_cr_string(hox);
  c3_c*   pax_c = _unix_down(u2_Host.ops_u.hom_c, hox_c + 1);
  DIR*    rid_u = opendir(pax_c);

  if ( !rid_u ) {
    if ( u2_yes == mek ) {
      _unix_mkdir(pax_c);
    } else return;
  } else closedir(rid_u);

  // uL(fprintf(uH, "GAIN %s\n", pax_c));
  free(hox_c);
  u2z(hox);
  u2_unix_acquire(pax_c);

  {
    u2_uhot* hot_u = malloc(sizeof(u2_uhot));

    _unix_dir_watch(&hot_u->dir_u, 0, pax_c);

    u2_cr_mp(hot_u->who_mp, who);
    hot_u->nex_u = u2_Host.unx_u.hot_u;
    u2_Host.unx_u.hot_u = hot_u;
  }
}
Example #2
0
File: unix.c Project: esaul/urbit
/* u2_unix_io_talk(): start listening for fs events.
*/
void
u2_unix_io_talk()
{
  u2_unix_acquire(u2_Host.cpu_c);
  u2_unix_ef_move();
  uv_check_start(&u2_Host.unx_u.syn_u, _unix_ef_sync);
}
Example #3
0
/* u2_unix_io_talk(): start listening for fs events.
*/
void
u2_unix_io_talk()
{
  u2_unix_acquire(u2_Host.cpu_c);
  u2_unix_ef_move();
  uv_prepare_start(&u2_Host.unx_u.pre_u, _unix_ef_sync);
}
Example #4
0
/* u2_unix_io_init(): initialize unix sync.
*/
void 
u2_unix_io_init(void)
{
  u2_unix* unx_u = &u2_Host.unx_u;

  u2_unix_acquire(u2_Host.cpu_c);

  uv_timer_init(u2L, &unx_u->tim_u);
  unx_u->alm = u2_no;

  {
    u2_usig* sig_u;

    sig_u = malloc(sizeof(u2_usig));
    uv_signal_init(u2L, &sig_u->sil_u);
    uv_signal_start(&sig_u->sil_u, _unix_sign_cb, SIGTERM); 

    sig_u->nex_u = unx_u->sig_u;
    unx_u->sig_u = sig_u;
  }
  {
    u2_usig* sig_u;

    sig_u = malloc(sizeof(u2_usig));
    uv_signal_init(u2L, &sig_u->sil_u);
    uv_signal_start(&sig_u->sil_u, _unix_sign_cb, SIGINT); 

    sig_u->nex_u = unx_u->sig_u;
    unx_u->sig_u = sig_u;
  }
  {
    u2_usig* sig_u;

    sig_u = malloc(sizeof(u2_usig));
    uv_signal_init(u2L, &sig_u->sil_u);
    uv_signal_start(&sig_u->sil_u, _unix_sign_cb, SIGWINCH); 

    sig_u->nex_u = unx_u->sig_u;
    unx_u->sig_u = sig_u;
  }
}