36 lines
683 B
C
36 lines
683 B
C
#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;
|
|
}
|