Implemented file size and mtime for -ls_l
This commit is contained in:
@ -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",
|
||||
|
Reference in New Issue
Block a user