FxLibcTest/src/stdio/util.h

43 lines
1.1 KiB
C

#ifndef _STDIO_UTIL_H
#define _STDIO_UTIL_H
#include <ft/test.h>
#include <stdio.h>
/* Print a FILE to an ft_test. */
static inline void ft_log_FILE(ft_test *t, char const *prefix, FILE *fp)
{
ft_log(t, "%s%s", prefix, (*prefix ? " " : ""));
if(!fp) {
ft_log(t, "(null)\n");
return;
}
ft_log(t, "{fd %d @%d, mode %s%s%s%s%s%s, %s",
fp->fd, fp->fdpos,
fp->readable ? "r" : "",
fp->writable ? "w" : "",
fp->append ? "A" : "",
fp->text ? "" : "b",
fp->error ? " ERROR" : "",
fp->eof ? " EOF" : "",
fp->bufmode == _IONBF ? "_IONBF" :
fp->bufmode == _IOLBF ? "_IOLBF" :
fp->bufmode == _IOFBF ? "_IOFBF" : "_???");
if(fp->bufmode != _IONBF) {
ft_log(t, " %p/%d", fp->buf, fp->bufsize);
if(fp->bufpos == 0)
ft_log(t, " EMPTY");
else if(fp->bufdir == __FILE_BUF_READ)
ft_log(t, " READ %d/%d", fp->bufpos, fp->bufread);
else if(fp->bufdir == __FILE_BUF_WRITE)
ft_log(t, " WRITE %d", fp->bufpos);
}
ft_log(t, "}\n");
}
#endif /* _STDIO_UTIL_H */