X-Git-Url: https://pd.if.org/git/?p=pdclib;a=blobdiff_plain;f=functions%2Fstdio%2Fsetvbuf.c;h=2f9b4c48bdef5e2565b5e6ce9e39bdb7c394079b;hp=a65dd8ed2528265395ed99ea4036a1e7c135bf52;hb=0a5395faab237ba9008352b0f4bee9659bbd3d5f;hpb=34893ecc2200dc7017c36a54cb6c5f4c2378b5ec diff --git a/functions/stdio/setvbuf.c b/functions/stdio/setvbuf.c index a65dd8e..2f9b4c4 100644 --- a/functions/stdio/setvbuf.c +++ b/functions/stdio/setvbuf.c @@ -6,3 +6,62 @@ // ---------------------------------------------------------------------------- int setvbuf( FILE * restrict stream, char * restrict buf, int mode, size_t size ) { /* TODO */ }; + +/* PDPC code - unreviewed +/* +NULL + F = allocate, setup +NULL + L = allocate, setup +NULL + N = ignore, return success +buf + F = setup +buf + L = setup +buf + N = ignore, return success +*/ + +int setvbuf(FILE *stream, char *buf, int mode, size_t size) +{ + char *mybuf; + + if (mode == _IONBF) + { + stream->bufTech = mode; + return (0); + } + if (buf == NULL) + { + if (size < 2) + { + return (-1); + } + mybuf = malloc(size + 8); + if (mybuf == NULL) + { + return (-1); + } + } + else + { + if (size < 10) + { + return (-1); + } + mybuf = buf; + stream->theirBuffer = 1; + size -= 8; + } + free(stream->intBuffer); + stream->intBuffer = mybuf; + stream->fbuf = stream->intBuffer + 2; + *stream->fbuf++ = '\0'; + *stream->fbuf++ = '\0'; + stream->szfbuf = size; + stream->endbuf = stream->fbuf + stream->szfbuf; + *stream->endbuf = '\n'; + stream->upto = stream->endbuf; + stream->bufTech = mode; + if (!stream->textMode && (stream->bufTech == _IOLBF)) + { + stream->quickBin = 0; + } + return (0); +} +*/