コード例 #1
0
ファイル: log.c プロジェクト: P4N74/radare2
R_API void r_core_log_del(RCore *core, int n) {
	int idx;
	if (n > 0) {
		if (n + 1 >= core->log->last) {
			core->log->first = core->log->last;
			r_strpool_empty (core->log->sp);
			return;
		}
		if (n < core->log->first) {
			return;
		}
		idx = n - core->log->first;
		if (idx < 0) {
			return;
		}
		core->log->first += idx + 1;
		char *msg = r_strpool_get_i (core->log->sp, idx);
		// if (idx >= core->log->last) {
		if (!msg || !*msg) {
			core->log->first = core->log->last;
			r_strpool_empty (core->log->sp);
		} else {
			r_strpool_slice (core->log->sp, idx);
		}
	} else {
		core->log->first = core->log->last;
		r_strpool_empty (core->log->sp);
	}
}
コード例 #2
0
ファイル: strpool.c プロジェクト: EliaGeretto/radare2
R_API char *r_strpool_slice (RStrpool *p, int index) {
	int idx, len;
	char *o, *x = r_strpool_get_i (p, index+1);
	if (!x) return NULL;
	idx = (size_t)(x-p->str);
	len = p->len - idx;
	o = malloc (len+128);
	if (!o) return NULL;
	memcpy (o, x, len);
	free (p->str);
	p->str = o;
	p->size = len + 128;
	p->len = len;
	return o;
}
コード例 #3
0
ファイル: log.c プロジェクト: Darredevil/radare2
R_API void r_core_log_del(RCore *core, int n) {
	int idx;
	if (n>0) {
		if (n > core->log->last)
			n = core->log->last;
		idx = n-core->log->first;
		if (idx<0) return;
		core->log->first += idx+1;
		/* s= */ r_strpool_get_i (core->log->sp, idx);
		r_strpool_slice (core->log->sp, idx);
	} else {
		core->log->first = core->log->last;
		r_strpool_empty (core->log->sp);
	}
}