#include #include #include #include #include #include #include #include #include extern int errno; void Delay(long t) ; main(argc,argv) int argc; char **argv; { int h,more=1,nb ; char state[80] ; if (argc < 3) { printf("Missing arguments ...\n") ; printf("Test&Set dos_file value \n"); return(0); } while(more) { h = sopen(argv[1],O_RDWR|O_CREAT,SH_DENYRW,S_IREAD|S_IWRITE) ; if (h == -1) { if (errno != EACCES) { printf("Unable to Open [errno=%d]%s...\n",errno,argv[1]); return(0) ; } else printf("Test&set, File %s Permision denied...\n",argv[1]) ; } else { nb = read(h,state,79) ; if ((nb<=0) || (nb>79) ) {nb=0;printf("OK, Empty File\n");} state[nb] = 0 ; if (nb == 0) more = 0; else { printf("File %s [%s]...\n",argv[1],state); close(h); } } if (more) Delay(500L+(long)(random(1000))); } write(h,argv[2],strlen(argv[2])); close(h) ; return(0); } void Delay(long t) { struct time dtime ; int more =1 ; unsigned long v1,v2 ; gettime(&dtime) ; v1 = (3600000L)*(unsigned long)dtime.ti_hour ; v1 += (60000L) *(unsigned long)dtime.ti_min ; v1 += (1000L) *(unsigned long)dtime.ti_sec ; v1 += (10L) *(unsigned long)dtime.ti_hund ; while(more) { gettime(&dtime) ; v2 = (3600000L)*(unsigned long)dtime.ti_hour ; v2 += (60000L) *(unsigned long)dtime.ti_min ; v2 += (1000L) *(unsigned long)dtime.ti_sec ; v2 += (10L) *(unsigned long)dtime.ti_hund ; if (v2 < v1) v1 += (3600000L + 60000L + 1000L + 10L) ; if ((v2-v1)>t) more=0 ; else /* printf("%05lu\b\b\b\b\b",(v2-v1)) */; } return ; }