1N/Aref -D_def_map_ast=1
1N/Ahdr float,floatingpoint,math,values
1N/Asys filio,ioctl
1N/Alib qfrexp,qldexp
1N/Akey signed
1N/A
1N/Atst - note{ number of bits in pointer }end output{
1N/A #include <stdio.h>
1N/A int
1N/A main()
1N/A {
1N/A printf("#define _ptr_bits %d\n", sizeof(char*) * 8);
1N/A return 0;
1N/A }
1N/A}end
1N/A
1N/Atst tmp_rmfail note{ open files cannot be removed }end execute{
1N/A #include <string.h>
1N/A #include <time.h>
1N/A int
1N/A main()
1N/A {
1N/A #if !_UWIN
1N/A int n;
1N/A char* s;
1N/A FILE* fr;
1N/A FILE* fw;
1N/A char file[16];
1N/A static char data[] = "0123456789";
1N/A s = file;
1N/A *s++ = '1';
1N/A *s++ = 'F';
1N/A *s++ = 'F';
1N/A *s++ = '3';
1N/A n = (int)time(0);
1N/A *s++ = (n & 0xF) + 'A';
1N/A *s++ = ((n >> 4) & 0xF) + 'A';
1N/A *s++ = ((n >> 8) & 0xF) + 'A';
1N/A *s++ = ((n >> 12) & 0xF) + 'A';
1N/A *s++ = '.';
1N/A *s++ = 'T';
1N/A *s++ = 'M';
1N/A *s++ = 'P';
1N/A *s = 0;
1N/A remove(file);
1N/A if (!(fw = fopen(file, "w")))
1N/A return 0;
1N/A if (!(fr = fopen(file, "r")))
1N/A {
1N/A fclose(fw);
1N/A remove(file);
1N/A return 0;
1N/A }
1N/A if (remove(file) < 0)
1N/A {
1N/A fclose(fr);
1N/A fclose(fw);
1N/A remove(file);
1N/A return 0;
1N/A }
1N/A if (fwrite(data, sizeof(data), 1, fw) != 1)
1N/A return 0;
1N/A fclose(fw);
1N/A if (fread(file, sizeof(data), 1, fr) != 1)
1N/A return 0;
1N/A fclose(fr);
1N/A if (strcmp(file, data) != 0)
1N/A return 0;
1N/A #endif
1N/A return 1;
1N/A }
1N/A}end
1N/A
1N/Amore void_int note{ voidptr is larger than int }end execute{
1N/A int
1N/A main()
1N/A {
1N/A return sizeof(char*) > sizeof(int) ? 0 : 1;
1N/A }
1N/A}end
1N/A
1N/Amore long_int note{ long is larger than int }end execute{
1N/A int
1N/A main()
1N/A {
1N/A return sizeof(long) > sizeof(int) ? 0 : 1;
1N/A }
1N/A}end
1N/A
1N/Atst vax_asm note{ register layout ok for vax string operations }end execute{
1N/A int
1N/A main()
1N/A {
1N/A #ifndef vax
1N/A return absurd = -1;
1N/A #else
1N/A register int r11, r10, r9, r8, r7, r6;
1N/A r11 = r10 = r9 = r8 = r7 = r6 = -1;
1N/A asm("clrw r11");
1N/A asm("clrw r10");
1N/A asm("clrw r9");
1N/A asm("clrw r8");
1N/A asm("clrw r7");
1N/A asm("clrw r6");
1N/A if(sizeof(int) != sizeof(char*) || r11 || r10 || r9 || r8 || r7 || r6 )
1N/A return -1;
1N/A return 0;
1N/A #endif
1N/A }
1N/A}end
1N/A
1N/Atst lib_cvt note{ native floating point conversions ok }end link{
1N/A _BEGIN_EXTERNS_
1N/A extern char* ecvt _ARG_((double, int, int*, int*));
1N/A extern char* fcvt _ARG_((double, int, int*, int*));
1N/A extern double strtod _ARG_((const char*, char**));
1N/A _END_EXTERNS_
1N/A int
1N/A main()
1N/A {
1N/A ecvt(0.0, 0, 0, 0);
1N/A fcvt(0.0, 0, 0, 0);
1N/A strtod(0, 0);
1N/A return 0;
1N/A }
1N/A}end
1N/A
1N/Atst xopen_stdio note{ Stdio fseek/fflush are X/Open-compliant }end execute{
1N/A #define Failed(file) (unlink(file),1)
1N/A int
1N/A main(argc, argv)
1N/A int argc;
1N/A char** argv;
1N/A { FILE *f1, *f2;
1N/A char file[1024], buf[1024], *f, *t;
1N/A int i, fd;
1N/A
1N/A /* create file */
1N/A for(f = argv[0], t = file; (*t = *f++) != 0; )
1N/A t++;
1N/A *t++ = '.'; *t++ = 'D'; *t++ = 0;
1N/A if((fd = creat(file,0666)) < 0)
1N/A return 1;
1N/A
1N/A for (i = 0; i < sizeof(buf); ++i)
1N/A buf[i] = '0' + (i%10);
1N/A for (i = 0; i < 16; ++i)
1N/A if (write(fd,buf,sizeof(buf)) != sizeof(buf))
1N/A return Failed(file);
1N/A close(fd);
1N/A
1N/A if(!(f1 = fopen(file,"r+")) ||
1N/A (fd = dup(fileno(f1))) < 0 ||
1N/A !(f2 = fdopen(fd,"r+")) )
1N/A return Failed(file);
1N/A
1N/A if(fread(buf, 1, 7, f2) != 7 || ftell(f2) != 7)
1N/A return Failed(file);
1N/A
1N/A if(fseek(f1, 1010, 0) < 0 || ftell(f1) != 1010)
1N/A return Failed(file);
1N/A
1N/A fflush(f2); /* this should set the seek location to 1010 */
1N/A if(ftell(f2) != 1010)
1N/A return Failed(file);
1N/A
1N/A unlink(file);
1N/A return 0;
1N/A }
1N/A}end