2007-01-17 01:42:12 +00:00
|
|
|
# $FreeBSD$
|
|
|
|
|
2010-08-15 21:29:03 +00:00
|
|
|
PROG= pjdfstest
|
2008-11-23 19:56:09 +00:00
|
|
|
|
2010-08-12 19:45:27 +00:00
|
|
|
${PROG}: ${PROG}.c
|
|
|
|
@OSTYPE=`uname`; \
|
|
|
|
CFLAGS=-D__OS_$${OSTYPE}__; \
|
|
|
|
if [ $$OSTYPE = "FreeBSD" ]; then \
|
Add support for the following syscalls:
- fchmod(2),
- fchown(2),
- fchflags(2),
- fstat(2),
- ftruncate(2),
- fpathconf(2),
- lpathconf(2).
Make write(2) syscall to take descriptor instead of file name.
We implement descriptors by keeping track of open files and allowing to
reference them by the following syscalls. Because pjdfstest already supports
executing multiple syscalls from one command it works pretty well.
For example, the following command:
pjdfstest open foo "O_CREAT,O_RDWR" 0 : open bar "O_CREAT,O_RDONLY" 640 : fchmod 0 0666 : fchown 0 -1 20 : fchmod 1 0444
is equivalent of (error checking omitted):
int fd[2];
fd[0] = open("foo", O_CREAT | O_RDWR, 0);
fd[1] = open("bar", O_CREAT | O_RDONLY, 0640);
fchmod(fd[0], 0666);
fchown(fd[0], -1, 20);
fchmod(fd[1], 0444);
2011-03-09 22:39:10 +00:00
|
|
|
CFLAGS="$$CFLAGS -DHAS_LCHMOD -DHAS_CHFLAGS -DHAS_FCHFLAGS -DHAS_LCHFLAGS -DHAS_FREEBSD_ACL"; \
|
2010-08-12 19:45:27 +00:00
|
|
|
elif [ $$OSTYPE = "SunOS" ]; then \
|
|
|
|
CFLAGS="$$CFLAGS -DHAS_TRUNCATE64 -DHAS_STAT64"; \
|
|
|
|
CFLAGS="$$CFLAGS -lsocket"; \
|
|
|
|
elif [ $$OSTYPE = "Darwin" ]; then \
|
|
|
|
CFLAGS="$$CFLAGS -DHAS_LCHMOD -DHAS_CHFLAGS -DHAS_LCHFLAGS"; \
|
|
|
|
elif [ $$OSTYPE == "Linux" ]; then \
|
|
|
|
CFLAGS="$$CFLAGS -D_GNU_SOURCE"; \
|
|
|
|
else \
|
|
|
|
echo "Unsupported operating system: ${OSTYPE}."; \
|
|
|
|
exit 1; \
|
|
|
|
fi; \
|
|
|
|
cmd="gcc -Wall $$CFLAGS ${PROG}.c -o ${PROG}"; \
|
|
|
|
echo $$cmd; \
|
|
|
|
$$cmd
|
2008-11-23 19:56:09 +00:00
|
|
|
|
2010-08-12 19:45:27 +00:00
|
|
|
clean:
|
|
|
|
rm -f ${PROG}
|