Пример #1
0
Файл: unix.c Проект: esaul/urbit
/* _unix_desk_sync_into(): sync external changes to desk.
*/
static void
_unix_desk_sync_into(u2_noun  who,
                     u2_noun  hox,
                     u2_noun  syd,
                     u2_udir* dir_u)
{
  u2_noun xun, bur, doz, fav, pax;

  xun = _unix_dir_ankh(dir_u);
  bur = _unix_desk_peek(hox, u2k(syd), u2k(u2A->wen));

  if ( (u2_no == u2_sing(u2h(xun), u2h(bur)))) //&&
  //     (u2_no == _unix_ankh_sing(xun, bur)) )
  {
    doz = u2_dc("cost", xun, bur);

    pax = u2nq(u2_blip, c3__sync, u2k(u2A->sen), u2_nul);
    fav = u2nq(c3__into, who, syd, u2nc(u2_yes, doz));

    u2_reck_plan(u2A, pax, fav);
  }
  else {
    u2z(who); u2z(syd); u2z(xun); u2z(bur);
  }
}
Пример #2
0
/* _unix_desk_sync_into(): sync external changes to desk.
*/
static void
_unix_desk_sync_into(u2_noun  who,
                     u2_noun  hox, 
                     u2_noun  syd, 
                     u2_udir* dir_u)
{
  u2_noun xun, bur, doz, fav, pax;

  xun = _unix_dir_arch(dir_u);
  bur = _unix_desk_peek(u2k(who), hox, syd, u2k(u2A->wen));

  if ( u2_no == u2_sing(xun, bur) ) {
    doz = u2_dc("cyst", xun, bur);
    pax = u2nq(c3__gold, c3__sync, u2k(u2A->sen), u2_nul);
    fav = u2nq(c3__into, who, syd, u2nc(u2_yes, doz));

    u2_reck_plan(u2A, pax, fav);
  } 
  else {
    u2z(xun); u2z(bur);
  }
}
Пример #3
0
/* _unix_desk_sync_ergo(): sync desk changes to unix.
*/
static void
_unix_desk_sync_ergo(u2_noun  who,
                     u2_noun  hox, 
                     u2_noun  syd, 
                     u2_noun  lok,
                     u2_uhot* hot_u) 
{
  u2_udir** dir_u = _unix_pdir(&(hot_u->dir_u), syd);
  u2_noun   xun;

#if 0
  uL(fprintf(uH, "ergo %s %s %s\n", u2_cr_string(hox),
                                    u2_cr_string(syd),
                                    u2_cr_string(lok)));
#endif

  if ( !*dir_u ) {
    *dir_u = malloc(sizeof(u2_udir));

    xun = u2nc(u2_no, u2_nul);
    _unix_dir_forge(*dir_u, &(hot_u->dir_u), u2k(syd));
  } else {
    xun = _unix_dir_arch(*dir_u);
  }

  {
    u2_noun bur = _unix_desk_peek(who, hox, syd, lok);

    if ( u2_no == u2_sing(xun, bur) ) {
      u2_noun doz = u2_dc("cyst", bur, xun);

      _unix_desk_sync_soba(*dir_u, doz);
    }
    else {
      u2z(xun); u2z(bur);
    }
  }
}