0x56 – RENAME – premenuj/premiestni súbor
|
|
|
|
AH = 0x56
DS:DX = adresa ASCIZ reťazca s menom súboru (musí existovať)
ES:DI = adresa ASCIZ reťazca s novým menom (nesmie existovať)
Vracia :
ak je nastavená vlajka CF
AX = kód chyby (0x02, 0x03, 0x05, 0x11)
Poznámky :
Dovoľuje presun medzi adresármi na tom istom logickom disku. Nenastavuje
archivovací atribút, čo má pri inkrementálnom zálohovaní za následok, že súbor
nie je zálohovaný pod novým menom. Otvorené súbory sa nemôžu premenovať/premiestniť.
Príklad :
#include <stdlib.h>
#include <stdio.h>
#include <dos.h>
#include <conio.h>
void main(void)
{
union REGS regs;
struct SREGS segregs;
int i;
// oba súbory musia byť na tom istom disku
char stare[]="pokus.txt";// cesta a meno pôvodného súboru
char nove[] ="nove.txt"; // cesta a meno premenovaného/presunutého súboru
regs.h.ah = 0x56;
// adresa so starým menom súboru
segregs.ds = FP_SEG(stare);
regs.x.dx = FP_OFF(stare);
// adresa s novým menom súboru
segregs.es = FP_SEG(nove);
regs.x.di = FP_OFF(nove);
clrscr();
intdosx(®s, ®s, &segregs);
if (regs.x.cflag==0)
printf("\nSúbor \"%s\" bol úspešne premenovaný/presunutý na \"%s\"", stare, nove);
else
printf("\nSúbor \"%s\" sa nepremenoval/nepresunul, vznikla chyba č. : %d - %s", stare, regs.x.ax, sys_errlist[regs.x.ax]);
getch();
}