Copyright Digital Equipment Corp. All rights reserved.

Example

   /*
    *   Example mrd_eject(3mrd).
    *
    *   This example is slightly different from the others since it
    *   also demonstrates the Eject Port feature of mrd_eject(3mrd).
    *   This feature can be used on the TL820 family to move a tape
    *   from the Pass-through mechanism (PTM) to the outport.
    *
    *   The command usage is:
    *
    *      mrd_eject robot [ slot port [ volume_tag ] ]
    */
   #ifndef   lint
   static   char   SccsId[] = "@(#)mrd_eject.c   1.2 3/5/97" ;
   #endif

   #include <stdio.h>
   #include <stdlib.h>
   #include <mrd_common.h>
   #include <mrd_message.h>

   main(int argc, char *argv[])
   {
      int   status ;      /* Status from mrd_eject(3mrd) */
      char   *robot ;      /* Name of the robot to use */
      char   *volume_tag = NULL ;   /* Volume tag to check */
      char   *slot ;         /* Source slot */
      char   *port ;         /* Destination port */
      char   log_info[MRD_MAX_LOG_STRING+1] ;   /* Error text */

      /*
       *   Allow the command to only have the robot name specified.
       */
      if( argc < 2 ) {
         printf("usage: %s robot [ slot port [ volume_tag ] ]\n",
            argv[0]) ;

         exit(1) ;
      }
      else
         robot = argv[1] ;

      /*
       *   If the slot and port aren't specified assume that
       *   the target robot is a TL820 and fill in default
       *   values for an Eject Port.  Otherwise take the
       *   desired values directly from the command line.
       */
      if( argc >= 4 ) {
         slot = argv[2] ;
         port = argv[3] ;

         /*
          *   Collect the volume_tag name if the user wants it.
          */
         if( argc > 4 )
            volume_tag = argv[4] ;
      }
      /*
       *   We also observe that this case catches the command:
       *
       *      mrd_eject robot_name address
       *
       *   It can't hurt to let the user specify the outport,
       *   since an invalid one simply won't work.  In this case
       *   the 3rd argument is the port name instead of the slot
       *   name.
       *
       *   The user could get the same affect by using a quoted
       *   empty string for the slot argument on the command line:
       *
       *      robot /dev/mc54 "" 1
       */
      else {
         if( argc == 3 )
            port = argv[2] ;
         else
            port = "1" ;

         slot = "" ;
      }

      /*
       *   Do the operation.
       */
      status = mrd_eject(robot, volume_tag, slot, port, log_info) ;

      if( status == MRD_STATUS_SUCCESS )
         printf("Ejected the media in slot #%d to port #%d.\n",
            slot, port) ;
      else
         printf("Eject failed: %s: %s.\n", mrd_strstatus(status),
            log_info[0] ? log_info : "none") ;

      return 0 ;
   }