Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/cmd/3d/features/syslib
1810 views
typ	off64_t sys/stat.h

hdr	alloca

lib	syscall syscall.h sys/syscall.h

mem	stat.st_atim,stat.st_fstype sys/types.h sys/stat.h
mem	DIR dirent.h -DDIRENT_ILLEGAL_ACCESS

tst	fdview execute{
	#include <fcntl.h>
	#define VIEW	15
	main()
	{
		int	fd;
		int	oflags;
		int	nflags;
		int	xflags;
		if ((fd = open(argv[0], 0)) < 0) return(1);
		if ((oflags = fcntl(fd, F_GETFL, 0)) < 0) return(1);
		nflags = (oflags & 0xffff) | (VIEW<<16);
		if (fcntl(fd, F_SETFL, nflags) < 0) return(1);
		if ((xflags = fcntl(fd, F_GETFL, 0)) < 0) return(1);
		if (xflags != nflags) return(1);
		return(0);
	}
}end pass{
	echo "#define getfdview(f)	((fcntl(f,F_GETFL,0)>>16)&037)"
	echo "#define setfdview(f,v)	(fcntl(f,F_SETFL,(fcntl(f,F_GETFL,0)&0xffff)|(((v)&037)<<16)))"
}end fail{
	echo "/* hack alert -- this is the view of the last user open */"
	echo "#define getfdview(f)	(state.path.open_level)"
	echo "#define setfdview(f,v)"
}end

tst	no_exit_exit note{ exit() bypasses _exit() }end exec{
	#include <sys/types.h>
	#include <signal.h>
	#ifdef __STDC__
	#include <unistd.h>
	#endif
	#if _STD_
	void _exit(int code) { kill(getpid(), SIGKILL); }
	#else
	void _exit(code) int code; { kill(getpid(), SIGKILL); }
	#endif
	int main()
	{
		return 0;
	}
}end