1*b30d1939SAndy Fiddamanref	-D_def_map_ast=1
2*b30d1939SAndy Fiddamanhdr	float,floatingpoint,math,values
3*b30d1939SAndy Fiddamansys	filio,ioctl
4*b30d1939SAndy Fiddamanlib	qfrexp,qldexp
5*b30d1939SAndy Fiddamankey	signed
6*b30d1939SAndy Fiddaman
7*b30d1939SAndy Fiddamantst	- note{ number of bits in pointer }end output{
8*b30d1939SAndy Fiddaman	#include <stdio.h>
9*b30d1939SAndy Fiddaman	int
10*b30d1939SAndy Fiddaman	main()
11*b30d1939SAndy Fiddaman	{
12*b30d1939SAndy Fiddaman		printf("#define _ptr_bits	%d\n", sizeof(char*) * 8);
13*b30d1939SAndy Fiddaman		return 0;
14*b30d1939SAndy Fiddaman	}
15*b30d1939SAndy Fiddaman}end
16*b30d1939SAndy Fiddaman
17*b30d1939SAndy Fiddamantst	tmp_rmfail note{ open files cannot be removed }end execute{
18*b30d1939SAndy Fiddaman	#include <string.h>
19*b30d1939SAndy Fiddaman	#include <time.h>
20*b30d1939SAndy Fiddaman	int
21*b30d1939SAndy Fiddaman	main()
22*b30d1939SAndy Fiddaman	{
23*b30d1939SAndy Fiddaman	#if !_UWIN
24*b30d1939SAndy Fiddaman		int		n;
25*b30d1939SAndy Fiddaman		char*		s;
26*b30d1939SAndy Fiddaman		FILE*		fr;
27*b30d1939SAndy Fiddaman		FILE*		fw;
28*b30d1939SAndy Fiddaman		char		file[16];
29*b30d1939SAndy Fiddaman		static char	data[] = "0123456789";
30*b30d1939SAndy Fiddaman		s = file;
31*b30d1939SAndy Fiddaman		*s++ = '1';
32*b30d1939SAndy Fiddaman		*s++ = 'F';
33*b30d1939SAndy Fiddaman		*s++ = 'F';
34*b30d1939SAndy Fiddaman		*s++ = '3';
35*b30d1939SAndy Fiddaman		n = (int)time(0);
36*b30d1939SAndy Fiddaman		*s++ = (n & 0xF) + 'A';
37*b30d1939SAndy Fiddaman		*s++ = ((n >> 4) & 0xF) + 'A';
38*b30d1939SAndy Fiddaman		*s++ = ((n >> 8) & 0xF) + 'A';
39*b30d1939SAndy Fiddaman		*s++ = ((n >> 12) & 0xF) + 'A';
40*b30d1939SAndy Fiddaman		*s++ = '.';
41*b30d1939SAndy Fiddaman		*s++ = 'T';
42*b30d1939SAndy Fiddaman		*s++ = 'M';
43*b30d1939SAndy Fiddaman		*s++ = 'P';
44*b30d1939SAndy Fiddaman		*s = 0;
45*b30d1939SAndy Fiddaman		remove(file);
46*b30d1939SAndy Fiddaman		if (!(fw = fopen(file, "w")))
47*b30d1939SAndy Fiddaman			return 0;
48*b30d1939SAndy Fiddaman		if (!(fr = fopen(file, "r")))
49*b30d1939SAndy Fiddaman		{
50*b30d1939SAndy Fiddaman			fclose(fw);
51*b30d1939SAndy Fiddaman			remove(file);
52*b30d1939SAndy Fiddaman			return 0;
53*b30d1939SAndy Fiddaman		}
54*b30d1939SAndy Fiddaman		if (remove(file) < 0)
55*b30d1939SAndy Fiddaman		{
56*b30d1939SAndy Fiddaman			fclose(fr);
57*b30d1939SAndy Fiddaman			fclose(fw);
58*b30d1939SAndy Fiddaman			remove(file);
59*b30d1939SAndy Fiddaman			return 0;
60*b30d1939SAndy Fiddaman		}
61*b30d1939SAndy Fiddaman		if (fwrite(data, sizeof(data), 1, fw) != 1)
62*b30d1939SAndy Fiddaman			return 0;
63*b30d1939SAndy Fiddaman		fclose(fw);
64*b30d1939SAndy Fiddaman		if (fread(file, sizeof(data), 1, fr) != 1)
65*b30d1939SAndy Fiddaman			return 0;
66*b30d1939SAndy Fiddaman		fclose(fr);
67*b30d1939SAndy Fiddaman		if (strcmp(file, data) != 0)
68*b30d1939SAndy Fiddaman			return 0;
69*b30d1939SAndy Fiddaman	#endif
70*b30d1939SAndy Fiddaman		return 1;
71*b30d1939SAndy Fiddaman	}
72*b30d1939SAndy Fiddaman}end
73*b30d1939SAndy Fiddaman
74*b30d1939SAndy Fiddamanmore void_int note{ voidptr is larger than int }end execute{
75*b30d1939SAndy Fiddaman	int
76*b30d1939SAndy Fiddaman	main()
77*b30d1939SAndy Fiddaman	{
78*b30d1939SAndy Fiddaman		return sizeof(char*) > sizeof(int) ? 0 : 1;
79*b30d1939SAndy Fiddaman	}
80*b30d1939SAndy Fiddaman}end
81*b30d1939SAndy Fiddaman
82*b30d1939SAndy Fiddamanmore long_int note{ long is larger than int }end execute{
83*b30d1939SAndy Fiddaman	int
84*b30d1939SAndy Fiddaman	main()
85*b30d1939SAndy Fiddaman	{
86*b30d1939SAndy Fiddaman		return sizeof(long) > sizeof(int) ? 0 : 1;
87*b30d1939SAndy Fiddaman	}
88*b30d1939SAndy Fiddaman}end
89*b30d1939SAndy Fiddaman
90*b30d1939SAndy Fiddamantst	vax_asm note{ register layout ok for vax string operations }end execute{
91*b30d1939SAndy Fiddaman	int
92*b30d1939SAndy Fiddaman	main()
93*b30d1939SAndy Fiddaman	{
94*b30d1939SAndy Fiddaman	#ifndef vax
95*b30d1939SAndy Fiddaman		return absurd = -1;
96*b30d1939SAndy Fiddaman	#else
97*b30d1939SAndy Fiddaman		register int	r11, r10, r9, r8, r7, r6;
98*b30d1939SAndy Fiddaman		r11 = r10 = r9 = r8 = r7 = r6 = -1;
99*b30d1939SAndy Fiddaman		asm("clrw	r11");
100*b30d1939SAndy Fiddaman		asm("clrw	r10");
101*b30d1939SAndy Fiddaman		asm("clrw	r9");
102*b30d1939SAndy Fiddaman		asm("clrw	r8");
103*b30d1939SAndy Fiddaman		asm("clrw	r7");
104*b30d1939SAndy Fiddaman		asm("clrw	r6");
105*b30d1939SAndy Fiddaman		if(sizeof(int) != sizeof(char*) || r11 || r10 || r9 || r8 || r7 || r6 )
106*b30d1939SAndy Fiddaman			return -1;
107*b30d1939SAndy Fiddaman		return 0;
108*b30d1939SAndy Fiddaman	#endif
109*b30d1939SAndy Fiddaman	}
110*b30d1939SAndy Fiddaman}end
111*b30d1939SAndy Fiddaman
112*b30d1939SAndy Fiddamantst	lib_cvt note{ native floating point conversions ok }end link{
113*b30d1939SAndy Fiddaman	_BEGIN_EXTERNS_
114*b30d1939SAndy Fiddaman	extern char* ecvt _ARG_((double, int, int*, int*));
115*b30d1939SAndy Fiddaman	extern char* fcvt _ARG_((double, int, int*, int*));
116*b30d1939SAndy Fiddaman	extern double strtod _ARG_((const char*, char**));
117*b30d1939SAndy Fiddaman	_END_EXTERNS_
118*b30d1939SAndy Fiddaman	int
119*b30d1939SAndy Fiddaman	main()
120*b30d1939SAndy Fiddaman	{
121*b30d1939SAndy Fiddaman		ecvt(0.0, 0, 0, 0);
122*b30d1939SAndy Fiddaman		fcvt(0.0, 0, 0, 0);
123*b30d1939SAndy Fiddaman		strtod(0, 0);
124*b30d1939SAndy Fiddaman		return 0;
125*b30d1939SAndy Fiddaman	}
126*b30d1939SAndy Fiddaman}end
127*b30d1939SAndy Fiddaman
128*b30d1939SAndy Fiddamantst	xopen_stdio note{ Stdio fseek/fflush are X/Open-compliant }end execute{
129*b30d1939SAndy Fiddaman	#define Failed(file)	(unlink(file),1)
130*b30d1939SAndy Fiddaman	int
131*b30d1939SAndy Fiddaman	main(argc, argv)
132*b30d1939SAndy Fiddaman	int	argc;
133*b30d1939SAndy Fiddaman	char**	argv;
134*b30d1939SAndy Fiddaman	{	FILE	*f1, *f2;
135*b30d1939SAndy Fiddaman		char	file[1024], buf[1024], *f, *t;
136*b30d1939SAndy Fiddaman		int	i, fd;
137*b30d1939SAndy Fiddaman
138*b30d1939SAndy Fiddaman		/* create file */
139*b30d1939SAndy Fiddaman		for(f = argv[0], t = file; (*t = *f++) != 0; )
140*b30d1939SAndy Fiddaman			t++;
141*b30d1939SAndy Fiddaman		*t++ = '.'; *t++ = 'D'; *t++ = 0;
142*b30d1939SAndy Fiddaman		if((fd = creat(file,0666)) < 0)
143*b30d1939SAndy Fiddaman			return 1;
144*b30d1939SAndy Fiddaman
145*b30d1939SAndy Fiddaman		for (i = 0; i < sizeof(buf); ++i)
146*b30d1939SAndy Fiddaman			buf[i] = '0' + (i%10);
147*b30d1939SAndy Fiddaman		for (i = 0; i < 16; ++i)
148*b30d1939SAndy Fiddaman			if (write(fd,buf,sizeof(buf)) != sizeof(buf))
149*b30d1939SAndy Fiddaman				return Failed(file);
150*b30d1939SAndy Fiddaman		close(fd);
151*b30d1939SAndy Fiddaman
152*b30d1939SAndy Fiddaman		if(!(f1 = fopen(file,"r+")) ||
153*b30d1939SAndy Fiddaman		   (fd = dup(fileno(f1))) < 0 ||
154*b30d1939SAndy Fiddaman		   !(f2 = fdopen(fd,"r+")) )
155*b30d1939SAndy Fiddaman			return Failed(file);
156*b30d1939SAndy Fiddaman
157*b30d1939SAndy Fiddaman		if(fread(buf, 1, 7, f2) != 7 || ftell(f2) != 7)
158*b30d1939SAndy Fiddaman			return Failed(file);
159*b30d1939SAndy Fiddaman
160*b30d1939SAndy Fiddaman		if(fseek(f1, 1010, 0) < 0 || ftell(f1) != 1010)
161*b30d1939SAndy Fiddaman			return Failed(file);
162*b30d1939SAndy Fiddaman
163*b30d1939SAndy Fiddaman		fflush(f2); /* this should set the seek location to 1010 */
164*b30d1939SAndy Fiddaman		if(ftell(f2) != 1010)
165*b30d1939SAndy Fiddaman			return Failed(file);
166*b30d1939SAndy Fiddaman
167*b30d1939SAndy Fiddaman		unlink(file);
168*b30d1939SAndy Fiddaman		return 0;
169*b30d1939SAndy Fiddaman	}
170*b30d1939SAndy Fiddaman}end
171