-#include "noerr/noerr.h"
-#include "tap/tap.h"
-#include "noerr/noerr.c"
+#include <ccan/noerr/noerr.h>
+#include <ccan/tap/tap.h>
+#include <ccan/noerr/noerr.c>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
- /* tempnam(3) is generally a bad idea, but OK here. */
- char *name = tempnam(NULL, "noerr");
+ const char *name = "noerr.file";
int fd;
+ FILE *fp;
- plan_tests(12);
+ plan_tests(16);
/* Should fail to unlink. */
ok1(unlink(name) != 0);
ok1(errno == ENOENT);
ok1(unlink_noerr(name) == 0);
ok1(errno == 100);
+ /* Test failing fclose */
+ fp = fopen(name, "wb");
+ assert(fp);
+ close(fileno(fp));
+ ok1(fclose_noerr(fp) == EBADF);
+
+ /* Test successful fclose */
+ fp = fopen(name, "wb");
+ assert(fp);
+
+ errno = 100;
+ ok1(fclose_noerr(fp) == 0);
+ ok1(errno == 100);
+ unlink(name);
+
+ errno = 101;
+ free_noerr(malloc(7));
+ ok1(errno == 101);
+
return exit_status();
}