Trailing-Edge
-
PDP-10 Archives
-
SRI_NIC_PERM_FS_1_19910112
-
c/lib/usys/unlink.c
There are 8 other files named unlink.c in the archive. Click here to see a list.
/*
** UNLINK - remove link to (delete) file
**
** (c) Copyright Ken Harrenstien 1989
** for all changes after v.27, 5-Jul-1987
**
** Original version by David Eppstein / Stanford University / 9-Aug-84
** TENEX/ITS additions by Ken Harrenstien, SRI 1-Jun-85
*/
#include <c-env.h>
#if SYS_T20+SYS_10X+SYS_T10+SYS_CSI+SYS_WTS+SYS_ITS /* Systems supported for */
#include <sys/file.h>
#include <sys/usysig.h>
#include <errno.h>
#if SYS_T20+SYS_10X
#include <jsys.h>
extern int _gtjfn();
#elif SYS_T10+SYS_CSI+SYS_WTS
#include <muuo.h>
#include <sys/usysio.h>
extern int _fparse(), _frename();
#elif SYS_ITS
#include <syscal.h>
#endif
int
unlink(file)
char *file;
{
#if SYS_T20+SYS_10X
int jfn, ablock[5];
USYS_BEG();
jfn = _gtjfn(file, O_RDONLY); /* get a handle on the file */
if (jfn == 0)
USYS_RETERR(ENOENT); /* no such file, fail */
ablock[1] = jfn
#if SYS_T20
+ DF_EXP
#endif
;
if (jsys(DELF, ablock) <= 0) /* return 0 on success, -1 failure */
USYS_RETERR(EACCES); /* Later should do better than this! */
USYS_RET(0);
#elif SYS_ITS
USYS_BEG();
if (SYSCALL1("delete", file-1))
USYS_RETERR(ENOENT);
USYS_RET(0);
#elif SYS_T10+SYS_CSI+SYS_WTS
int err;
struct _filespec fs, fsdel;
USYS_BEG();
if (err = _fparse(&fs, file)) /* Parse the filename string */
USYS_RETERR(err); /* Oops */
fsdel = fs; /* Won, set up rename-to filespec */
fsdel.fs_nam = 0; /* Forcing a delete */
if (err = _frename(&fs, &fsdel)) /* Do the "rename"! */
USYS_RETERR(err);
USYS_RET(0); /* Success */
#else
return -1;
#endif
}
#endif /* T20+10X+T10+CSI+WTS+ITS */