Exemple #1
0
 static u3_noun
 _play_bean(void)
 {
   return u3nt(c3__fork,
               u3nq(c3__cube, 0, c3__atom, 'f'),
               u3nq(c3__cube, 1, c3__atom, 'f'));
 }
Exemple #2
0
 static u3_noun
 _play_bean()
 {
   return u3kf_fork(u3nt(u3nq(c3__atom, 'f', u3_nul, 0),
                         u3nq(c3__atom, 'f', u3_nul, 1),
                         u3_nul));
 }
Exemple #3
0
/* u3_sist_boot(): restore or create.
*/
void
u3_sist_boot(void)
{
  // uL(fprintf(uH, "sist: booting\n"));

  if ( c3y == u3_Host.ops_u.nuu ) {
    u3_noun pig = u3_none;

    if ( 0 == u3_Host.ops_u.imp_c ) {
      c3_c get_c[2049];
      snprintf(get_c, 2048, "%s/.urb/get", u3_Host.dir_c);
      if ( 0 == access(get_c, 0) ) {
          uL(fprintf(uH, "pier: already built\n"));
          u3_lo_bail();
      }
      u3_noun ten = _sist_zen();
      uL(fprintf(uH, "generating 2048-bit RSA pair...\n"));

      pig = u3nq(c3__make, u3_nul, 11, u3nc(ten, u3_Host.ops_u.fak));
    }
    else {
      u3_noun imp = u3i_string(u3_Host.ops_u.imp_c);
      u3_noun whu = u3dc("slaw", 'p', u3k(imp));

      if ( (u3_nul == whu) ) {
        fprintf(stderr, "czar: incorrect format\r\n");
        u3_lo_bail();
      }
      else {
        u3_noun gen = u3_nul;
        u3_noun gun = u3_nul;
        if (c3n == u3_Host.ops_u.fak) {
          gen = _sist_text("generator");
          gun = u3dc("slaw", c3__uw, gen);

          if ( u3_nul == gun ) {
            fprintf(stderr, "czar: incorrect format\r\n");
            u3_lo_bail();
          }
        }
        else {
          gun = u3nc(u3_nul, u3_nul);
        }
        pig = u3nq(c3__sith,
                   u3k(u3t(whu)),
                   u3k(u3t(gun)),
                   u3_Host.ops_u.fak);

        u3z(whu); u3z(gun);
      }
      u3z(imp);
    }
    _sist_make(pig);
  }
  else {
    _sist_rest();
  }
}
Exemple #4
0
void
u3_unix_ef_initial_into()
{
    c3_c* pax_c = _unix_down(U3_LIB, "arvo");
    u3_noun can = _unix_initial_update_dir(pax_c);
    free(pax_c);

    u3v_plan(u3nq(u3_blip, c3__sync, u3k(u3A->sen), u3_nul),
             u3nq(c3__into, u3_nul, c3y, can));
}
Exemple #5
0
/* _unix_update_mount(): update mount point
*/
static void
_unix_update_mount(u3_umon* mon_u, u3_noun all)
{
    if ( c3n == mon_u->dir_u.dry ) {
        u3_noun  can = u3_nul;
        u3_unod* nod_u;
        for ( nod_u = mon_u->dir_u.kid_u; nod_u; nod_u = nod_u->nex_u ) {
            can = u3kb_weld(_unix_update_node(nod_u), can);
        }

        u3v_plan(u3nq(u3_blip, c3__sync, u3k(u3A->sen), u3_nul),
                 u3nq(c3__into, u3i_string(mon_u->nam_c), all, can));
    }
}
Exemple #6
0
/* stag
*/
  u3_noun
  _cqe_stag_fun(u3_noun gob,
                u3_noun sef,
                u3_noun tub)
  {
    u3_noun vex = u3x_good(u3n_slam_on(u3k(sef), u3k(tub)));
    u3_noun p_vex, q_vex;

    u3x_cell(vex, &p_vex, &q_vex);

    if ( c3n == u3du(q_vex) ) {
      return vex;
    }
    else {
      u3_noun uq_vex = u3t(q_vex);
      u3_noun puq_vex, quq_vex;
      u3_noun wag;
      u3_noun ret;

      u3x_cell(uq_vex, &puq_vex, &quq_vex);
      wag = u3nc(u3k(gob), u3k(puq_vex));
      ret = u3nq(u3k(p_vex),
                 u3_nul,
                 wag,
                 u3k(quq_vex));

      u3z(vex);
      return ret;
    }
  }
Exemple #7
0
/* u3_term_ef_ctlc(): send ^C on console.
*/
void
u3_term_ef_ctlc(void)
{
  u3_noun pax = u3nq(u3_blip, c3__term, '1', u3_nul);

  u3v_plan(pax, u3nt(c3__belt, c3__ctl, 'c'));
}
Exemple #8
0
/* functions
*/
  u3_noun
  u3qf_flan(u3_noun bos,
            u3_noun nif)
  {
    if ( c3y == u3r_sing(1, u3h(bos)) ) {
      if ( (u3_nul == u3t(bos)) ) {
        return u3k(nif);
      }
      else return u3k(bos);
    }
    else {
      if ( c3y == u3r_sing(1, u3h(nif)) ) {
        if ( (u3_nul == u3t(nif)) ) {
          return u3k(bos);
        }
        else return u3k(nif);
      }
      else {
        return u3nq(6,
                    u3k(bos),
                    u3k(nif),
                    u3nc(1, c3n));
      }
    }
  }
Exemple #9
0
/* cold
*/
  u3_noun
  _cqe_cold_fun(u3_noun cus,
                u3_noun sef,
                u3_noun tub)
  {
    u3_noun vex = u3x_good(u3n_slam_on(u3k(sef), u3k(tub)));
    u3_noun p_vex, q_vex;

    u3x_cell(vex, &p_vex, &q_vex);

    if ( c3n == u3du(q_vex) ) {
      return vex;
    }
    else {
      u3_noun uq_vex = u3t(q_vex);
      u3_noun quq_vex;
      u3_noun ret;

      u3x_cell(uq_vex, 0, &quq_vex);
      ret = u3nq(u3k(p_vex),
                 u3_nul,
                 u3k(cus),
                 u3k(quq_vex));

      u3z(vex);
      return ret;
    }
  }
Exemple #10
0
/* _term_close_cb(): free terminal.
*/
static void
_term_close_cb(uv_handle_t* han_t)
{
  u3_utty* tty_u = (void*) han_t;
  if ( u3_Host.uty_u == tty_u ) {
    u3_Host.uty_u = tty_u->nex_u;
  }
  else {
    u3_utty* uty_u;
    for (uty_u = u3_Host.uty_u; uty_u; uty_u = uty_u->nex_u ) {
      if ( uty_u->nex_u == tty_u ) {
        uty_u->nex_u = tty_u->nex_u;
        break;
      }
    }
  }

  {
    u3_noun tid = u3dc("scot", c3__ud, tty_u->tid_l);
    u3_noun pax = u3nq(u3_blip, c3__term, tid, u3_nul);
    u3v_plan(u3k(pax), u3nc(c3__hook, u3_nul));
    u3z(pax);
  }
  free(tty_u);
}
Exemple #11
0
/* u3_term_ef_winc(): window change.  Just console right now.
*/
void
u3_term_ef_winc(void)
{
  u3_noun pax = u3nq(u3_blip, c3__term, '1', u3_nul);

  u3v_plan(pax, u3nc(c3__blew, u3_term_get_blew(1)));
}
Exemple #12
0
void
u3_http_ef_bake(void)
{
  u3_noun pax = u3nq(u3_blip, c3__http, u3k(u3A->sen), u3_nul);

  u3v_plan(pax, u3nc(c3__born, u3_nul));
}
Exemple #13
0
/* u3_term_ef_verb(): initial effects for verbose events
*/
void
u3_term_ef_verb(void)
{
  u3_noun pax = u3nq(u3_blip, c3__term, '1', u3_nul);

  u3v_plan(pax, u3nc(c3__verb, u3_nul));
}
Exemple #14
0
/* _term_io_belt(): send belt.
*/
static void
_term_io_belt(u3_utty* uty_u, u3_noun  blb)
{
  u3_noun tid = u3dc("scot", c3__ud, uty_u->tid_l);
  u3_noun pax = u3nq(u3_blip, c3__term, tid, u3_nul);

  u3v_plan(pax, u3nc(c3__belt, blb));
}
Exemple #15
0
/* glue
*/
  u3_noun
  _cqe_glue_fun(u3_noun bus,
                u3_noun vex,
                u3_noun sab)
  {
    u3_noun p_vex, q_vex;

    u3x_cell(vex, &p_vex, &q_vex);
    if ( c3n == u3du(q_vex) ) {
      return u3k(vex);
    }
    else {
      u3_noun uq_vex = u3t(q_vex);
      u3_noun puq_vex, quq_vex;
      u3_noun yit, yur;
      u3_noun p_yit, q_yit;
      u3_noun ret;

      u3x_cell(uq_vex, &puq_vex, &quq_vex);
      yit = u3x_good(u3n_slam_on(u3k(bus), u3k(quq_vex)));

      u3x_cell(yit, &p_yit, &q_yit);
      yur = _last(p_vex, p_yit);

      if ( c3n == u3du(q_yit) ) {
        ret = u3nc(yur, u3_nul);
      }
      else {
        u3_noun uq_yit = u3t(q_yit);
        u3_noun puq_yit, quq_yit;
        u3_noun wam, p_wam, q_wam, goy;

        u3x_cell(uq_yit, &puq_yit, &quq_yit);
        wam = u3x_good(u3n_slam_on(u3k(sab), u3k(quq_yit)));

        u3x_cell(wam, &p_wam, &q_wam);
        goy = _last(yur, p_wam);
        u3z(yur);

        if ( c3n == u3du(q_wam) ) {
          ret = u3nc(goy, u3_nul);
        } else {
          u3_noun uq_wam = u3t(q_wam);
          u3_noun puq_wam, quq_wam;

          u3x_cell(uq_wam, &puq_wam, &quq_wam);
          ret = u3nq(goy,
                     u3_nul,
                     u3nc(u3k(puq_vex),
                          u3k(puq_wam)),
                     u3k(quq_wam));
        }
        u3z(wam);
      }
      u3z(yit);
      return ret;
    }
  }
Exemple #16
0
 static u3_noun
 _play_rock(u3_noun odo, u3_noun bob)
 { 
   if ( c3y == u3ud(bob) ) {
     return u3nq(c3__atom, u3k(odo), u3_nul, u3k(bob));
   }
   else return u3nt(c3__cell, _play_rock(odo, u3h(bob)), 
                              _play_rock(odo, u3t(bob)));
 }
Exemple #17
0
u3_noun 
u3z_save_3(c3_m fun, u3_noun one, u3_noun two, u3_noun tri, u3_noun val)
{
  u3_noun key = u3nq(fun, u3k(one), u3k(two), u3k(tri));

  u3h_put(u3R->cax.har_p, key, u3k(val));
  u3z(key);
  return val;
}
Exemple #18
0
/* stir
*/
  u3_noun
  _cqe_stir_fun(u3_noun rud,
                u3_noun raq,
                u3_noun fel,
                u3_noun tub)
  {
    u3_noun vex = u3x_good(u3n_slam_on(u3k(fel), u3k(tub)));
    u3_noun p_vex, q_vex;
    u3_noun ret;

    u3x_cell(vex, &p_vex, &q_vex);
    if ( c3n == u3du(q_vex) ) {
      ret = u3nq(u3k(p_vex),
                 u3_nul,
                 u3k(rud),
                 u3k(tub));
    }
    else {
      u3_noun uq_vex = u3t(q_vex);
      u3_noun puq_vex, quq_vex;
      u3_noun wag, p_wag, q_wag, uq_wag, puq_wag, quq_wag;

      u3x_cell(uq_vex, &puq_vex, &quq_vex);
      wag = _cqe_stir_fun(rud, raq, fel, quq_vex);

      u3x_cell(wag, &p_wag, &q_wag);
      if ( c3n == u3du(q_wag) ) {
        return u3m_bail(c3__fail);
      }
      uq_wag = u3t(q_wag);
      u3x_cell(uq_wag, &puq_wag, &quq_wag);

      ret = u3nq(_last(p_vex, p_wag),
                 u3_nul,
                 u3x_good(u3n_slam_on(u3k(raq),
                                      u3nc(u3k(puq_vex),
                                           u3k(puq_wag)))),
                 u3k(quq_wag));
      u3z(wag);
    }
    u3z(vex);
    return ret;
  }
Exemple #19
0
u3_weak 
u3z_find_4(c3_m fun, u3_noun one, u3_noun two, u3_noun tri, u3_noun qua)
{
  u3_noun key = u3nc(fun, u3nq(u3k(one), u3k(two), u3k(tri), u3k(qua)));
  u3_noun val;

  val = u3h_get(u3R->cax.har_p, key);
  u3z(key);
  return val;
}
Exemple #20
0
/* u3_term_ef_bake(): initial effects for new terminal.
*/
void
u3_term_ef_bake(u3_noun fav)
{
  u3_noun pax = u3nq(u3_blip, c3__term, '1', u3_nul);

  u3v_plan(u3k(pax), u3nc(c3__boot, fav));
  u3v_plan(u3k(pax), u3nc(c3__blew, u3_term_get_blew(1)));
  u3v_plan(u3k(pax), u3nc(c3__hail, u3_nul));

  u3z(pax);
}
Exemple #21
0
/* _http_pox_to_noun(): translate srv/con/req to path noun (pox).
*/
static u3_noun
_http_pox_to_noun(c3_w sev_l, c3_w coq_l, c3_w seq_l)
{
  return
    u3nt(
      u3_blip,
      c3__http,
      u3nq(u3dc("scot", c3_s2('u','v'), sev_l),
           u3dc("scot", c3_s2('u','d'), coq_l),
           u3dc("scot", c3_s2('u','d'), seq_l),
           u3_nul));
}
Exemple #22
0
/* easy
*/
  u3_noun
  _cqe_easy_fun(u3_noun huf,
                u3_noun tub)
  {
    u3_noun p_tub, q_tub;

    u3x_cell(tub, &p_tub, &q_tub);
    return u3nq(u3k(p_tub),
                u3_nul,
                u3k(huf),
                u3k(tub));
  }
Exemple #23
0
/* bend
*/
  u3_noun
  _cqe_bend_fun(u3_noun raq,
                u3_noun vex,
                u3_noun sab)
  {
    u3_noun p_vex, q_vex;

    u3x_cell(vex, &p_vex, &q_vex);
    if ( c3n == u3du(q_vex) ) {
      return u3k(vex);
    } else {
      u3_noun uq_vex = u3t(q_vex);
      u3_noun puq_vex, quq_vex;
      u3_noun yit, yur;
      u3_noun p_yit, q_yit;
      u3_noun ret;

      u3x_cell(uq_vex, &puq_vex, &quq_vex);
      yit = u3x_good(u3n_slam_on(u3k(sab), u3k(quq_vex)));

      u3x_cell(yit, &p_yit, &q_yit);
      yur = _last(p_vex, p_yit);

      if ( c3n == u3du(q_yit) ) {
        ret = u3nc(yur, u3k(q_vex));
      }
      else {
        u3_noun uq_yit = u3t(q_yit);
        u3_noun puq_yit, quq_yit;
        u3_noun vux;

        u3x_cell(uq_yit, &puq_yit, &quq_yit);

        vux = u3x_good(u3n_slam_on(u3k(raq),
                                   u3nc(u3k(puq_vex),
                                   u3k(puq_yit))));
        if ( u3_nul == vux ) {
          ret = u3nc(yur, u3k(q_vex));
        }
        else {
          ret = u3nq(yur,
                     u3_nul,
                     u3k(u3t(vux)),
                     u3k(quq_yit));
          u3z(vux);
        }
      }
      u3z(yit);
      return ret;
    }
  }
Exemple #24
0
/* u3_term_ef_boil(): initial effects for loaded servers.
*/
void
u3_term_ef_boil(void)
{
  {
    u3_noun pax = u3nq(u3_blip, c3__term, '1', u3_nul);

    //  u3v_plan(u3k(pax), u3nc(c3__init, u3k(u3h(u3A->own))));
    u3v_plan(u3k(pax), u3nc(c3__harm, u3_nul));
    u3v_plan(u3k(pax), u3nc(c3__blew, u3_term_get_blew(1)));
    u3v_plan(u3k(pax), u3nc(c3__hail, u3_nul));

    u3z(pax);
  }
}
Exemple #25
0
/* functions
*/
  u3_noun
  u3qf_fine(
                    u3_noun fuv,
                    u3_noun lup,
                    u3_noun mar)
  {
    if ( (c3__void == lup) || (c3__void == mar) ) {
      return c3__void;
    } else {
      return u3nq(c3__fine, u3k(fuv),
                                    u3k(lup),
                                    u3k(mar));
    }
  }
Exemple #26
0
  static u3_noun
  _play_grow(u3_noun van,
             u3_noun sut,
             u3_atom mel,
             u3_noun ruf,
             u3_noun wan,
             u3_noun dom)
  {
    u3_noun dan = _play_in(van, sut, ruf);

    return _play_core(dan,
                      u3nq(u3k(mel),
                           u3k(dan),
                           u3k(wan),
                           u3nc(u3nc(u3_nul, u3_nul),
                                u3k(dom))));
  }
Exemple #27
0
/* _http_request(): dispatch http request, returning null if async.
*/
static void
_http_request(u3_hreq* req_u)
{
  u3_noun req = _http_request_to_noun(req_u);

  if ( u3_none != req ) {
    u3_noun pox = _http_pox_to_noun(req_u->hon_u->htp_u->sev_l,
                                    req_u->hon_u->coq_l,
                                    req_u->seq_l);

    u3v_plan(pox,
               u3nq(c3__this,
                    req_u->hon_u->htp_u->sec,
                    u3nc(c3y, u3i_words(1, &req_u->ipf_w)),
                    req));
  }
}
Exemple #28
0
/* _http_request_to_noun(): translate http request into noun, or u3_none.
*/
static u3_noun
_http_request_to_noun(u3_hreq* req_u)
{
  u3_noun med, url, hed, bod;

  switch ( req_u->met_e ) {
    default: fprintf(stderr, "strange request\r\n"); return u3_none;
    case u3_hmet_put: { med = c3__put; break; }
    case u3_hmet_get: { med = c3__get; break; }
    case u3_hmet_head: { med = c3__head; break; }
    case u3_hmet_post: { med = c3__post; break; }
  }
  url = u3i_string(req_u->url_c);
  hed = _http_heds_to_list(req_u->hed_u);
  bod = req_u->bod_u ? u3nc(u3_nul, _http_bods_to_octs(req_u->bod_u)) : u3_nul;

  return u3nq(med, url, hed, bod);
}
Exemple #29
0
    static u3_noun
    _smcl_in(u3_noun q_gen)
    {
      u3_noun hq_gen = u3h(q_gen);
      u3_noun tq_gen = u3t(q_gen);

      if ( c3n == u3du(tq_gen) ) {
        return u3nt(c3__tsgr,
                    u3nc(u3_nul, 3),
                    u3k(hq_gen));
      } else {
        return u3nc(c3__cnhp,
                    u3nq(u3nc(u3_nul, 2),
                         u3nt(c3__tsgr,
                              u3nc(u3_nul, 3),
                              u3k(hq_gen)),
                         _smcl_in(tq_gen),
                         u3_nul));
      }
    }
Exemple #30
0
/* functions
*/
  u3_noun
  u3qf_flip(
                    u3_noun hel)
  {
    if ( c3y == u3r_sing(1, u3h(hel)) ) {
      if ( (c3y == u3t(hel)) ) {
        return u3nc(1, c3n);
      }
      else {
        c3_assert((c3n == u3t(hel)));

        return u3nc(1, c3y);
      }
    }
    else {
      return u3nq
        (6,
               u3k(hel),
               u3nc(1, c3n),
               u3nc(1, c3y));
    }
  }