ack/plat/cpm/libsys/close.c

33 lines
640 B
C

#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <cpm.h>
#include "cpmsys.h"
int close(int fd)
{
struct FCBE* fcbe = &__fd[fd];
int result = 0;
uint8_t olduser;
__init_file_descriptors();
if (fcbe->fcb.f[0])
{
/* There's an actual filename here, so assume it's an open file. */
olduser = cpm_get_user();
cpm_set_user(fcbe->user);
if (cpm_close_file(&fcbe->fcb) == 0xff)
{
errno = EIO;
result = -1;
}
cpm_set_user(olduser);
}
memset(fcbe, 0, sizeof(struct FCBE));
return result;
}