This example applies to the OpenVMS operating system.
/*
* Example of mrd_unload(3mrd). The command usage is:
*
* mrd_unload robot_name drive slot [ volume_tag ]
*
* This version is VMS specific since it excludes the example
* for taking a tape drive offline. That is moderately complicated
* but something that should be in the VMS documentation.
*/
#ifndef lint
static char SccsId[] = "@(#)mrd_unload.c 1.2A (mrd-example) 3/5/97" ;
#endif
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <mrd_common.h>
#include <mrd_message.h>
main(int argc, char *argv[])
{
int status ; /* Status from mrd_load(3mrd) */
char *robot ; /* The name of the robot */
char *cart = NULL ; /* Optional volume tag to check */
char *slot ; /* Source slot */
char *drive ; /* Destination drive */
char log_info[MRD_MAX_LOG_STRING+1] ; /* error string */
/*
* Accept three required argument; robot, port and slot. The
* volume tag and tape drive name are optional.
*/
if( argc < 4 ) {
printf("usage: %s robot slot drive [ volume-tag ]\n",
argv[0]) ;
exit(1) ;
}
/*
* Just use these directly from the command line.
*/
robot = argv[1] ;
slot = argv[2] ;
drive = argv[3] ;
/*
* If there is an extra argument present, assume it is
* a cartridge name. The habit of the DECC runtime
* start-up mapping all characters to lower case,
* might require special handling of the cartridge
* name.
*/
if( argc > 4 )
cart = argv[4] ;
/*
* Call the function.
*/
status = mrd_unload(robot, cart, slot, drive, log_info) ;
/*
* Print an error message if there is a failure. The
* routine mrd_strstatus(3mrd) will accept an MRD
* error status and return the corresponding string.
* If the log_info data has something other than a
* NUL as the first character print it as well. It
* typically be the SCSI sense data or a operating
* system specific message for the error.
*/
if( status != MRD_STATUS_SUCCESS )
printf("Load failed: %s: %s.\n", mrd_strstatus(status),
log_info[0] ? log_info : "none") ;
else
printf("Unloaded media from Drive #%s to Slot #%s.\n",
drive, slot) ;
return 0 ;
}