mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 16:34:07 +00:00
62 lines
2.4 KiB
C
62 lines
2.4 KiB
C
/***************************************************************************
|
|
*
|
|
* r e n a m e F u n c t i o n
|
|
* -----------------------------
|
|
* Copyright 1983 by Digital Research Inc. All rights reserved.
|
|
*
|
|
* 'rename()' changes a file's name.
|
|
*
|
|
* Calling sequence:
|
|
* ret = rename(from,to)
|
|
*
|
|
* Where:
|
|
* from -> a NULL terminated (existing) file name
|
|
* to -> the NULL terminated new file name
|
|
* ret = SUCCESS if everything ok, FAILURE o.w.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#include "portab.h"
|
|
#include "osif.h"
|
|
#include "osiferr.h"
|
|
#include "errno.h"
|
|
|
|
WORD rename(from,to) /* CLEAR FUNCTION ***********/
|
|
BYTE *from; /* Existing file name */
|
|
BYTE *to; /* New file name */
|
|
{
|
|
BYTE fcbbuf[32+16]; /* Extra large fcb */
|
|
REG struct fcbtab *fcbp; /* FCB pointer */
|
|
REG WORD nuser; /* new user # */
|
|
REG WORD xuser; /* system user # */
|
|
WORD rv; /* Return value */
|
|
|
|
fcbp = fcbbuf; /* Point fcb to start */
|
|
if( FAILURE == _parsefn(from,fcbp)) /* Parse 'from' into fcb */
|
|
RETERR(FAILURE,EINVAL); /* Bad filename */
|
|
#if CPM /*--------------------------*/
|
|
nuser = fcbp->fuser; /* Save specified User # */
|
|
#endif /*--------------------------*/
|
|
fcbp = &(fcbbuf[16]); /* F_RENAME needs it */
|
|
if( FAILURE == _parsefn(to,fcbp)) /* Parse 'to' to fcb[16] */
|
|
RETERR(FAILURE,EINVAL); /* Bad filename */
|
|
#if CPM /*--------------------------*/
|
|
if( fcbp->fuser ) /* user # specified? */
|
|
{ /* */
|
|
if(nuser && nuser!=fcbp->fuser) /* Differing User #s? */
|
|
RETERR(FAILURE,EINVAL); /* that's a no-no */
|
|
nuser = fcbp->fuser; /* Use this user # */
|
|
} /**** */
|
|
xuser = _chkuser(nuser); /* Change user # if needed */
|
|
#endif /*--------------------------*/
|
|
/****************************/
|
|
rv = __OSIF(F_RENAME,fcbbuf); /* Use special fcb */
|
|
/****************************/
|
|
#if CPM /*--------------------------*/
|
|
_uchkuser(nuser,xuser); /* Change back if needed */
|
|
#endif /*--------------------------*/
|
|
if( rv != 0 ) /* Did it work? */
|
|
RETERR(FAILURE,ERENAME); /* no... */
|
|
return SUCCESS; /* It worked! */
|
|
} /****************************/
|