]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix ACLS on zero length files on Windows.
authorRobert Nelson <robertn@the-nelsons.org>
Thu, 15 Mar 2007 10:31:52 +0000 (10:31 +0000)
committerRobert Nelson <robertn@the-nelsons.org>
Thu, 15 Mar 2007 10:31:52 +0000 (10:31 +0000)
Add ENODATA definition for building using MSVC.

Add new bsock.c to MSVC build.

Fix exports for MSVC.

Fix problem with icons not being removed for task bar on exit.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@4345 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/filed/backup.c
bacula/src/win32/compat/compat.h
bacula/src/win32/libbac/libbac.vcproj
bacula/src/win32/libbac/msvc/bacula.def
bacula/src/win32/libwin32/wintray.cpp
bacula/src/win32/stored/baculasd/wintray.cpp

index 4af0603576fabe9c5593b2976f06a8028c62119c..a4b9d74d4b29a83817c31e1a6dea5c7b7e94638e 100644 (file)
@@ -406,10 +406,20 @@ static int save_file(FF_PKT *ff_pkt, void *vjcr, bool top_level)
     * Note, if is_win32_backup, we must open the Directory so that
     * the BackupRead will save its permissions and ownership streams.
     */
-   if (ff_pkt->type != FT_LNKSAVED && (S_ISREG(ff_pkt->statp.st_mode) &&
-         ff_pkt->statp.st_size > 0) ||
-         ff_pkt->type == FT_RAW || ff_pkt->type == FT_FIFO ||
+   bool do_read = false;
+
+   if (ff_pkt->type != FT_LNKSAVED && S_ISREG(ff_pkt->statp.st_mode)) {
+#ifdef HAVE_WIN32
+      do_read = !is_portable_backup(&ff_pkt->bfd) || ff_pkt->statp.st_size > 0;
+#else
+      do_read = ff_pkt->statp.st_size > 0;
+#endif
+   } else if (ff_pkt->type == FT_RAW || ff_pkt->type == FT_FIFO ||
          (!is_portable_backup(&ff_pkt->bfd) && ff_pkt->type == FT_DIREND)) {
+      do_read = true;
+   }
+
+   if (do_read) {
       btimer_t *tid;
       if (ff_pkt->type == FT_FIFO) {
          tid = start_thread_timer(pthread_self(), 60);
index 890e8634286733966730baa9995d495cfef16c82..0e25586b213c5679b7ba064f0c49d4d5406ad536 100644 (file)
@@ -147,6 +147,10 @@ int gettimeofday(struct timeval *, struct timezone *);
 #define ENOMEDIUM 123
 #endif
 
+#if !defined(ENODATA)
+#define ENODATA 61
+#endif
+
 struct stat
 {
     _dev_t      st_dev;
index 7e7ebc353fa65071c89a9508f79b555cc671815a..d8e1c6c8c12f38ebeecf8e1e880f6212c6b34d32 100644 (file)
                                        />\r
                                </FileConfiguration>\r
                        </File>\r
+                       <File\r
+                               RelativePath="..\..\lib\bsock.c"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               CompileAs="2"\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
                        <File\r
                                RelativePath="..\..\lib\bsys.c"\r
                                >\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\lib\protos.h"\r
+                               RelativePath="..\..\findlib\protos.h"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\findlib\protos.h"\r
+                               RelativePath="..\..\lib\protos.h"\r
                                >\r
                        </File>\r
                        <File\r
index 5dd7f30f2eda8179b08816c1587d959f12d6214e..8bb1fb34de83cbeff2febfecd11bd0eb84bb8f09 100644 (file)
@@ -63,50 +63,57 @@ EXPORTS
 ?blseek@@YA_JPAUBFILE@@_JH@Z\r
  \r
 ; bget_msg.obj \r
-?bget_msg@@YAHPAUBSOCK@@@Z\r
+?bget_msg@@YAHPAVBSOCK@@@Z\r
  \r
 ; bnet.obj \r
-?bnet_recv@@YAJPAUBSOCK@@@Z\r
-?is_bnet_stop@@YA_NPAUBSOCK@@@Z\r
-?is_bnet_error@@YAHPAUBSOCK@@@Z\r
-?bnet_suppress_error_messages@@YAXPAUBSOCK@@_N@Z\r
-?bnet_despool_to_bsock@@YAHPAUBSOCK@@P6AXH@ZH@Z\r
-?bnet_send@@YA_NPAUBSOCK@@@Z\r
-?bnet_tls_server@@YA_NPAUTLS_Context@@PAUBSOCK@@PAValist@@@Z\r
-?bnet_tls_client@@YA_NPAUTLS_Context@@PAUBSOCK@@@Z\r
-?bnet_wait_data@@YAHPAUBSOCK@@H@Z\r
-?bnet_wait_data_intr@@YAHPAUBSOCK@@H@Z\r
-?bnet_connect@@YAPAUBSOCK@@PAVJCR@@HHPBDPAD2HH@Z\r
-?bnet_strerror@@YAPBDPAUBSOCK@@@Z\r
-?bnet_fsend@@YA_NPAUBSOCK@@PBDZZ\r
-?bnet_get_peer@@YAHPAUBSOCK@@PADH@Z\r
-?bnet_set_buffer_size@@YA_NPAUBSOCK@@IH@Z\r
-?bnet_sig@@YA_NPAUBSOCK@@H@Z\r
-?bnet_sig_to_ascii@@YAPBDPAUBSOCK@@@Z\r
-?init_bsock@@YAPAUBSOCK@@PAVJCR@@HPBD1HPAUsockaddr@@@Z\r
-?dup_bsock@@YAPAUBSOCK@@PAU1@@Z\r
-?bnet_close@@YAXPAUBSOCK@@@Z\r
-?term_bsock@@YAXPAUBSOCK@@@Z\r
\r
-; bnet_server.obj \r
+?bnet_recv@@YAJPAVBSOCK@@@Z\r
+?is_bnet_stop@@YA_NPAVBSOCK@@@Z\r
+?is_bnet_error@@YAHPAVBSOCK@@@Z\r
+?bnet_suppress_error_messages@@YAXPAVBSOCK@@_N@Z\r
+?bnet_despool_to_bsock@@YAHPAVBSOCK@@P6AXH@ZH@Z\r
+?bnet_send@@YA_NPAVBSOCK@@@Z\r
+?bnet_tls_server@@YA_NPAUTLS_Context@@PAVBSOCK@@PAValist@@@Z\r
+?bnet_tls_client@@YA_NPAUTLS_Context@@PAVBSOCK@@@Z\r
+?bnet_wait_data@@YAHPAVBSOCK@@H@Z\r
+?bnet_wait_data_intr@@YAHPAVBSOCK@@H@Z\r
+?bnet_connect@@YAPAVBSOCK@@PAVJCR@@HHPBDPAD2HH@Z\r
+?bnet_strerror@@YAPBDPAVBSOCK@@@Z\r
+?bnet_fsend@@YA_NPAVBSOCK@@PBDZZ\r
+?bnet_get_peer@@YAHPAVBSOCK@@PADH@Z\r
+?bnet_set_buffer_size@@YA_NPAVBSOCK@@IH@Z\r
+?bnet_sig@@YA_NPAVBSOCK@@H@Z\r
+?bnet_sig_to_ascii@@YAPBDPAVBSOCK@@@Z\r
+?bnet_close@@YAXPAVBSOCK@@@Z\r
+?term_bsock@@YAXPAVBSOCK@@@Z\r
+\r
+; bnet_server.obj\r
 ?bnet_stop_thread_server@@YAXPAUpthread_t_@@@Z\r
 ?bnet_thread_server@@YAXPAVdlist@@HPAUworkq_tag@@P6APAXPAX@Z@Z\r
\r
-; bpipe.obj \r
+\r
+; bpipe.obj\r
 ?run_program@@YAHPADH0@Z\r
 ?run_program_full_output@@YAHPADH0@Z\r
\r
-; bregex.obj \r
+\r
+; bregex.obj\r
 b_regcomp\r
 b_regexec\r
 b_regerror\r
 b_regfree\r
 \r
-; bsnprintf.obj \r
+; bsnprintf.obj\r
 ?bsnprintf@@YAHPADJPBDZZ\r
 ?bvsnprintf@@YAHPADJPBD0@Z\r
\r
-; bsys.obj \r
+\r
+; bsock.obj\r
+?close@BSOCK@@QAEXXZ\r
+?dup_bsock@@YAPAVBSOCK@@PAV1@@Z\r
+?fsend@BSOCK@@QAA_NPBDZZ\r
+?init_bsock@@YAPAVBSOCK@@PAVJCR@@HPBD1HPAUsockaddr@@@Z\r
+?recv@BSOCK@@QAEJXZ\r
+?send@BSOCK@@QAE_NXZ\r
+?signal@BSOCK@@QAE_NH@Z\r
+\r
+; bsys.obj\r
 ?bmicrosleep@@YAHJJ@Z\r
 ?bstrncpy@@YAPADPADPBDH@Z\r
 ?bstrncpy@@YAPADPADAAVPOOL_MEM@@H@Z\r
@@ -141,7 +148,7 @@ b_regfree
  \r
 ; btimers.obj \r
 ?start_thread_timer@@YAPAUs_btimer_t@@PAUpthread_t_@@I@Z\r
-?start_bsock_timer@@YAPAUs_btimer_t@@PAUBSOCK@@I@Z\r
+?start_bsock_timer@@YAPAUs_btimer_t@@PAVBSOCK@@I@Z\r
 ?stop_bsock_timer@@YAXPAUs_btimer_t@@@Z\r
 ?stop_thread_timer@@YAXPAUs_btimer_t@@@Z\r
  \r
@@ -173,8 +180,8 @@ b_regfree
 ?utime@@YAHPBDPAUutimbuf@@@Z\r
  \r
 ; cram-md5.obj \r
-?cram_md5_challenge@@YA_NPAUBSOCK@@PADHH@Z\r
-?cram_md5_respond@@YA_NPAUBSOCK@@PADPAH2@Z\r
+?cram_md5_challenge@@YA_NPAVBSOCK@@PADHH@Z\r
+?cram_md5_respond@@YA_NPAVBSOCK@@PADPAH2@Z\r
  \r
 ; crc32.obj \r
 ?bcrc32@@YAIPAEH@Z\r
@@ -228,13 +235,14 @@ b_regfree
 ?binary_insert_multiple@dlist@@QAEXPAXP6AH00@Z@Z\r
 ?binary_search@dlist@@QAEPAXPAXP6AH00@Z@Z\r
 ?remove@dlist@@QAEXPAX@Z\r
-?next@dlist@@QBEPAXPBX@Z\r
+?next@dlist@@QAEPAXPAX@Z\r
 ?destroy@dlist@@QAEXXZ\r
\r
-; drivetype.obj \r
+?new_dlistString@@YAPAVdlistString@@PBD@Z\r
+\r
+; drivetype.obj\r
 ?drivetype@@YA_NPBDPADH@Z\r
\r
-; edit.obj \r
+\r
+; edit.obj\r
 ?str_to_uint64@@YA_KPAD@Z\r
 ?str_to_int64@@YA_JPAD@Z\r
 ?edit_uint64_with_commas@@YAPAD_KPAD@Z\r
index 71111206581fadf3c096c0a36ebc0d44ee95b168..ca70e5164f5d2416cb5ab3f53022e6e5ea2dfb26 100644 (file)
@@ -113,7 +113,7 @@ bacMenu::bacMenu()
 bacMenu::~bacMenu()
 {
    // Remove the tray icon
-   SendTrayMsg(NIM_DELETE, 0);
+   DelTrayIcon();
         
    // Destroy the loaded menu
    if (m_hmenu != NULL)
@@ -136,7 +136,7 @@ bacMenu::DelTrayIcon()
 void
 bacMenu::UpdateTrayIcon(int bacstat)
 {
-   (void *)bac_status(NULL, 0);
+   (void)bac_status(NULL, 0);
    SendTrayMsg(NIM_MODIFY, bacstat);
 }
 
@@ -215,7 +215,6 @@ LRESULT CALLBACK bacMenu::WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lP
 
    // Every five seconds, a timer message causes the icon to update
    case WM_TIMER:
-      // *** HACK for running servicified
       if (bacService::RunningAsService()) {
           // Attempt to add the icon if it's not already there
           _this->AddTrayIcon();
@@ -297,6 +296,9 @@ LRESULT CALLBACK bacMenu::WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lP
       }
 
    case WM_CLOSE:
+      if (bacService::RunningAsService()) {
+          _this->DelTrayIcon();
+      }
       terminate_filed(0);
       break;
 
index f755d17eb1f3e88c24fec4015dd8c15bd8d422a5..b9612cd442c966c14c3b8899beca063cdd4e27b5 100644 (file)
@@ -113,7 +113,7 @@ bacMenu::bacMenu()
 bacMenu::~bacMenu()
 {
    // Remove the tray icon
-   SendTrayMsg(NIM_DELETE, 0);
+   DelTrayIcon();
         
    // Destroy the loaded menu
    if (m_hmenu != NULL)
@@ -136,7 +136,7 @@ bacMenu::DelTrayIcon()
 void
 bacMenu::UpdateTrayIcon(int bacstat)
 {
-   (void *)bac_status(NULL, 0);
+   (void)bac_status(NULL, 0);
    SendTrayMsg(NIM_MODIFY, bacstat);
 }
 
@@ -215,7 +215,6 @@ LRESULT CALLBACK bacMenu::WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lP
 
    // Every five seconds, a timer message causes the icon to update
    case WM_TIMER:
-      // *** HACK for running servicified
       if (bacService::RunningAsService()) {
           // Attempt to add the icon if it's not already there
           _this->AddTrayIcon();
@@ -297,6 +296,9 @@ LRESULT CALLBACK bacMenu::WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lP
       }
 
    case WM_CLOSE:
+      if (bacService::RunningAsService()) {
+         _this->DelTrayIcon();
+      }
       terminate_stored(0);
       break;