// ----------------------------------------------------------------------------
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);
+}
+*/