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