basien@pemcom.pem-stuttgart.de (Tillmann A. Basien) (04/03/91)
During my work as an autherized SCO reseller I get many problems. On of
my last was, that open access can^t create indexfiles with the correct
size. Some month a go I posted a question to this subject and I got no
answer.
So I analysed the problem with some hand made tools to get the int21 call
list of a dos-application (one day work).
With that tools I found a explanation of the problem.
Is there anybody who can confirm my results ?
Here is the test programm for MSC 5.1:
===============================================================================
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <dos.h>
/*****************************************************************************
TEST PROGRAMM TO DEMONSTRATE A VPIX ANDA PC_NFS ERROR
During my work with VP/ix I got on MS WORD and Open Access two
identical problems. WORD can't open a spezified file and Open Access
creates an indexfile with the size of 0 insteed of 512. So I wrote a
programm to analyse the INT21 calls of the applications. And I found
the following explanation.
On virtuell drives the DOS-seek(0x42) and DOS-write(0x40) systemcalls
does not work correctly.
This programms creates a file calles TEST.XX. In this file, which
actually has the size 0, the programm will go to position 512.
Then 0 bytes will be written and the file will be closed.
On a pure DOS-Drive (C: or D:) the new file has the size of 512 bytes.
On a network viruell drive or a VP/ix drive the size will be 0.
TB PEM GmbH, 2.April 1991
*/
main()
{
int fp;
int rtn;
long pos;
union REGS in,out;
/* creat file */
_dos_creat("test.xx",_A_NORMAL,&fp); printf("open: %d\n",fp);
/* Seek to position 512 behind the actuell EOF position */
in.h.ah=0x42; in.h.al=0x00; in.x.bx=fp; in.x.cx=0; in.x.dx=512;
intdos(&in,&out); printf("lseek: %04x:%04x\n",out.x.dx,out.x.ax);
/* Write 0 Bytes, to fill the 512 bytes infront of EOF */
rtn=_dos_write(fp,&fp,0,0); printf("write: %d\n",rtn);
/* close the file */
_dos_close(fp);
}
--
basien@PEM-Stuttgart.de
Dipl.-Ing. Tillmann A. Basien PEM Programmentwicklungsgesellschaft
Vaihinger Str.49, PostBox 810165 fuer Microcomputer mbH
FRG 7000 Stuttgart 80 voice: +49-711-713045 fax: +49-711-713047