]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/filed/status.c
Start adding back removed code.
[bacula/bacula] / bacula / src / filed / status.c
index 3e86e6e0c5cecdedbc50d8797c46bebc98c55e2c..829757dcefad1ea67df3ba34edf24d078cd79221 100755 (executable)
@@ -7,7 +7,7 @@
  *
  */
 /*
-   Copyright (C) 2001-2005 Kern Sibbald
+   Copyright (C) 2001-2006 Kern Sibbald
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
 #include "bacula.h"
 #include "filed.h"
 
-extern char my_name[];
-extern int num_jobs_run;
-extern time_t daemon_start_time;
-extern bool get_trace(void);
-
 /* Forward referenced functions */
 static void  list_terminated_jobs(void sendit(const char *msg, int len, void *sarg), void *arg);
 static void bsock_sendit(const char *msg, int len, void *arg);
@@ -40,7 +35,7 @@ static char qstatus[] = ".status %s\n";
 static char OKqstatus[]   = "2000 OK .status\n";
 static char DotStatusJob[] = "JobId=%d JobStatus=%c JobErrors=%d\n";
 
-#if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
+#if defined(HAVE_WIN32)
 static int privs = 0;
 #endif
 #ifdef WIN32_VSS
@@ -64,15 +59,15 @@ static void do_status(void sendit(const char *msg, int len, void *sarg), void *a
 
    msg = (char *)get_pool_memory(PM_MESSAGE);
    found = 0;
-   len = Mmsg(msg, "%s Version: " VERSION " (" BDATE ")" VSS " %s %s %s\n"
-              my_name, HOST_OS, DISTNAME, DISTVER);
+   len = Mmsg(msg, _("%s Version: %s (%s) %s %s %s %s\n")
+              my_name, VERSION, BDATE, VSS, HOST_OS, DISTNAME, DISTVER);
    sendit(msg, len, arg);
    bstrftime_nc(dt, sizeof(dt), daemon_start_time);
    len = Mmsg(msg, _("Daemon started %s, %d Job%s run since started.\n"),
         dt, num_jobs_run, num_jobs_run == 1 ? "" : "s");
    sendit(msg, len, arg);
-#if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
-   if (/*debug_level > 0*/ true) {
+#if defined(HAVE_WIN32)
+   if (debug_level > 0) {
       if (!privs) {
          privs = enable_backup_privileges(NULL, 1);
       }
@@ -88,7 +83,6 @@ static void do_status(void sendit(const char *msg, int len, void *sarg), void *a
       len = Mmsg(msg, " %sWUL,%sWMKD,%sWOP,%sGFAA,%sGFAW,%sGFAEA,%sGFAEW,%sSFAA,%sSFAW,%sBR,%sBW,%sSPSP,\n",
                  p_wunlink?"":"!",
                  p_wmkdir?"":"!",
-                 p_wopen?"":"!",
                  p_GetFileAttributesA?"":"!",
                  p_GetFileAttributesW?"":"!",
                  p_GetFileAttributesExA?"":"!",
@@ -109,25 +103,23 @@ static void do_status(void sendit(const char *msg, int len, void *sarg), void *a
                  p_SetCurrentDirectoryA?"":"!",
                  p_SetCurrentDirectoryW?"":"!");
       sendit(msg, len, arg);
-      len = Mmsg(msg, " %sGCDA,%sGCDW\n",  
+      len = Mmsg(msg, " %sGCDA,%sGCDW,%sGVPNW,%sGVNFVMPW\n",  
                  p_GetCurrentDirectoryA?"":"!",
-                 p_GetCurrentDirectoryW?"":"!");
+                 p_GetCurrentDirectoryW?"":"!",
+                 p_GetVolumePathNameW?"":"!",
+                 p_GetVolumeNameForVolumeMountPointW?"":"!");
      sendit(msg, len, arg);
    }
 #endif
-   if (debug_level > 0) {
-      len = Mmsg(msg, _(" Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"),
-            edit_uint64_with_commas(sm_bytes, b1),
-            edit_uint64_with_commas(sm_max_bytes, b2),
-            edit_uint64_with_commas(sm_buffers, b3),
-            edit_uint64_with_commas(sm_max_buffers, b4));
-      sendit(msg, len, arg);
-      len = Mmsg(msg, _(" Sizeof: off_t=%d size_t=%d debug=%d trace=%d\n"),
-            sizeof(off_t), sizeof(size_t), debug_level, get_trace());
-      sendit(msg, len, arg);
-   }
-
-   list_terminated_jobs(sendit, arg);
+   len = Mmsg(msg, _(" Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"),
+         edit_uint64_with_commas(sm_bytes, b1),
+         edit_uint64_with_commas(sm_max_bytes, b2),
+         edit_uint64_with_commas(sm_buffers, b3),
+         edit_uint64_with_commas(sm_max_buffers, b4));
+   sendit(msg, len, arg);
+   len = Mmsg(msg, _(" Sizeof: off_t=%d size_t=%d debug=%d trace=%d\n"),
+         sizeof(off_t), sizeof(size_t), debug_level, get_trace());
+   sendit(msg, len, arg);
 
    /*
     * List running jobs
@@ -154,7 +146,6 @@ static void do_status(void sendit(const char *msg, int len, void *sarg), void *a
       }
       sendit(msg, len, arg);
       if (njcr->JobId == 0) {
-         free_jcr(njcr);
          continue;
       }
       sec = time(NULL) - njcr->start_time;
@@ -171,9 +162,9 @@ static void do_status(void sendit(const char *msg, int len, void *sarg), void *a
            edit_uint64_with_commas(njcr->num_files_examined, b1));
       sendit(msg, len, arg);
       if (njcr->JobFiles > 0) {
-         P(njcr->mutex);
+         njcr->lock();
          len = Mmsg(msg, _("    Processing file: %s\n"), njcr->last_fname);
-         V(njcr->mutex);
+         njcr->unlock();
          sendit(msg, len, arg);
       }
 
@@ -186,15 +177,18 @@ static void do_status(void sendit(const char *msg, int len, void *sarg), void *a
          len = Mmsg(msg, _("    SDSocket closed.\n"));
          sendit(msg, len, arg);
       }
-      free_jcr(njcr);
    }
-   Dmsg0(1000, "Begin status jcr loop.\n");
+   endeach_jcr(njcr);
+
    if (!found) {
       len = Mmsg(msg, _("No Jobs running.\n"));
       sendit(msg, len, arg);
    }
    len = Mmsg(msg, _("====\n"));
    sendit(msg, len, arg);
+
+   list_terminated_jobs(sendit, arg);
+
    free_pool_memory(msg);
 }
 
@@ -214,7 +208,7 @@ static void  list_terminated_jobs(void sendit(const char *msg, int len, void *sa
    sendit("\n", 1, arg);               /* send separately */
    msg =  _("Terminated Jobs:\n");
    sendit(msg, strlen(msg), arg);
-   msg =  _(" JobId  Level     Files         Bytes  Status   Finished        Name \n");
+   msg =  _(" JobId  Level    Files      Bytes   Status   Finished        Name \n");
    sendit(msg, strlen(msg), arg);
    msg = _("======================================================================\n");
    sendit(msg, strlen(msg), arg);
@@ -236,23 +230,23 @@ static void  list_terminated_jobs(void sendit(const char *msg, int len, void *sa
       }
       switch (je->JobStatus) {
       case JS_Created:
-         termstat = "Created";
+         termstat = _("Created");
          break;
       case JS_FatalError:
       case JS_ErrorTerminated:
-         termstat = "Error";
+         termstat = _("Error");
          break;
       case JS_Differences:
-         termstat = "Diffs";
+         termstat = _("Diffs");
          break;
       case JS_Canceled:
-         termstat = "Cancel";
+         termstat = _("Cancel");
          break;
       case JS_Terminated:
-         termstat = "OK";
+         termstat = _("OK");
          break;
       default:
-         termstat = "Other";
+         termstat = _("Other");
          break;
       }
       bstrncpy(JobName, je->Job, sizeof(JobName));
@@ -263,16 +257,16 @@ static void  list_terminated_jobs(void sendit(const char *msg, int len, void *sa
             *p = 0;
          }
       }
-      bsnprintf(buf, sizeof(buf), _("%6d  %-6s %8s %14s %-7s  %-8s %s\n"),
+      bsnprintf(buf, sizeof(buf), _("%6d  %-6s %8s %10s  %-7s  %-8s %s\n"),
          je->JobId,
          level,
          edit_uint64_with_commas(je->JobFiles, b1),
-         edit_uint64_with_commas(je->JobBytes, b2),
+         edit_uint64_with_suffix(je->JobBytes, b2),
          termstat,
          dt, JobName);
       sendit(buf, strlen(buf), arg);
    }
-   sendit("====\n", 5, arg);
+   sendit(_("====\n"), 5, arg);
    unlock_last_jobs_list();
 }
 
@@ -319,7 +313,7 @@ int qstatus_cmd(JCR *jcr)
    if (sscanf(dir->msg, qstatus, time) != 1) {
       pm_strcpy(&jcr->errmsg, dir->msg);
       Jmsg1(jcr, M_FATAL, 0, _("Bad .status command: %s\n"), jcr->errmsg);
-      bnet_fsend(dir, "2900 Bad .status command, missing argument.\n");
+      bnet_fsend(dir, _("2900 Bad .status command, missing argument.\n"));
       bnet_sig(dir, BNET_EOD);
       free_memory(time);
       return 0;
@@ -332,20 +326,18 @@ int qstatus_cmd(JCR *jcr)
          if (njcr->JobId != 0) {
             bnet_fsend(dir, DotStatusJob, njcr->JobId, njcr->JobStatus, njcr->JobErrors);
          }
-         free_jcr(njcr);
       }
-   }
-   else if (strcmp(time, "last") == 0) {
+      endeach_jcr(njcr);
+   else if (strcmp(time, "last") == 0) {
       bnet_fsend(dir, OKqstatus, time);
       if ((last_jobs) && (last_jobs->size() > 0)) {
          job = (s_last_job*)last_jobs->last();
          bnet_fsend(dir, DotStatusJob, job->JobId, job->JobStatus, job->Errors);
       }
-   }
-   else {
+   } else {
       pm_strcpy(&jcr->errmsg, dir->msg);
       Jmsg1(jcr, M_FATAL, 0, _("Bad .status command: %s\n"), jcr->errmsg);
-      bnet_fsend(dir, "2900 Bad .status command, wrong argument.\n");
+      bnet_fsend(dir, _("2900 Bad .status command, wrong argument.\n"));
       bnet_sig(dir, BNET_EOD);
       free_memory(time);
       return 0;
@@ -404,9 +396,7 @@ static const char *level_to_str(int level)
 }
 
 
-#if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
-#include <windows.h>
-
+#if defined(HAVE_WIN32)
 int bacstat = 0;
 
 struct s_win32_arg {
@@ -460,11 +450,11 @@ char *bac_status(char *buf, int buf_len)
       if (njcr->JobId != 0) {
          stat = JS_Running;
          termstat = _("Bacula Running");
-         free_jcr(njcr);
          break;
       }
-      free_jcr(njcr);
    }
+   endeach_jcr(njcr);
+
    if (stat != 0) {
       goto done;
    }
@@ -495,4 +485,4 @@ done:
    return buf;
 }
 
-#endif /* HAVE_CYGWIN */
+#endif /* HAVE_WIN32 */