- int level;
- off_t size;
-
- for(level = 0; level < DUMP_LEVELS; level++) {
- if (est->est[level].needestimate) {
- dbprintf(("%s: getting size via gnutar for %s level %d\n",
- debug_prefix_time(NULL), est->qamname, level));
- size = getsize_gnutar(est->amname, est->amdevice, level,
- est->options, est->est[level].dumpsince);
-
- amflock(1, "size");
-
- if (fseek(stdout, 0L, SEEK_END) < 0) {
- dbprintf(("gnutar_calc_estimates: warning - seek failed: %s\n",
- strerror(errno)));
- }
-
- printf("%s %d SIZE " OFF_T_FMT "\n",
- est->qamname, level, (OFF_T_FMT_TYPE)size);
- fflush(stdout);
-
- amfunlock(1, "size");
- }
- }
+ int level;
+ off_t size;
+ char *errmsg = NULL, *qerrmsg;
+
+ for(level = 0; level < DUMP_LEVELS; level++) {
+ if (est->est[level].needestimate) {
+ dbprintf(("%s: getting size via gnutar for %s level %d\n",
+ debug_prefix_time(NULL), est->qamname, level));
+ size = getsize_gnutar(est->amname, est->amdevice, level,
+ est->options, est->est[level].dumpsince,
+ &errmsg);
+
+ amflock(1, "size");
+
+ printf("%s %d SIZE " OFF_T_FMT "\n",
+ est->qamname, level, (OFF_T_FMT_TYPE)size);
+ if (errmsg && errmsg[0] != '\0') {
+ if(am_has_feature(g_options->features,
+ fe_rep_sendsize_quoted_error)) {
+ qerrmsg = quote_string(errmsg);
+ dbprintf(("errmsg is %s\n", errmsg));
+ printf("%s %d ERROR %s\n",
+ est->qamname, level, qerrmsg);
+ amfree(qerrmsg);
+ }
+ }
+ amfree(errmsg);
+ fflush(stdout);
+
+ amfunlock(1, "size");
+ }
+ }