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