ack.
only one issue - comment says it returns value less than 0 in case of
error but
it doesn't look right.
On 10/01/2012 03:49 PM, Jakub Filak wrote:
- required for implementation of abrt's SetElement D-Bus method.
- trac#754
Signed-off-by: Jakub Filak<jfilak(a)redhat.com>
---
src/include/dump_dir.h | 5 +++++
src/lib/dump_dir.c | 21 +++++++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/src/include/dump_dir.h b/src/include/dump_dir.h
index 21e8a2b..2b9fc7d 100644
--- a/src/include/dump_dir.h
+++ b/src/include/dump_dir.h
@@ -68,6 +68,11 @@ char* dd_load_text_ext(const struct dump_dir *dd, const char *name,
unsigned fla
char* dd_load_text(const struct dump_dir *dd, const char *name);
void dd_save_text(struct dump_dir *dd, const char *name, const char *data);
void dd_save_binary(struct dump_dir *dd, const char *name, const char *data, unsigned
size);
+/* Returns value less than 0 if any error occured; otherwise returns size of an
+ * item in Bytes. If an item does not exist returns 0 instead of an error
+ * value.
+ */
+long dd_get_item_size(struct dump_dir *dd, const char *name);
/* Returns 0 if directory is deleted or not found */
int dd_delete(struct dump_dir *dd);
int dd_rename(struct dump_dir *dd, const char *new_path);
diff --git a/src/lib/dump_dir.c b/src/lib/dump_dir.c
index 0fc7da7..a287ebb 100644
--- a/src/lib/dump_dir.c
+++ b/src/lib/dump_dir.c
@@ -827,6 +827,27 @@ void dd_save_binary(struct dump_dir* dd, const char* name, const
char* data, uns
free(full_path);
}
+long dd_get_item_size(struct dump_dir *dd, const char *name)
+{
+ long size = -1;
+ char *iname = concat_path_file(dd->dd_dirname, name);
+ struct stat statbuf;
+
+ if (lstat(iname,&statbuf) == 0&& S_ISREG(statbuf.st_mode))
+ size = statbuf.st_size;
+ else
+ {
+ if (errno == ENOENT)
+ size = 0;
+ else
+ perror_msg("Can't get size of file '%s'", iname);
+ }
+
+ free(iname);
+
+ return size;
+}
+
DIR *dd_init_next_file(struct dump_dir *dd)
{
// if (!dd->locked)
--
Richard Marko