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(®s, ®s, &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();
}