Implemented file size and mtime for -ls_l

This commit is contained in:
2007-10-22 21:18:13 +00:00
parent 3888b469ae
commit 73020b5c31
3 changed files with 35 additions and 20 deletions

View File

@ -17,6 +17,7 @@
#include <errno.h>
#include <string.h>
#include <sys/stat.h>
#include <time.h>
/* ------------------------------------------------------------------------ */
@ -1229,6 +1230,12 @@ int Xorriso_ls(struct XorrisO *xorriso, int flag)
struct iso_tree_iter *iter= NULL;
char sfe[4*SfileadrL], *npt, *rpt, perms[10];
mode_t st_mode;
off_t size;
time_t mtime;
struct tm tms, *tmpt;
static char months[12][4]= { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
rpt= xorriso->result_line;
@ -1300,8 +1307,8 @@ wdi_is_not_a_dir:;
npt= (char *) iso_tree_node_get_name(node);
rpt[0]= 0;
if(flag&1) { /* >>> prepend attribute info */;
if(is_dir)
if(flag&1) {
if(LIBISO_ISDIR(node))
strcat(rpt, "d");
else if(LIBISO_ISREG(node))
strcat(rpt, "-");
@ -1324,18 +1331,25 @@ wdi_is_not_a_dir:;
strcat(rpt, perms);
/* >>> With directories this should be : number of subdirs + 2 */
/* >>> ??? How to obtain RR harlink number for other types ? */
/* >>> ??? How to obtain RR hardlink number for other types ? */
strcat(rpt," 1 ");
sprintf(rpt+strlen(rpt), "%-7lu ",
sprintf(rpt+strlen(rpt), "%-8lu ",
(unsigned long) iso_tree_node_get_uid(node));
sprintf(rpt+strlen(rpt), "%-7lu ",
sprintf(rpt+strlen(rpt), "%-8lu ",
(unsigned long) iso_tree_node_get_gid(node));
/* >>> obtain size */
sprintf(rpt+strlen(rpt), "_no_size ");
/* >>> obtain date */
sprintf(rpt+strlen(rpt), "__no__date__ ");
size= iso_tree_node_get_size(node);
sprintf(rpt+strlen(rpt), "%8.f ",(double) size);
mtime= iso_tree_node_get_mtime(node);
tmpt= localtime_r(&mtime, &tms);
if(tmpt==0)
sprintf(rpt+strlen(rpt), "%12.f ",(double) mtime);
else if(time(0)-mtime < 180*86400)
sprintf(rpt+strlen(rpt), "%3s %2d %2.2d:%2.2d ",
months[tms.tm_mon], tms.tm_mday, tms.tm_hour, tms.tm_min);
else
sprintf(rpt+strlen(rpt), "%3s %2d %4.4d ",
months[tms.tm_mon], tms.tm_mday, 1900+tms.tm_year);
}
sprintf(xorriso->result_line+strlen(xorriso->result_line), "%s\n",