static void visual_repeat(RCore *core) { int atport = r_config_get_i (core->config, "scr.atport"); if (atport) { #if __UNIX__ && !__APPLE__ int port = r_config_get_i (core->config, "http.port"); if (!r_core_rtr_http (core, '&', NULL)) { const char *xterm = r_config_get (core->config, "cmd.xterm"); // TODO: this must be configurable r_sys_cmdf ("%s 'r2 -C http://localhost:%d/cmd/V;sleep 1' &", xterm, port); //xterm -bg black -fg gray -e 'r2 -C http://localhost:%d/cmd/;sleep 1' &", port); } else { r_cons_any_key (NULL); } #else eprintf ("Unsupported on this platform\n"); r_cons_any_key (NULL); #endif } else { RThread *th = r_th_new (visual_repeat_thread, core, 0); r_th_start (th, 1); r_cons_break (NULL, NULL); r_cons_any_key (NULL); eprintf ("^C \n"); core->cons->breaked = true; r_th_wait (th); r_cons_break_end (); } }
int test1() { int ctr = 0; struct r_th_t *th; th = r_th_new (&looper, &ctr, 0); th = r_th_new (&looper, &ctr, 0); //th = r_th_new (&looper, &ctr, 0); #if __i386__ || __x86_64__ asm ("int3"); #endif //r_th_start (th, true); while (r_th_wait_async (th)) { printf ("\nwaiting...\n"); fflush (stdout); r_sys_usleep (400); // r_th_break(th); } printf ("\nfinished\n"); #if 0 r_th_start(th, true); sleep(1); #endif /* wait and free */ r_th_wait (th); r_th_free (th); printf ("\nresult %d\n", ctr); return 0; }
static int r2tox_connect() { if (tox) { printf ("Status: Online\n"); print_tox_my_address (tox); return -1; } Tox *t = NULL; struct Tox_Options *options = tox_options_new(NULL); FILE *fd = fopen("tox.data", "rb"); if (fd) { eprintf ("Using tox.data\n"); size_t sz = fread (&data, 1, 4096, fd); fclose (fd); tox_options_set_savedata_length (options, sz); tox_options_set_savedata_type (options, TOX_SAVEDATA_TYPE_TOX_SAVE); tox_options_set_savedata_data (options, data, sz); t = tox_new (options, NULL); if (!t) { printf("cannot new\n"); return 1; } } else { t = tox_new (NULL, NULL); if (!t) { eprintf ("cannot new\n"); return 1; } // r2tox_save(); } const char *username = "******"; const char *status = "Available"; tox_self_set_name (t, username, strlen(username), NULL); tox_self_set_status_message (t, status, strlen(status), NULL); tox_callback_friend_name(t, handle_friend_name); tox_callback_friend_request (t, handle_friend_request); tox_callback_friend_message (t, handle_friend_message); tox_callback_friend_lossy_packet (t, handle_friend_lossy_packet); tox_callback_friend_lossless_packet (t, handle_friend_lossless_packet); tox_callback_friend_read_receipt (t, handle_friend_read_receipt); tox_callback_conference_invite(t, handle_conference_invite); tox_callback_conference_message(t, handle_conference_message); tox_callback_conference_title(t, handle_conference_title); // bootstrap size_t i; for (i = 0; i < sizeof(nodes)/sizeof(DHT_node); i ++) { sodium_hex2bin(nodes[i].key_bin, sizeof(nodes[i].key_bin), nodes[i].key_hex, sizeof(nodes[i].key_hex)-1, NULL, NULL, NULL); tox_bootstrap(t, nodes[i].ip, nodes[i].port, nodes[i].key_bin, NULL); } print_tox_my_address (t); tox_callback_self_connection_status (t, self_connection_status_cb); tox = t; // thread here if (!thread) { thread = r_th_new (r2tox_mainloop, NULL, 1); r_th_start (thread, true); } return 0; }
static void loading_start() { thread = r_th_new (loading_thread, NULL, 1); r_th_start (thread, true); }