diff --git a/dep/libchdr/include/libchdr/chd.h b/dep/libchdr/include/libchdr/chd.h index 0beed4903..4c95439ad 100644 --- a/dep/libchdr/include/libchdr/chd.h +++ b/dep/libchdr/include/libchdr/chd.h @@ -389,11 +389,13 @@ CHD_EXPORT void chd_close(chd_file *chd); /* return the associated core_file */ CHD_EXPORT core_file *chd_core_file(chd_file *chd); +/* return the overall size of a CHD, and any of its parents */ +CHD_EXPORT UINT64 chd_get_compressed_size(chd_file* chd); + /* return an error string for the given CHD error */ CHD_EXPORT const char *chd_error_string(chd_error err); - /* ----- CHD header management ----- */ /* return a pointer to the extracted CHD header data */ diff --git a/dep/libchdr/src/libchdr_chd.c b/dep/libchdr/src/libchdr_chd.c index 8c65d7459..65f1415bf 100644 --- a/dep/libchdr/src/libchdr_chd.c +++ b/dep/libchdr/src/libchdr_chd.c @@ -1952,6 +1952,14 @@ CHD_EXPORT core_file *chd_core_file(chd_file *chd) return chd->file; } +CHD_EXPORT UINT64 chd_get_compressed_size(chd_file *chd) +{ + UINT64 size = chd->file->fsize(chd->file); + if (chd->parent) + size += chd_get_compressed_size(chd->parent); + return size; +} + /*------------------------------------------------- chd_error_string - return an error string for the given CHD error