At times we require to see if the file is empty and get the size of the file. By using stat we can get the file size without actually having to open the file to check for its contents. Mentored-by: Lars Schneider <larsxschneider@xxxxxxxxx> Mentored-by: Christian Couder <chriscool@xxxxxxxxxxxxx> Signed-off-by: Pranit Bauva <pranit.bauva@xxxxxxxxx> --- dir.c | 8 ++++++++ dir.h | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/dir.c b/dir.c index 6172b34..eaee718 100644 --- a/dir.c +++ b/dir.c @@ -2036,6 +2036,14 @@ int file_exists(const char *f) return lstat(f, &sb) == 0; } +ssize_t file_size(const char *filename) +{ + struct stat st; + if (stat(filename, &st) < 0) + return -1; + return xsize_t(st.st_size); +} + static int cmp_icase(char a, char b) { if (a == b) diff --git a/dir.h b/dir.h index bfde698..aa9d276 100644 --- a/dir.h +++ b/dir.h @@ -248,6 +248,13 @@ extern void clear_exclude_list(struct exclude_list *el); extern void clear_directory(struct dir_struct *dir); extern int file_exists(const char *); +/* + * Return the size of the file `filename`. It returns -1 if error + * occurred, 0 if file is empty and a positive number denoting the size + * of the file. + */ +extern ssize_t file_size(const char *); + extern int is_inside_dir(const char *dir); extern int dir_inside_of(const char *subdir, const char *dir); -- 2.8.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html