_ACEOF
+fi
+
+
+fi
+
+
+fi
+
+
+
+ if test "${ac_cv_header_term_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for term.h" >&5
+echo $ECHO_N "checking for term.h... $ECHO_C" >&6
+if test "${ac_cv_header_term_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_term_h" >&5
+echo "${ECHO_T}$ac_cv_header_term_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking term.h usability" >&5
+echo $ECHO_N "checking term.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <term.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
else
- echo " "; echo "Neither termcap nor ncurses library found. CONIO turned off ..."; echo " "
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+# Is the header present?
+echo "$as_me:$LINENO: checking term.h presence" >&5
+echo $ECHO_N "checking term.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <term.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ ac_header_preproc=no
fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+ yes:no )
+ { echo "$as_me:$LINENO: WARNING: term.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: term.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: term.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: term.h: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ no:yes )
+ { echo "$as_me:$LINENO: WARNING: term.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: term.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: term.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: term.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: term.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: term.h: proceeding with the preprocessor's result" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for term.h" >&5
+echo $ECHO_N "checking for term.h... $ECHO_C" >&6
+if test "${ac_cv_header_term_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_term_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_term_h" >&5
+echo "${ECHO_T}$ac_cv_header_term_h" >&6
+fi
+if test $ac_cv_header_term_h = yes; then
+ echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5
+echo $ECHO_N "checking for tgetent in -lcurses... $ECHO_C" >&6
+if test "${ac_cv_lib_curses_tgetent+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
- echo " "; echo "termcap.h not found. CONIO turned off ..."; echo " "
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcurses $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char tgetent ();
+int
+main ()
+{
+tgetent ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_curses_tgetent=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_curses_tgetent=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5
+echo "${ECHO_T}$ac_cv_lib_curses_tgetent" >&6
+if test $ac_cv_lib_curses_tgetent = yes; then
+ CONS_LIBS="-lcurses"
+ CONS_OBJ="conio.o"
+ CONS_SRC="conio.c"
+ got_conio="yes"
+ support_readline=no
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CONIO 1
+_ACEOF
+
+
+fi
+
+
fi
+
for ac_header in \
string.h \
termios.h \
termcap.h \
+ term.h \
unistd.h \
sys/bitypes.h \
sys/byteorder.h \
#include "dird.h"
/* Forward referenced functions */
-static void write_bsr(UAContext *ua, RBSR *bsr, FILE *fd);
+static int write_bsr(UAContext *ua, RBSR *bsr, FILE *fd);
void print_bsr(UAContext *ua, RBSR *bsr);
}
/*
- * Write the bootstrap record to file
+ * Write the bootstrap records to file
*/
int write_bsr_file(UAContext *ua, RBSR *bsr)
{
FILE *fd;
POOLMEM *fname = get_pool_memory(PM_MESSAGE);
- int stat;
+ int count = 0;;
+ bool err;
Mmsg(fname, "%s/restore.bsr", working_directory);
fd = fopen(fname, "w+");
if (!fd) {
+ berrno be;
bsendmsg(ua, _("Unable to create bootstrap file %s. ERR=%s\n"),
- fname, strerror(errno));
- free_pool_memory(fname);
- return 0;
+ fname, be.strerror());
+ goto bail_out;
}
/* Write them to file */
- write_bsr(ua, bsr, fd);
- stat = !ferror(fd);
+ count = write_bsr(ua, bsr, fd);
+ err = ferror(fd);
fclose(fd);
+ if (err) {
+ bsendmsg(ua, _("Error writing bsr file.\n"));
+ count = 0;
+ goto bail_out;
+ }
+
+
bsendmsg(ua, _("Bootstrap records written to %s\n"), fname);
/* Tell the user what he will need to mount */
}
if (ua->num_prompts == 0) {
bsendmsg(ua, _("No Volumes found to restore.\n"));
- stat = 0;
+ count = 0;
}
ua->num_prompts = 0;
bsendmsg(ua, "\n");
+
+bail_out:
free_pool_memory(fname);
- return stat;
+ return count;
}
-static void write_bsr(UAContext *ua, RBSR *bsr, FILE *fd)
+static int write_bsr(UAContext *ua, RBSR *bsr, FILE *fd)
{
+ uint32_t count = 0;
if (bsr) {
- uint32_t count;
/*
* For a given volume, loop over all the JobMedia records.
* VolCount is the number of JobMedia records.
}
write_bsr(ua, bsr->next, fd);
}
+ return count;
}
void print_bsr(UAContext *ua, RBSR *bsr)
bsr->fi = new_findex();
bsr->fi->findex = 1;
bsr->fi->findex2 = verify_jr.JobFiles;
- if (!write_bsr_file(ua, bsr)) {
+ jcr->ExpectedFiles = write_bsr_file(ua, bsr);
+ if (jcr->ExpectedFiles == 0) {
free_ua_context(ua);
free_bsr(bsr);
goto bail_out;
static void verify_cleanup(JCR *jcr, int TermCode)
{
char sdt[50], edt[50];
- char ec1[30];
+ char ec1[30], ec2[30];
char term_code[100], fd_term_msg[100], sd_term_msg[100];
const char *term_msg;
int msg_type;
// Dmsg1(100, "Enter verify_cleanup() TermCod=%d\n", TermCode);
dequeue_messages(jcr); /* display any queued messages */
+ Dmsg3(000, "JobLevel=%c Expected=%u JobFiles=%u\n", jcr->JobLevel,
+ jcr->ExpectedFiles, jcr->JobFiles);
+ if (jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG &&
+ jcr->ExpectedFiles != jcr->JobFiles) {
+ TermCode = JS_ErrorTerminated;
+ }
+
JobId = jcr->jr.JobId;
set_jcr_job_status(jcr, TermCode);
Verify Job: %s\n\
Start time: %s\n\
End time: %s\n\
+Files Expected: %s\n\
Files Examined: %s\n\
Non-fatal FD errors: %d\n\
FD termination status: %s\n\
Name,
sdt,
edt,
- edit_uint64_with_commas(jcr->JobFiles, ec1),
+ edit_uint64_with_commas(jcr->ExpectedFiles, ec1),
+ edit_uint64_with_commas(jcr->JobFiles, ec2),
jcr->Errors,
fd_term_msg,
sd_term_msg,