/*
* Concatenate a string (str) onto a pool memory buffer pm
+ * Returns: length of concatenated string
*/
-int pm_strcat(POOLMEM **pm, char *str)
+int pm_strcat(POOLMEM **pm, const char *str)
{
int pmlen = strlen(*pm);
int len = strlen(str) + 1;
/*
* Copy a string (str) into a pool memory buffer pm
+ * Returns: length of string copied
*/
-int pm_strcpy(POOLMEM **pm, char *str)
+int pm_strcpy(POOLMEM **pm, const char *str)
{
int len = strlen(str) + 1;
*/
void jobstatus_to_ascii(int JobStatus, char *msg, int maxlen)
{
- char *termstat;
+ char *jobstat;
char buf[100];
switch (JobStatus) {
- case JS_Terminated:
- termstat = _("OK");
- break;
- case JS_FatalError:
- case JS_ErrorTerminated:
- termstat = _("Error");
- break;
- case JS_Error:
- termstat = _("Non-fatal error");
- break;
- case JS_Canceled:
- termstat = _("Canceled");
- break;
- case JS_Differences:
- termstat = _("Verify differences");
- break;
- default:
- if (JobStatus == 0) {
- buf[0] = 0;
- } else {
- bsnprintf(buf, sizeof(buf), _("Unknown Job termination status=%d"), JobStatus);
- }
- termstat = buf;
- break;
+ case JS_Created:
+ jobstat = _("Created");
+ break;
+ case JS_Running:
+ jobstat = _("Running");
+ break;
+ case JS_Blocked:
+ jobstat = _("Blocked");
+ break;
+ case JS_Terminated:
+ jobstat = _("OK");
+ break;
+ case JS_FatalError:
+ case JS_ErrorTerminated:
+ jobstat = _("Error");
+ break;
+ case JS_Error:
+ jobstat = _("Non-fatal error");
+ break;
+ case JS_Canceled:
+ jobstat = _("Canceled");
+ break;
+ case JS_Differences:
+ jobstat = _("Verify differences");
+ break;
+ case JS_WaitFD:
+ jobstat = _("Waiting on FD");
+ break;
+ case JS_WaitSD:
+ jobstat = _("Wait on SD");
+ break;
+ case JS_WaitMedia:
+ jobstat = _("Wait for new Volume");
+ break;
+ case JS_WaitMount:
+ jobstat = _("Waiting for mount");
+ break;
+ case JS_WaitStoreRes:
+ jobstat = _("Waiting for Storage resource");
+ break;
+ case JS_WaitJobRes:
+ jobstat = _("Waiting for Job resource");
+ break;
+ case JS_WaitClientRes:
+ jobstat = _("Waiting for Client resource");
+ break;
+ case JS_WaitMaxJobs:
+ jobstat = _("Waiting on Max Jobs");
+ break;
+ case JS_WaitStartTime:
+ jobstat = _("Waiting for Start Time");
+ break;
+ case JS_WaitPriority:
+ jobstat = _("Waiting on Priority");
+ break;
+
+ default:
+ if (JobStatus == 0) {
+ buf[0] = 0;
+ } else {
+ bsnprintf(buf, sizeof(buf), _("Unknown Job termination status=%d"), JobStatus);
+ }
+ jobstat = buf;
+ break;
}
- bstrncpy(msg, termstat, maxlen);
+ bstrncpy(msg, jobstat, maxlen);
}
/*
case L_VERIFY_DATA:
str = _("Verify Data");
break;
+ case L_NONE:
+ str = " ";
+ break;
default:
str = _("Unknown Job Level");
break;
* %n = Unadorned Job name
* %t = Job type (Backup, ...)
* %r = Recipients
+ * %v = Volume name
*
* omsg = edited output message
* imsg = input string containing edit codes (%x)
* to = recepients list
*
*/
-POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, char *to)
+POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to)
{
- char *p, *str;
+ char *p, *q;
+ const char *str;
char add[20];
char name[MAX_NAME_LENGTH];
+ int i;
*omsg = 0;
Dmsg1(200, "edit_job_codes: %s\n", imsg);
case 'n':
bstrncpy(name, jcr->Job, sizeof(name));
/* There are three periods after the Job name */
- for (int i=0; i<3; i++) {
- if ((str=strrchr(name, '.')) != NULL) {
- *str = 0;
+ for (i=0; i<3; i++) {
+ if ((q=strrchr(name, '.')) != NULL) {
+ *q = 0;
}
}
str = name;
case 't':
str = job_type_to_str(jcr->JobType);
break;
+ case 'v':
+ if (jcr->VolumeName && jcr->VolumeName[0]) {
+ str = jcr->VolumeName;
+ } else {
+ str = "";
+ }
+ break;
default:
add[0] = '%';
add[1] = *p;