http://www.ousob.com --- Legacy Redefined #include <dos.h> #include <extend50.h> #define open _topen #define close _tclose #define lseek _tlseek #define read _tread #define write _twrite #define create _tcreat extern int _topen( char*, int); extern int _tclose( int ); extern long _tlseek( int, long, int); extern int _tread( int, char*, int); extern int _twrite( int, char*, int); extern int _tcreat( char*, int); #define O_WRONLY 0x0001 /* open for writing only */ #define O_RDWR 0x0002 /* open for reading and writing */ #define O_APPEND 0x0008 /* writes done at eof */ #define O_RDONLY 0x0000 /* open for reading only */ #define O_BINARY 0x8000 /* file mode is binary (untranslated) */ #define O_TEXT 0x4000 /* file mode is text (translated) */ #define O_CREAT 0x0100 /* create and open file */ #define O_TRUNC 0x0200 /* open and truncate */ #define O_EXCL 0x0400 /* open only if file doesn't already exist */ #define SH_COMPAT 0x00 /* compatibility mode */ #define SH_DENYRW 0x10 /* deny read/write mode */ #define SH_DENYWR 0x20 /* deny write mode */ #define SH_DENYRD 0x30 /* deny read mode */ #define SH_DENYNO 0x40 /* deny none mode */ #define S_IFMT 0170000 /* file type mask */ #define S_IFDIR 0040000 /* directory */ #define S_IFCHR 0020000 /* character special */ #define S_IFREG 0100000 /* regular */ #define S_IREAD 0000400 /* read permission, owner */ #define S_IWRITE 0000200 /* write permission, owner */ #define S_IEXEC 0000100 /* execute/search permission, owner */ CLIPPER b_ritscr() { unsigned char *ptr, *tmp; int handle,i,j ; int far *vidbuf = (int far *)0xB8000000; char *pFile = _parc(1); if( (ptr = _xalloc( 80 )) == NULL ){ _retl(0); return; } if( ISCHAR(1) ){ if( (access(pFile,0)) == 0 ){ handle = open(pFile, O_TEXT | O_WRONLY | SH_DENYNO ); if( handle == -1 ){ _retl(0); return; } lseek(handle,0L,2); } else{ handle = create(pFile, S_IFREG); if( handle == -1 ){ _retl(0); return; } } } else{ pFile = "screen.log"; if( (access(pFile,0)) == 0 ){ handle = open(pFile, O_TEXT | O_WRONLY | SH_DENYNO ); if( handle == -1 ){ _retl(0); return; } lseek(handle,0L,2); } else{ handle = create(pFile, S_IFREG); if( handle == -1 ){ _retl(0); return; } } } for(i=0; i<25; i++){ tmp = ptr; for(j=0; j<80; j++){ *ptr = *(vidbuf + (i*80) + j); ptr++; } ptr = tmp; write( handle, ptr, 80 ); write(handle,"\n",1); } close(handle); _xfree(ptr); _retl(1); }