]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/lib/util.c
- Use a bigger buffer 32K as suggested by Arno in bpipe.c.
[bacula/bacula] / bacula / src / lib / util.c
index 52dbe698ae7429ae37e556b3111179f9972ebb95..1d53dc2e227fc7d7a2da67043579f2cfd3911f34 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *   util.c  miscellaneous utility subroutines for Bacula
- * 
+ *
  *    Kern Sibbald, MM
  *
  *   Version $Id$
@@ -75,7 +75,7 @@ void lcase(char *str)
    }
 }
 
-/* Convert spaces to non-space character. 
+/* Convert spaces to non-space character.
  * This makes scanf of fields containing spaces easier.
  */
 void
@@ -88,7 +88,7 @@ bash_spaces(char *str)
    }
 }
 
-/* Convert spaces to non-space character. 
+/* Convert spaces to non-space character.
  * This makes scanf of fields containing spaces easier.
  */
 void
@@ -251,7 +251,7 @@ void jobstatus_to_ascii(int JobStatus, char *msg, int maxlen)
 /*
  * Convert Job Termination Status into a string
  */
-const char *job_status_to_str(int stat) 
+const char *job_status_to_str(int stat)
 {
    const char *str;
 
@@ -283,7 +283,7 @@ const char *job_status_to_str(int stat)
 /*
  * Convert Job Type into a string
  */
-const char *job_type_to_str(int type) 
+const char *job_type_to_str(int type)
 {
    const char *str;
 
@@ -310,7 +310,7 @@ const char *job_type_to_str(int type)
 /*
  * Convert Job Level into a string
  */
-const char *job_level_to_str(int level) 
+const char *job_level_to_str(int level)
 {
    const char *str;
 
@@ -361,7 +361,7 @@ const char *job_level_to_str(int level)
 
 char *encode_mode(mode_t mode, char *buf)
 {
-  char *cp = buf;  
+  char *cp = buf;
 
   *cp++ = S_ISDIR(mode) ? 'd' : S_ISBLK(mode)  ? 'b' : S_ISCHR(mode)  ? 'c' :
           S_ISLNK(mode) ? 'l' : S_ISFIFO(mode) ? 'f' : S_ISSOCK(mode) ? 's' : '-';
@@ -468,9 +468,6 @@ void make_session_key(char *key, char *seed, int mode)
 #endif
 #ifdef HAVE_GETHOSTID
      sprintf(s + strlen(s), "%lu", (unsigned long) gethostid());
-#endif
-#ifdef HAVE_GETDOMAINNAME
-     getdomainname(s + strlen(s), 256);
 #endif
      gethostname(s + strlen(s), 256);
      sprintf(s + strlen(s), "%u", (unsigned)getuid());
@@ -516,16 +513,17 @@ void make_session_key(char *key, char *seed, int mode)
  *  %j = Unique Job name
  *  %l = job level
  *  %n = Unadorned Job name
+ *  %s = Since time
  *  %t = Job type (Backup, ...)
  *  %r = Recipients
  *  %v = Volume name
  *
  *  omsg = edited output message
  *  imsg = input string containing edit codes (%x)
- *  to = recepients list 
+ *  to = recepients list
  *
  */
-POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to)   
+POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to)
 {
    char *p, *q;
    const char *str;
@@ -542,48 +540,84 @@ POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to)
             str = "%";
            break;
          case 'c':
-           str = jcr->client_name;
-           if (!str) {
-               str = "";
+           if (jcr) {
+              str = jcr->client_name;
+           } else {
+               str = _("*none*");
            }
            break;
          case 'd':
             str = my_name;            /* Director's name */
            break;
          case 'e':
-           str = job_status_to_str(jcr->JobStatus); 
+           if (jcr) {
+              str = job_status_to_str(jcr->JobStatus);
+           } else {
+               str = _("*none*");
+           }
            break;
          case 'i':
-            bsnprintf(add, sizeof(add), "%d", jcr->JobId);
-           str = add;
+           if (jcr) {
+               bsnprintf(add, sizeof(add), "%d", jcr->JobId);
+              str = add;
+           } else {
+               str = _("*none*");
+           }
            break;
          case 'j':                    /* Job name */
-           str = jcr->Job;
+           if (jcr) {
+              str = jcr->Job;
+           } else {
+               str = _("*none*");
+           }
            break;
          case 'l':
-           str = job_level_to_str(jcr->JobLevel);
+           if (jcr) {
+              str = job_level_to_str(jcr->JobLevel);
+           } else {
+               str = _("*none*");
+           }
            break;
          case 'n':
-            bstrncpy(name, jcr->Job, sizeof(name));
-            /* There are three periods after the Job name */
-            for (i=0; i<3; i++) {
-                if ((q=strrchr(name, '.')) != NULL) {
-                   *q = 0;
+            if (jcr) {
+               bstrncpy(name, jcr->Job, sizeof(name));
+               /* There are three periods after the Job name */
+               for (i=0; i<3; i++) {
+                   if ((q=strrchr(name, '.')) != NULL) {
+                      *q = 0;
+                  }
                }
+               str = name;
+            } else {
+                str = _("*none*");
             }
-            str = name;
             break;
          case 'r':
            str = to;
            break;
+         case 's':                    /* since time */
+           if (jcr && jcr->stime) {
+              str = jcr->stime;
+           } else {
+               str = _("*none*");
+           }
+           break;
          case 't':
-           str = job_type_to_str(jcr->JobType);
+           if (jcr) {
+              str = job_type_to_str(jcr->JobType);
+           } else {
+               str = _("*none*");
+           }
            break;
          case 'v':
-           if (jcr->VolumeName && jcr->VolumeName[0]) {
-              str = jcr->VolumeName;
+           if (jcr) {
+              if (jcr->VolumeName && jcr->VolumeName[0]) {
+                 str = jcr->VolumeName;
+              } else {
+                  str = "";
+              }
            } else {
-               str = "";
+               str = _("*none*");
            }
            break;
         default:
@@ -607,7 +641,7 @@ POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to)
 
 void set_working_directory(char *wd)
 {
-   struct stat stat_buf; 
+   struct stat stat_buf;
 
    if (wd == NULL) {
       Emsg0(M_ERROR_TERM, 0, _("Working directory not defined. Cannot continue.\n"));