Esempio n. 1
0
unsigned _RTL_FUNC _dos_read(int __fd, void *__buf, unsigned __len, unsigned *__nread)
{
    DPMI_REGS regs;
   int mod = __len %__dtabuflen,i, tsize = 0;
   for (i=0; i < (__len & -__dtabuflen); i += __dtabuflen) {
        regs.h.dx = 0;
      regs.h.bx = __fd;
        regs.h.cx = __dtabuflen;
        __doscall(0x3f,&regs);
        if (regs.h.flags & 1)
         return errno = regs.b.al ;
      __dtatobuf((char *)__buf+i,__dtabuflen);
        tsize += regs.h.ax;
      if (regs.h.ax < __dtabuflen) {
         *__nread = tsize ;
         return 0 ;
      }
    }
    regs.h.dx = 0;
   regs.h.bx = __fd;
    regs.h.cx = mod;
    __doscall(0x3f,&regs);
    tsize += regs.h.ax;
    if (regs.h.flags & 1)
         return errno = regs.b.al ;
   __dtatobuf((char *)__buf+i,mod);
   *__nread = tsize ;
   return 0;
}
Esempio n. 2
0
int __ll_creat(char *name, int flags, int shflags)
{
    DPMI_REGS regs;
    regs.d.ecx = 0;
    regs.h.dx = __nametodta(name,0);
    return __doscall(0x3c,&regs);
}
Esempio n. 3
0
int __ll_writeable(const char *file)
{
    DPMI_REGS regs;
   regs.b.al = 0 ;
   regs.h.dx = __nametodta(file,0) ;
   __doscall(0x43,&regs);
   if (regs.b.al != 0)
      return 1 ;
   return !(regs.h.cx & 1) ;
}
Esempio n. 4
0
unsigned _RTL_FUNC _dos_creat(const char *__pathP, unsigned __attr, int *__fd)
{
    DPMI_REGS regs;
   regs.d.ecx = __attr;
   regs.h.dx = __nametodta(__pathP,0);
   if (!__doscall(0x3c,&regs)) {
      errno = regs.b.al ;
      return regs.b.al ;
   }
   *__fd = regs.h.ax ;
   return 0 ;
}
Esempio n. 5
0
size_t __ll_getpos(int fd)
{
    DPMI_REGS regs;
    regs.h.bx = fd;
    regs.h.dx =0;
    regs.h.cx = 0;
    regs.b.al=1;
    __doscall(0x42,&regs);
    if (regs.h.flags & 1)
        return -1;
    return ((regs.h.dx << 16) + regs.h.ax);
}
Esempio n. 6
0
int __ll_remove(char *name)
{
    DPMI_REGS regs;
    regs.h.dx = __nametodta(name,0);
    __doscall(0x41,&regs);
    if (regs.h.flags & 1)
    {
        errno = regs.h.ax & 255;
        return 1;
    }
    
    return 0;
}
Esempio n. 7
0
unsigned _RTL_FUNC _dos_setfileattr(const char *__filename,unsigned __attrib)
{
   DPMI_REGS regs ;
   regs.h.ax = 01 ;
   regs.h.cx = __attrib  ;
   regs.h.dx = __nametodta(__filename,0);
   __doscall(0x43,&regs);
   if (regs.h.flags & 1) {
      errno = ENOENT ;
      return regs.b.al ;
   }
   return 0 ;
}
Esempio n. 8
0
int __ll_seek(int fd, size_t pos, int origin)
{
    DPMI_REGS regs;
    regs.h.bx = fd;
    regs.h.cx = pos >> 16;
    regs.h.dx = pos & 65535;
    regs.b.al = origin;
    __doscall(0x42,&regs);
    if (regs.h.flags & 1)
        return -1;
    
    return 0;
}