cmd_AddParm(ts, "-encrypt", CMD_FLAG, CMD_OPTIONAL, "encrypt commands");\
cmd_AddParm(ts, "-noresolve", CMD_FLAG, CMD_OPTIONAL, "don't resolve addresses"); \
-#define ERROR_EXIT(code) {error=(code); goto error_exit;}
+#define ERROR_EXIT(code) do { \
+ error = (code); \
+ goto error_exit; \
+} while (0)
int rxInitDone = 0;
struct rx_connection *tconn;
fprintf(STDOUT,
"Total VLDB entries deleted: %lu; failed to delete: %lu\n",
(unsigned long)totalBack, (unsigned long)totalFail);
- if (arrayEntries.ubulkentries_val)
- free(arrayEntries.ubulkentries_val);
+
+ xdr_free((xdrproc_t) xdr_ubulkentries, &arrayEntries);
return 0;
}
*/
else if (centries > 0) {
if (!tarray) {
- /* steal away the first bulk entries array */
- tarray = (struct uvldbentry *)arrayEntries.ubulkentries_val;
- tarraysize = centries * sizeof(struct uvldbentry);
- arrayEntries.ubulkentries_val = 0;
+ /* malloc the first bulk entries array */
+ tarraysize = centries * sizeof(struct uvldbentry);
+ tarray = malloc(tarraysize);
+ if (!tarray) {
+ fprintf(STDERR,
+ "Could not allocate enough space for the VLDB entries\n");
+ goto bypass;
+ }
+ memcpy((char*)tarray, arrayEntries.ubulkentries_val, tarraysize);
} else {
/* Grow the tarray to keep the extra entries */
parraysize = (centries * sizeof(struct uvldbentry));
}
/* Free the bulk array */
- if (arrayEntries.ubulkentries_val) {
- free(arrayEntries.ubulkentries_val);
- arrayEntries.ubulkentries_val = 0;
- }
+ xdr_free((xdrproc_t) xdr_ubulkentries, &arrayEntries);
}
/* Here is where we now sort all the entries and print them */
fprintf(STDOUT, "Total volumes backed up: %lu; failed to backup: %lu\n",
(unsigned long)totalBack, (unsigned long)totalFail);
fflush(STDOUT);
- if (arrayEntries.ubulkentries_val)
- free(arrayEntries.ubulkentries_val);
+ xdr_free((xdrproc_t) xdr_ubulkentries, &arrayEntries);
return 0;
}
}
}
- if (arrayEntries.ubulkentries_val)
- free(arrayEntries.ubulkentries_val);
+ xdr_free((xdrproc_t) xdr_ubulkentries, &arrayEntries);
return 0;
}