diff options
Diffstat (limited to 'source4/lib')
-rw-r--r-- | source4/lib/replace/Makefile.in | 2 | ||||
-rw-r--r-- | source4/lib/replace/test/testsuite.c | 44 |
2 files changed, 44 insertions, 2 deletions
diff --git a/source4/lib/replace/Makefile.in b/source4/lib/replace/Makefile.in index a53a1271ef..2f13b97836 100644 --- a/source4/lib/replace/Makefile.in +++ b/source4/lib/replace/Makefile.in @@ -13,7 +13,7 @@ CFLAGS=-I. -I$(srcdir) @CFLAGS@ OBJS = dlfcn.o getpass.o replace.o snprintf.o -all: libreplace.a +all: libreplace.a testsuite install: all mkdir -p $(libdir) diff --git a/source4/lib/replace/test/testsuite.c b/source4/lib/replace/test/testsuite.c index 83da05ce45..c00e2a788f 100644 --- a/source4/lib/replace/test/testsuite.c +++ b/source4/lib/replace/test/testsuite.c @@ -27,9 +27,51 @@ #include "../replace.h" #include <stdio.h> +#if HAVE_STDLIB_H +#include <stdlib.h> +#endif + +#if HAVE_TYPES_H +#include <sys/types.h> +#endif + +#if HAVE_SYS_STAT_H +#include <sys/stat.h> +#endif + +#include <fcntl.h> +#include <errno.h> + +#define TESTFILE "testfile.dat" + +/* + test ftruncate() function + */ static int test_ftruncate() { - /* FIXME */ + struct stat st; + int fd, i; + const int size; + printf("testing ftruncate\n"); + unlink(TESTFILE); + fd = open(TESTFILE, O_RDWR|O_CREAT, 0600); + if (fd == -1) { + printf("creating '%s' failed - %s\n", TESTFILE, strerror(errno)); + return false; + } + if (ftruncate(fd, size) != 0) { + printf("ftruncate failed - %s\n", strerror(errno)); + return false; + } + if (fstat(fd, &st) != 0) { + printf("fstat failed - %s\n", strerror(errno)); + return false; + } + if (st.st_size != size) { + printf("ftruncate gave wrong size %d - expected %d\n", + (int)st.st_size, size); + return false; + } return true; } |