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


<= =>