home *** CD-ROM | disk | FTP | other *** search
/ Education Sampler 1992 [NeXTSTEP] / Education_1992_Sampler.iso / Utilities / TarChive / TapeLabel < prev    next >
Text File  |  1992-08-19  |  2KB  |  82 lines

  1. #!/usr/local/bin/perl
  2. #Copyright 1992    Sherwood Botsford
  3.  
  4. #Structure:  Tape labels are actually a short tar file.  
  5. #    Tapes are registered in /usr/local/tapelabels. 
  6. #    The directory is world writable, 'sticky', so that only the owner can
  7. #    delete a file.  Tape labels are zero length files.
  8.  
  9. #    This file is contained in the first tar file on the tape.  
  10. #    Thus a gnutar +test can determine if the label on a tape corresponds to
  11. # the one  in the registry.
  12. # This first module creates an appropriate file in /usr/local/tapelabels
  13. # And writes the file out to tape.
  14. #
  15.  
  16. $newtape = $ARGV[0];
  17. if ($newtape eq "") {
  18.     print "\nsyntax: TapeLabel NameOfTape\n\n";
  19.     print "\tSuggest that NameOfTape include your name, and \n";
  20.     print "\tsomething of the nature of the contents of the tape.\n\n";
  21.     &Quit;
  22.     }
  23.  
  24. if ( -e "/usr/local/tapelabels/$newtape") {
  25.     print "\n\tA label of that name already exists.\n";
  26.     print "\tWe don't allow duplicate tape names. \n\n";
  27.     print "\tThe following names are currently registered:\n\n";
  28.     system "ls /usr/local/tapelabels";
  29.     print "\n";
  30.     &Quit;
  31.     }
  32. print "Will attempt to label this tape as $newtape\n";
  33.  
  34. require("TapeLibrary.perl");
  35.  
  36. #
  37. #     Attempt Read Volume label
  38. #
  39.     $tapelabel=&CheckVolumeLabel($Code);
  40.  
  41.     if ($Code == 100 ) {
  42.         print "This is already a registered tape.\n";
  43.         print "It is labeled, $tapelabel.\n";
  44.         print "You must erase it before you can relabel it. \n";
  45.         &Quit;
  46.         }
  47.     if ($Code == 102 ) {
  48.           print "The tape appears to have no label.  Proceeding. \n";
  49.         }
  50.     if ( $Code == 103 ) {
  51.           print "There appears to be data on this tape.\n";
  52.         print "See your sysadmin if you need to register it here.\n";
  53.         &Quit(103);
  54.         }
  55.     if ($Code == 104 ) {
  56.           print "Most Humble Apologies, but you do not own this tape.\n";
  57.         print "You must persuade the owner to erase it himself.\n";
  58.         &Quit(104);
  59.         }
  60.  
  61. #We attempted a read.  So rewind first.
  62.  
  63. &RewindTape;
  64.  
  65. # now actually write the label on the host, and on the tape
  66. print "Registering tape on server\n";
  67. system ("touch /usr/local/tapelabels/$newtape");
  68. print "Writing label on tape\n";
  69. system("gnutar -c -b16 -C /usr/local/tapelabels $newtape");
  70. if ($? != 0 ) {
  71.     print "Error on writing tape.  Cleaning up and exiting\n";
  72.     system "rm /usr/local/tapelabels/$newtape ";
  73.     &Quit;
  74.     }
  75. print "Tape has been labeled and registered as $newtape\n";
  76.  
  77. sub Quit {
  78. exit;
  79. }
  80. #
  81.