]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix mtx-changer.in for broken Debian mt program.
authorKern Sibbald <kern@sibbald.com>
Thu, 20 Mar 2008 08:33:20 +0000 (08:33 +0000)
committerKern Sibbald <kern@sibbald.com>
Thu, 20 Mar 2008 08:33:20 +0000 (08:33 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@6643 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/scripts/mtx-changer.in
bacula/src/win32/compat/compat.cpp
bacula/technotes-2.3

index 60630a5531e8aeb8dba60eca7cb40a88736c39b4..67a7d5daafbe605b9bbf64654508477a28dbb875 100644 (file)
@@ -52,19 +52,25 @@ MTX=@MTX@
 # SunOS     No Additional Sense
 # FreeBSD   Current Driver State: at rest.
 # Linux     ONLINE
+#  Note Debian has messed up their mt. When no tape is in the
+#    drive it waits 2 minutes. When a tape is in the drive, it
+#    prints user unfriendly output.
+#
 
 OS=`uname`
 case ${OS} in
   SunOS)
     ready="No Additional Sense"
-    # Sun sed/awk etc are not sufficient, working versions are in /usr/xpg4/bin
-    export PATH="/usr/local/sbin:/usr/local/bin:/usr/sfw/bin:/usr/xpg4/bin:/usr/bin"
     ;;
   FreeBSD)
     ready="Current Driver State: at rest."
     ;;
-  *)
-    ready="ONLINE"
+  Linux)
+    if test -e /etc/debian_version ; then
+       ready="drive status"
+    else
+       ready="ONLINE"
+    fi
   ;;
 esac
 
index 6bee4d1412c2ea79d8894ee2998497945bd6b144..a3af259e968118acd09836a184db7648b9bd5d8e 100644 (file)
@@ -624,12 +624,13 @@ statDir(const char *file, struct stat *sb)
    WIN32_FIND_DATAA info_a;       // window's file info
 
    // cache some common vars to make code more transparent
-   DWORD* pdwFileAttributes;
-   DWORD* pnFileSizeHigh;
-   DWORD* pnFileSizeLow;
-   FILETIME* pftLastAccessTime;
-   FILETIME* pftLastWriteTime;
-   FILETIME* pftCreationTime;
+   DWORD *pdwFileAttributes;
+   DWORD *pnFileSizeHigh;
+   DWORD *pnFileSizeLow;
+   DWORD *pdwReserved0;
+   FILETIME *pftLastAccessTime;
+   FILETIME *pftLastWriteTime;
+   FILETIME *pftCreationTime;
 
    if (file[1] == ':' && file[2] == 0) {
         Dmsg1(99, "faking ROOT attrs(%s).\n", file);
@@ -652,6 +653,7 @@ statDir(const char *file, struct stat *sb)
       free_pool_memory(pwszBuf);
 
       pdwFileAttributes = &info_w.dwFileAttributes;
+      pdwReserved0      = &info_w.dwReserved0;
       pnFileSizeHigh    = &info_w.nFileSizeHigh;
       pnFileSizeLow     = &info_w.nFileSizeLow;
       pftLastAccessTime = &info_w.ftLastAccessTime;
@@ -663,6 +665,7 @@ statDir(const char *file, struct stat *sb)
       h = p_FindFirstFileA(file, &info_a);
 
       pdwFileAttributes = &info_a.dwFileAttributes;
+      pdwReserved0      = &info_a.dwReserved0;
       pnFileSizeHigh    = &info_a.nFileSizeHigh;
       pnFileSizeLow     = &info_a.nFileSizeLow;
       pftLastAccessTime = &info_a.ftLastAccessTime;
@@ -689,7 +692,9 @@ statDir(const char *file, struct stat *sb)
 
    /* Use st_rdev to store reparse attribute */
    sb->st_rdev = (*pdwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) ? 1 : 0; 
-
+   if (sb->st_rdev == 1 && *pdwReserved0 & IO_REPARSE_TAG_MOUNT_POINT) {
+      sb->st_rdev = 2;                /* mount point */
+   }
 
    sb->st_size = *pnFileSizeHigh;
    sb->st_size <<= 32;
@@ -780,10 +785,6 @@ stat2(const char *file, struct stat *sb)
       return -1;
    }
 
-   if (attr & FILE_ATTRIBUTE_DIRECTORY) {
-      return statDir(tmpbuf, sb);
-   }
-
    h = CreateFileA(tmpbuf, GENERIC_READ,
                   FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
 
@@ -798,6 +799,10 @@ stat2(const char *file, struct stat *sb)
    rval = fstat((int)h, sb);
    CloseHandle(h);
 
+   if (attr & FILE_ATTRIBUTE_DIRECTORY) {
+      return statDir(tmpbuf, sb);
+   }
+
    return rval;
 }
 
@@ -864,6 +869,9 @@ stat(const char *file, struct stat *sb)
    sb->st_atime = cvt_ftime_to_utime(data.ftLastAccessTime);
    sb->st_mtime = cvt_ftime_to_utime(data.ftLastWriteTime);
    sb->st_ctime = cvt_ftime_to_utime(data.ftCreationTime);
+   if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
+      return statDir(file, sb);
+   }
    return 0;
 }
 
index 19140e3a15c54547e328e57bca2c909f617dd735..2500be4d73a591f62a3336434f5d253be039bb79 100644 (file)
@@ -1,6 +1,28 @@
               Technical notes on version 2.3
 
+New features (buried):
+TLS authentication 
+bextract Win32 data
+Run afterVSS
+Multiple command/console per runscript
+console command
+Bat API
+Plugin API
+State file updated on job term
+PluginOptions
+FD Version
+Duplicate Job directives
+MaxFullInterval
+MaxDiffInterval
+Honor nodump flag
+Improved status commands for Bat
+Spooling/despooling status
+Implement ftruncate for NFS devices
+
+
 General:
+20Mar08
+kes  Fix mtx-changer.in for broken Debian mt program.
 19Mar08
 kes  Fix large number of JobMedia records reported by Eric Bollengier.
 18Mar08