From 7b44e5b47ecee9fea87a6e1277a672fe2ab3ed9a Mon Sep 17 00:00:00 2001 From: rocky Date: Sat, 29 Oct 2005 14:52:47 +0000 Subject: [PATCH] Fill out posix attributes a little. Add directory listing to output. --- example/udf1.c | 10 +++++++--- lib/udf/udf.c | 25 ++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/example/udf1.c b/example/udf1.c index da0d1a79..40c8fbf4 100644 --- a/example/udf1.c +++ b/example/udf1.c @@ -1,5 +1,5 @@ /* - $Id: udf1.c,v 1.8 2005/10/27 01:23:48 rocky Exp $ + $Id: udf1.c,v 1.9 2005/10/29 14:52:47 rocky Exp $ Copyright (C) 2005 Rocky Bernstein @@ -56,9 +56,9 @@ print_file_info(const udf_file_t *p_udf_file) time_t mod_time = udf_get_modification_time(p_udf_file); udf_file_entry_t udf_fe; if (udf_get_file_entry(p_udf_file, &udf_fe)) { - char perms[10]="invalid"; + char perms[11]="invalid"; /* Print directory attributes*/ - printf("%s ", udf_get_attr_str (udf_fe.permissions, perms)); + printf("%s ", udf_get_posix_filemode_str (p_udf_file, perms)); } printf("%s %s", udf_get_filename(p_udf_file), ctime(&mod_time)); @@ -130,6 +130,10 @@ main(int argc, const char *argv[]) volset_id[UDF_VOLSET_ID_SIZE+1]='\0'; printf("volume set id: %s\n", volset_id); } + + printf("partition number: %d\n", udf_get_part_number(p_udf)); + + } list_files(p_udf, p_udf_file, strdup(udf_get_filename(p_udf_file))); diff --git a/lib/udf/udf.c b/lib/udf/udf.c index a4c44315..80ebc4a7 100644 --- a/lib/udf/udf.c +++ b/lib/udf/udf.c @@ -1,5 +1,5 @@ /* - $Id: udf.c,v 1.4 2005/10/29 14:43:50 rocky Exp $ + $Id: udf.c,v 1.5 2005/10/29 14:52:47 rocky Exp $ Copyright (C) 2005 Rocky Bernstein @@ -68,6 +68,29 @@ udf_get_filename(const udf_file_t *p_udf_file) return p_udf_file->psz_name; } +/*! + Returns a POSIX filemode string for a given p_udf_file. +*/ +const char * +udf_get_posix_filemode_str(const udf_file_t *p_udf_file, char perms[]) +{ + udf_file_entry_t udf_fe; + + if (p_udf_file->b_dir) { + perms[0] = 'd'; + } else { + perms[0] = '-'; + } + + if (udf_get_file_entry(p_udf_file, &udf_fe)) { + /* Print directory attributes*/ + udf_get_attr_str (udf_fe.permissions, &perms[1]); + return perms; + } + return ""; +} + + bool udf_get_file_entry(const udf_file_t *p_udf_file, /*out*/ udf_file_entry_t *p_udf_fe)