54 lines
1.2 KiB
C
54 lines
1.2 KiB
C
/****************************************************************
|
|
* *
|
|
* Copyright 2001, 2007 Fidelity Information Services, Inc *
|
|
* *
|
|
* This source code contains the intellectual property *
|
|
* of its copyright holder(s), and is made available *
|
|
* under a license. If you do not know the terms of *
|
|
* the license, please stop and do not read further. *
|
|
* *
|
|
****************************************************************/
|
|
|
|
/* iomt_wtlblk.c - UNIX (low-level) Write block to tape */
|
|
#include "mdef.h"
|
|
|
|
#include <errno.h>
|
|
#include "gtm_stdio.h"
|
|
#include "gtm_unistd.h"
|
|
|
|
#include "io.h"
|
|
#include "iosp.h"
|
|
#include "iottdef.h"
|
|
#include "iomtdef.h"
|
|
#include "gtmio.h"
|
|
|
|
uint4 iomt_wtlblk (uint4 channel, uint4 mask, iosb *stat_blk, void *buff, int size)
|
|
{
|
|
int4 status;
|
|
|
|
#ifdef DP
|
|
FPRINTF(stderr, "-> Writing %d bytes.\n", size);
|
|
#endif
|
|
DOWRITERC(channel, buff, size, status);
|
|
if (0 != status)
|
|
{
|
|
#ifdef DP
|
|
PERROR("iomt_wtlblk");
|
|
#endif
|
|
if (ENXIO == status)
|
|
{
|
|
stat_blk->status = SS_ENDOFTAPE;
|
|
status = SS_ENDOFTAPE;
|
|
} else
|
|
{
|
|
stat_blk->status = MT_TAPERROR;
|
|
status = MT_TAPERROR;
|
|
}
|
|
} else
|
|
{
|
|
stat_blk->status = SS_NORMAL;
|
|
status = SS_NORMAL;
|
|
}
|
|
return (uint4)status;
|
|
}
|