Пример #1
0
void co_debug_download_and_parse(void)
{
	co_manager_handle_t handle;
	xml_start();

	handle = co_os_manager_open();
	if (handle) {
		char *buffer = co_os_malloc(BUFFER_SIZE);
		if (buffer) {
			co_manager_ioctl_debug_reader_t debug_reader;
			debug_reader.user_buffer = buffer;
			debug_reader.user_buffer_size = BUFFER_SIZE;
			while (1) {
				debug_reader.filled = 0;
				co_rc_t rc = co_manager_debug_reader(handle, &debug_reader);
				if (!CO_OK(rc)) {
					fprintf(stderr, "log ended: %x\n", (int)rc);
					return;
				}

				parse_tlv_buffer(buffer, debug_reader.filled);

				/* Flush, if stdout not redirected */
				if (output_file != stdout)
					fflush (output_file);
			}
			co_os_free(buffer);
		}
		co_os_manager_close(handle);
	}

	xml_end();
}
Пример #2
0
/* XML in edit buffer parsing */
CSSBox *xml_parse_buffer(EditBuffer *b, int offset_start, int offset_end, 
                         CSSStyleSheet *style_sheet, int flags,
                         CSSAbortFunc *abort_func, void *abort_opaque)
{
    XMLState *s;
    CSSBox *box;
    int ret;

    s = xml_begin(style_sheet, flags, abort_func, abort_opaque, b->name, NULL);
    ret = xml_parse_internal(s, NULL, offset_end - offset_start, 
                             b, offset_start);
    box = xml_end(s);
    if (ret < 0) {
        css_delete_box(box);
        box = NULL;
    }
    return box;
}
Пример #3
0
static void co_debug_parse(int fd)
{
	xml_start();
	for (;;) {
		co_debug_tlv_t tlv;
		int nread;

		nread = read(fd, &tlv, sizeof(tlv));
		if (nread != sizeof(tlv) || tlv.length == 0)
			break;

		char block[tlv.length];
		nread = read_helper(fd, (void*)&block, tlv.length);
		if (nread != tlv.length)
			break;

		parse_tlv(&tlv, block);

		/* Flush every block, if stdout not redirected */
		if (output_file != stdout)
			fflush (output_file);
	}
	xml_end();
}
Пример #4
0
static void sig_handle(int signo)
{
	xml_end();
	fprintf (stderr, "\ncolinux-debug-daemon terminated (%d)\n", signo);
	exit (signo);
}