コード例 #1
0
int e_plugin_lib_enable(EPlugin *ep, int enable)
{
    EShell *shell = e_shell_get_default();

    if (shell) {
        g_signal_handlers_disconnect_by_func(shell, G_CALLBACK (eee_calendar_state_changed), NULL);
        if (enable)
            g_signal_connect(shell, "notify::online", G_CALLBACK (eee_calendar_state_changed), NULL);
    }

    xr_init();
    g_type_class_ref(EEE_TYPE_ACCOUNT);
    g_type_class_ref(EEE_TYPE_ACCOUNTS_MANAGER);
    if (getenv("EEE_EVO_DEBUG"))
    {
        xr_debug_enabled = XR_DEBUG_CALL;
    }
    g_debug("** EEE ** Starting 3e Evolution Plugin %s", PACKAGE_VERSION);
    g_debug("** EEE ** Please report bugs to <%s>", PACKAGE_BUGREPORT);
    bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);
    bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
    textdomain(GETTEXT_PACKAGE);

    return 0;
}
コード例 #2
0
int main(int argc, char **argv)
{
    xr_init();

    bool eval = false;
    bool verbose = false;

    int c;
    while ((c = getopt(argc, argv, "ev")) != -1) {
        switch (c) {
        case 'e':
            eval = true;
            break;
        case 'v':
            verbose = true;
            break;
        }
    }

    XR obj_list;

    if (optind < argc) {
        char *file = argv[optind];
        obj_list = xr_parse_dump_file(file);
    } else {
        obj_list = xr_parse_dump_from_stdin();
    }

    if (verbose)
        log("# Objs: %ld\n", xrListLen(obj_list));
    
    XR root_mt = xrMTable(root);
    assert(root_mt);
    
    /* Lookup the "init" method */
    XR init_m = xrClosureAt(send(root_mt, s_at, xr_sym("init")), 0);

    if (verbose)
        qsend(init_m, "show");

    if (!eval) {
        FILE *fp = fopen("blahtestsymfile", "w");
        qsend(root, "pack", fp);
        fclose(fp);
        return 0;
    }

    if (verbose)
        log("##############\nRunning VM\n##############\n");

    xr_run_method(init_m);

    return 0;
}
コード例 #3
0
ファイル: xr-client.c プロジェクト: djdominoSVK/libxr
xr_client_conn* xr_client_new(GError** err)
{
  g_return_val_if_fail(err == NULL || *err == NULL, NULL);

  xr_trace(XR_DEBUG_CLIENT_TRACE, "(err=%p)", err);

  xr_init();

  xr_client_conn* conn = g_new0(xr_client_conn, 1);
  conn->client = g_socket_client_new();

  conn->headers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
  conn->transport = XR_CALL_XML_RPC;

  return conn;
}
コード例 #4
0
ファイル: xr-server.c プロジェクト: zonio/libxr
xr_server* xr_server_new(const char* cert, const char* privkey, int threads, GError** err)
{
  xr_trace(XR_DEBUG_SERVER_TRACE, "(cert=%s, threads=%d, err=%p)", cert, threads, err);
  GError* local_err = NULL;

  g_return_val_if_fail(threads > 0 && threads < 1000, NULL);
  g_return_val_if_fail (err == NULL || *err == NULL, NULL);

  xr_init();

  xr_server* server = g_new0(xr_server, 1);
  server->secure = !!cert;
  server->service = g_threaded_socket_service_new(threads);
  g_signal_connect(server->service, "run", (GCallback)_xr_server_service_run, server);

  if (cert)
  {
    gchar *cert_and_privkey = g_strconcat(cert, privkey, NULL);
    server->cert = g_tls_certificate_new_from_pem(cert_and_privkey, -1, &local_err);
    g_free(cert_and_privkey);

    if (local_err)
    {
      g_propagate_prefixed_error(err, local_err, "Certificate load failed: ");
      goto err0;
    }
  }

  server->sessions = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)xr_servlet_free_fini);
  g_static_rw_lock_init(&server->sessions_lock);
  server->sessions_cleaner = g_thread_create((GThreadFunc)sessions_cleaner_func, server, TRUE, NULL);
  if (server->sessions_cleaner == NULL)
    goto err1;

  return server;

err1:
  g_hash_table_destroy(server->sessions);
  g_static_rw_lock_free(&server->sessions_lock);
  if (server->cert)
    g_object_unref(server->cert);
err0:
  g_object_unref(server->service);
  g_free(server);
  return NULL;
}