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