-$Id: CHANGES,v 1.122 2001/07/18 12:54:06 stelian Exp $
+$Id: CHANGES,v 1.123 2001/07/18 13:12:33 stelian Exp $
 
 Changes between versions 0.4b22 and 0.4b23 (released ????????????)
 ==================================================================
        tape changers for example. See the restore man page for the
        script parameters and return codes.
 
+9.     Small fix for the QFA routines provided by Uwe Gohlke 
+       <uwe@ugsoft.de>, and some recommendations for QFA uses in
+       the man pages.
+
 Changes between versions 0.4b21 and 0.4b22 (released May 12, 2001)
 ==================================================================
 
 
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\"    $Id: dump.8.in,v 1.28 2001/07/18 12:54:06 stelian Exp $
+.\"    $Id: dump.8.in,v 1.29 2001/07/18 13:12:33 stelian Exp $
 .\"
 .Dd __DATE__
 .Dt DUMP 8
 to directly position the tape at the file restore is currently working
 on.  This saves hours when restoring single files from large backups,
 saves the tapes and the drive's head.
+.Pp
+It is recommended to set up the st driver to return logical tape 
+positions rather than physical before calling dump/restore with 
+parameter Q.  Since not all tape devices support physical tape 
+positions those tape devices return an error during dump/restore when
+the st driver is set to the default physical setting.
+Please see the st man page, option MTSETDRVBUFFER, or the mt man
+page, on how to set the driver to return logical tape positions.
+.Pp
+Before calling restore with parameter Q, always make sure the st
+driver is set to return the same type of tape position used during the 
+call to dump. Otherwise restore may be confused.
 .It Fl s Ar feet
 Attempt to calculate the amount of tape needed at a particular density.
 If this amount is exceeded,
 
  *     Stelian Pop <pop@noos.fr>, 1999-2000
  *     Stelian Pop <pop@noos.fr> - AlcĂ´ve <www.alcove.fr>, 2000
  *
- *     $Id: dump.h,v 1.25 2001/07/18 09:50:48 stelian Exp $
+ *     $Id: dump.h,v 1.26 2001/07/18 13:12:33 stelian Exp $
  */
 
 /*-
 int    gTapeposfd;
 char   *gTapeposfile;
 char   gTps[255];
+int32_t        gThisDumpDate;
 int    GetTapePos __P((long *pos));
 #endif /* USE_QFA */
 
 
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: main.c,v 1.51 2001/07/18 09:50:48 stelian Exp $";
+       "$Id: main.c,v 1.52 2001/07/18 13:12:33 stelian Exp $";
 #endif /* not lint */
 
 #include <config.h>
 
                msg("Date of this level %c dump: %s", level,
                    ctime4(&spcl.c_date));
+#ifdef USE_QFA
+               gThisDumpDate = spcl.c_date;
+#endif
                if (spcl.c_ddate)
                        msg("Date of last level %c dump: %s", lastlevel,
                            ctime4(&spcl.c_ddate));
 
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: tape.c,v 1.50 2001/07/18 12:54:06 stelian Exp $";
+       "$Id: tape.c,v 1.51 2001/07/18 13:12:33 stelian Exp $";
 #endif /* not lint */
 
 #include <config.h>
                        uspclptr = (union u_spcl *)&slp->tblock[0];
                        spclptr = &uspclptr->s_spcl;
                        if ((spclptr->c_magic == NFS_MAGIC) && 
-                           (spclptr->c_type == TS_INODE)) {
+                           (spclptr->c_type == TS_INODE) &&
+                           (spclptr->c_date == gThisDumpDate)) {
                                /* if an error occured previously don't
                                 * try again */
                                if (gtperr == 0) {
 
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: main.c,v 1.25 2001/07/18 12:54:06 stelian Exp $";
+       "$Id: main.c,v 1.26 2001/07/18 13:12:33 stelian Exp $";
 #endif /* not lint */
 
 #include <config.h>
 
        (void)fprintf(stderr,
          "usage:\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n",
-         __progname, " -C [-c" kerbflag "Mvy] [-b blocksize] [-D filesystem] [-f file] [-F script ] [-s fileno]",
+         __progname, " -C [-c" kerbflag "Mvy] [-b blocksize] [-D filesystem] [-f file] [-F script] [-s fileno]",
          __progname, " -i [-ch" kerbflag "mMuvy] [-b blocksize] [-f file] [-F script] " qfaflag "[-s fileno]",
          __progname, " -r [-c" kerbflag "Muvy] [-b blocksize] [-f file] [-F script] [-s fileno] [-T directory]",
          __progname, " -R [-c" kerbflag "Muvy] [-b blocksize] [-f file] [-F script] [-s fileno] [-T directory]",
 
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\"    $Id: restore.8.in,v 1.15 2001/07/18 12:54:06 stelian Exp $
+.\"    $Id: restore.8.in,v 1.16 2001/07/18 13:12:33 stelian Exp $
 .\"
 .Dd __DATE__
 .Dt RESTORE 8
 .Ar file
 in order to read tape position as stored using the dump Quick File
 Access mode.
+.Pp
+It is recommended to set up the st driver to return logical tape 
+positions rather than physical before calling dump/restore with 
+parameter Q.  Since not all tape devices support physical tape 
+positions those tape devices return an error during dump/restore when
+the st driver is set to the default physical setting.
+Please see the st man page, option MTSETDRVBUFFER, or the mt man
+page, on how to set the driver to return logical tape positions.
+.Pp
+Before calling restore with parameter Q, always make sure the st
+driver is set to return the same type of tape position used during the 
+call to dump. Otherwise restore may be confused.
 .It Fl s Ar fileno
 Read from the specified
 .Ar fileno