0x43 – CHMOD - nastav atribúty súboru (AL = 1)


<= =>


AH = 0x43
AL = 1
CX = nové atribúty súboru
DS:DX = ASCIZ reťazec s menom súboru

Vracia :
ak je nastavená vlajka CF
AX = kód chyby (0x01, 0x02, 0x03, 0x05)

Poznámky :
Nezmení atribútové bity adresáru a menovky disku, ale zmení ostatné atribútové bity adresáru (adresárový bit musí byť vynulovaný pre úspešnú zmenu ostatných atribútov adresára, ale pritom adresár sa nezmení na normálny súbor).

Bitové pole atribútov súboru :

Bit(y)
Popis
0
iba na čítanie
1
skrytý
2
systémový
3
menovka disku
4
adresár
5
archivovať
6
nepoužité


Príklad :
#include <stdlib.h>
#include <stdio.h>
#include <dos.h>
#include <conio.h>

void main(void)
{
   union REGS regs;
   struct SREGS segregs;
   unsigned char i;
   regs.h.ah = 0x43;  // CHMOD
   regs.h.al = 1      // 1 - nastav atribút

   regs.x.cx = 32 + 4;
               // v CX je atribút pre nastavenie ak AL=1
               // hodnotu treba zostaviť súčtom nasledujúcich hodnôt
               //  0  - žiadne atribúty
               //  1  - iba na čítanie
               //  2  - skrytý
               //  4  - systémový
               //  8  - menovka média -> nemožno meniť
               // 16  - podadresár -> nemožno meniť
               // 32  - na archiváciu

   char str[]="c:\\temp\\pokus.txt";  // cesta k súboru

   regs.x.dx = FP_OFF(str);
   segregs.ds = FP_SEG(str);

   clrscr();

   intdosx(&regs, &regs, &segregs);

   if (regs.x.cflag == 0)
     printf("\nAtribúty súboru %s sa podarilo nastaviť\n", str);
   else
     printf("\nAtribúty súboru %s sa nepodarilo nastaviť, vznikla chyba č. : %d - %s", str, regs.x.ax, sys_errlist[regs.x.ax]);

  getch();

}


<= =>