static int outputcmd(FILE *input, BSOCK *UA_sock);
static int teecmd(FILE *input, BSOCK *UA_sock);
static int quitcmd(FILE *input, BSOCK *UA_sock);
+static int echocmd(FILE *input, BSOCK *UA_sock);
static int timecmd(FILE *input, BSOCK *UA_sock);
static int sleepcmd(FILE *input, BSOCK *UA_sock);
{ N_("sleep"), sleepcmd, _("sleep specified time")},
{ N_("time"), timecmd, _("print current time")},
{ N_("version"), versioncmd, _("print Console's version")},
+ { N_("echo"), echocmd, _("echo command string")},
{ N_("exit"), quitcmd, _("exit = quit")},
{ N_("zed_keys"), zed_keyscmd, _("zed_keys = use zed keys instead of bash keys")},
};
return 1;
}
+static int echocmd(FILE *intut, BSOCK *UA_sock)
+{
+ for (int i=1; i < argc; i++) {
+ senditf("%s", argk[i]);
+ sendit(" ");
+ }
+ sendit("\n");
+ return 1;
+}
+
static int quitcmd(FILE *input, BSOCK *UA_sock)
{
return 0;
return false;
}
- /* If pool storage specified, use it instead of job storage */
- copy_wstorage(jcr, jcr->pool->storage, _("Pool resource"));
-
- if (jcr->wstorage->size() == 0) {
- Jmsg(jcr, M_FATAL, 0, _("No Storage specification found in Job or Pool.\n"));
- return false;
- }
-
create_restore_bootstrap_file(jcr);
if (jcr->previous_jr.JobId == 0 || jcr->ExpectedFiles == 0) {
job = (JOB *)GetResWithName(R_JOB, jcr->jr.Name);
prev_job = (JOB *)GetResWithName(R_JOB, jcr->previous_jr.Name);
UnlockRes();
- if (!job || !prev_job) {
+ if (!job) {
+ Jmsg(jcr, M_FATAL, 0, _("Job resource not found for \"%s\".\n"), jcr->jr.Name);
+ return false;
+ }
+ if (!prev_job) {
+ Jmsg(jcr, M_FATAL, 0, _("Previous Job resource not found for \"%s\".\n"),
+ jcr->previous_jr.Name);
return false;
}
*/
set_jcr_defaults(mig_jcr, prev_job);
if (!setup_job(mig_jcr)) {
+ Jmsg(jcr, M_FATAL, 0, _("setup job failed.\n"));
return false;
}
return false;
}
- if (!jcr->pool->storage) {
+ if (!jcr->pool->storage || jcr->pool->storage->size() == 0) {
Jmsg(jcr, M_FATAL, 0, _("No Storage specification found in Next Pool \"%s\".\n"),
jcr->pool->hdr.name);
return false;
}
/* If pool storage specified, use it instead of job storage for backup */
- copy_wstorage(jcr, jcr->pool->storage, _("Next pool resource"));
-
+ copy_wstorage(jcr, jcr->pool->storage, _("NextPool in Pool resource"));
return true;
}
BSOCK *sd;
JCR *mig_jcr = jcr->mig_jcr; /* newly migrated job */
+ if (!mig_jcr) {
+ Jmsg(jcr, M_INFO, 0, _("No files found to migrate.\n"));
+ return false;
+ }
/* Print Job Start message */
Jmsg(jcr, M_INFO, 0, _("Start Migration JobId %s, Job=%s\n"),
goto out;
bail_out:
- jcr->MigrateJobId = 0;
ok = false;
out:
}
mig_jcr->VolumeName[0] = 0; /* none */
}
- }
-
- msg_type = M_INFO; /* by default INFO message */
- switch (jcr->JobStatus) {
- case JS_Terminated:
- if (jcr->Errors || jcr->SDErrors) {
- term_msg = _("%s OK -- with warnings");
- } else {
- term_msg = _("%s OK");
- }
- break;
- case JS_FatalError:
- case JS_ErrorTerminated:
- term_msg = _("*** %s Error ***");
- msg_type = M_ERROR; /* Generate error message */
- if (jcr->store_bsock) {
- bnet_sig(jcr->store_bsock, BNET_TERMINATE);
- if (jcr->SD_msg_chan) {
- pthread_cancel(jcr->SD_msg_chan);
+ switch (jcr->JobStatus) {
+ case JS_Terminated:
+ if (jcr->Errors || jcr->SDErrors) {
+ term_msg = _("%s OK -- with warnings");
+ } else {
+ term_msg = _("%s OK");
}
- }
- break;
- case JS_Canceled:
- term_msg = _("%s Canceled");
- if (jcr->store_bsock) {
- bnet_sig(jcr->store_bsock, BNET_TERMINATE);
- if (jcr->SD_msg_chan) {
- pthread_cancel(jcr->SD_msg_chan);
+ break;
+ case JS_FatalError:
+ case JS_ErrorTerminated:
+ term_msg = _("*** %s Error ***");
+ msg_type = M_ERROR; /* Generate error message */
+ if (jcr->store_bsock) {
+ bnet_sig(jcr->store_bsock, BNET_TERMINATE);
+ if (jcr->SD_msg_chan) {
+ pthread_cancel(jcr->SD_msg_chan);
+ }
+ }
+ break;
+ case JS_Canceled:
+ term_msg = _("%s Canceled");
+ if (jcr->store_bsock) {
+ bnet_sig(jcr->store_bsock, BNET_TERMINATE);
+ if (jcr->SD_msg_chan) {
+ pthread_cancel(jcr->SD_msg_chan);
+ }
}
+ break;
+ default:
+ term_msg = _("Inappropriate %s term code");
+ break;
}
- break;
- default:
- term_msg = _("Inappropriate %s term code");
- break;
- }
+ } else {
+ term_msg = _("%s -- no files to migrate");
+ }
+
bsnprintf(term_code, sizeof(term_code), term_msg, "Migration");
bstrftimes(sdt, sizeof(sdt), jcr->jr.StartTime);
bstrftimes(edt, sizeof(edt), jcr->jr.EndTime);
" Client: %s\n"
" FileSet: \"%s\" %s\n"
" Pool: \"%s\" (From %s)\n"
-" Read Storage: \"%s\" (From %s_\n"
+" Read Storage: \"%s\" (From %s)\n"
" Write Storage: \"%s\" (From %s)\n"
" Start time: %s\n"
" End time: %s\n"
jcr->client->name(),
jcr->fileset->name(), jcr->FSCreateTime,
jcr->pool->name(), jcr->pool_source,
- jcr->rstore->name(), jcr->rstore_source,
- jcr->wstore->name(), jcr->wstore_source,
+ jcr->rstore?jcr->rstore->name():"*None*",
+ NPRT(jcr->rstore_source),
+ jcr->wstore?jcr->wstore->name():"*None*",
+ NPRT(jcr->wstore_source),
sdt,
edt,
edit_utime(RunTime, elapsed, sizeof(elapsed)),