Files
mars-libowfat/buffer/buffer_tosa.c
leitner b7b8a0efc1 gcc 15 and C23 force some union trickery on buffer.h :-(
add a few buffer_init*_forread variants to pretend we have type safety
  make sure buffer_init_staticcontents handles flushing attempts
2025-04-22 09:32:03 +00:00

29 lines
546 B
C

#include "stralloc.h"
#include "buffer.h"
static ssize_t strallocwrite(int fd,const char* buf,size_t len,void* myself) {
buffer* b=myself;
stralloc* sa=b->cookie;
sa->len+=len;
if (stralloc_readyplus(sa,1024)==0) return 0;
b->x=sa->s+sa->len;
b->p=0;
b->a=1024;
(void)fd;
(void)buf;
return (ssize_t)len;
}
int buffer_tosa(buffer* b,stralloc* sa) {
if (stralloc_ready(sa,1024)==0) return -1;
b->x=sa->s;
b->p=0;
b->n=0;
b->a=1024;
b->fd=0;
b->op.wopc=strallocwrite;
b->cookie=sa;
b->deinit=0;
return 0;
}