#include "view.h" #include <stdlib.h> #include <stdio.h> #include <pthread.h> struct stdout { view common; pthread_mutex_t lock; }; static void clear(view *this) { /* do nothing */ } static void append(view *_this, char *s) { struct stdout *this = (struct stdout *)_this; if (pthread_mutex_lock(&this->lock)) abort(); printf("%s\n", s); if (pthread_mutex_unlock(&this->lock)) abort(); } view *new_view_stdout(void) { struct stdout *ret = calloc(1, sizeof(struct stdout)); if (ret == NULL) abort(); ret->common.clear = clear; ret->common.append = (void (*)(view *, ...))append; if (pthread_mutex_init(&ret->lock, NULL)) abort(); return (view *)ret; }