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