bool test_r_str_rchr(void) {
	const char* test = "raddddare2d";
	const char* out = r_str_rchr (test, NULL, '2');
	mu_assert_streq (out, "2d", "pointer to last p in range in raddddare2d");
	out = r_str_rchr (test, NULL, 'p');
	if (out) {
		mu_assert ("non NULL value returned", 0);
	}
	out = test + 9;
	out = r_str_rchr (test, out, 'd');
	mu_assert_streq (out, "dare2d", "pointer to last d in range in raddddare2d");
	out = test + strlen (test);
	out = r_str_rchr (test, out, 'p');
	if (out) {
		mu_assert ("non NULL value of out", 0);
	}
	mu_end;
}
Exemple #2
0
static int xrefs_list_cb_rad(RAnal *anal, const char *k, const char *v) {
	ut64 dst, src = r_num_get (NULL, v);
	if (!strncmp (k, "ref.", 4)) {
		const char *p = r_str_rchr (k, NULL, '.');
		if (p) {
			dst = r_num_get (NULL, p + 1);
			anal->cb_printf ("ax 0x%"PFMT64x" 0x%"PFMT64x"\n", src, dst);
		}
	}
	return 1;
}
Exemple #3
0
static void handle_friend_message(
		Tox *tox, uint32_t friend_number, TOX_MESSAGE_TYPE type,
		const uint8_t *message, size_t length,
		void *user_data) {
	TOX_ERR_FRIEND_SEND_MESSAGE err_send;
	eprintf ("<%d> %s\n", friend_number, message);
	if (*message != ':') {
		return;
	}
	tox_self_set_typing(tox, friend_number, true, NULL);
	char *cmd = r_str_ndup (message, length);
	char *res = r_core_cmd_str (core, cmd + 1);
	if (res && *res) {
		const int MAXK = 1280;
		int bak = 0;
		int k = 0;
		char *r = res;
		while (1) {
			if (strlen (r) > MAXK) {
				k = MAXK;
				bak = r[k];
				r[k] = 0;
				char *nl = r_str_rchr (r, NULL, '\n');
				if (nl) {
					r[k] = bak;
					bak = *nl;
					*nl = 0;
					k = nl - r; 
				}
			} else {
				bak = 0;
			}
			tox_friend_send_message (tox, friend_number, type, r, strlen (r), &err_send);
			// tox_friend_send_message (tox, friend_number, type, message, length, &err_send);
			if (err_send != TOX_ERR_FRIEND_SEND_MESSAGE_OK) {
				fprintf(stderr, "unable to send message back to friend %d: %d\n",
						friend_number, err_send);
			}
			if (bak) {
				r[k] = bak;
				r += k;
			} else {
				break;
			}
		}
	} else {
		eprintf ("Invalid command?\n");
	}
	free (res);
	free (cmd);
	tox_self_set_typing(tox, friend_number, false, NULL);
}
Exemple #4
0
static bool xrefs_list_cb_json(RAnal *anal, bool is_first, const char *k, const char *v) {
	ut64 dst, src = r_num_get (NULL, v);
	if (strlen (k) > 8) {
		const char *p = r_str_rchr (k, NULL, '.');
		if (p) {
			if (is_first) {
				is_first = false;
			} else {
				anal->cb_printf (",");
			}
			dst = r_num_get (NULL, p + 1);
			sscanf (p + 1, "0x%"PFMT64x, &dst);
			anal->cb_printf ("\"%"PFMT64d"\":%"PFMT64d, src, dst);
		}
	}
	return is_first;
}