/*
* To achieve a small memory footprint, this version of 'ls' doesn't do any
* file sorting, and only has the most essential command line switches
- * (i.e. the ones I couldn't live without :-) All features which involve
+ * (i.e., the ones I couldn't live without :-) All features which involve
* linking in substantial chunks of libc can be disabled.
*
* Although I don't really want to add new features to this program to
/*----------------------------------------------------------------------*/
static int list_single(struct dnode *dn)
{
- int i, len;
+ int i;
char scratch[BUFSIZ + 1];
#ifdef BB_FEATURE_LS_TIMESTAMPS
char *filetime;
for (i=0; i<=31; i++) {
switch (list_fmt & (1<<i)) {
case LIST_INO:
- printf("%7ld ", dn->dstat.st_ino);
+ printf("%7ld ", (long int)dn->dstat.st_ino);
column += 8;
break;
case LIST_BLOCKS:
#ifdef BB_FEATURE_HUMAN_READABLE
- fprintf(stdout, "%5s ", make_human_readable_str(dn->dstat.st_blocks>>1,
- (ls_disp_hr==TRUE)? 0: 1));
+ fprintf(stdout, "%4s ", make_human_readable_str(dn->dstat.st_blocks>>1,
+ KILOBYTE, (ls_disp_hr==TRUE)? 0: 1));
#else
#if _FILE_OFFSET_BITS == 64
printf("%4lld ", dn->dstat.st_blocks>>1);
column += 5;
break;
case LIST_MODEBITS:
- printf("%10s", (char *)mode_string(dn->dstat.st_mode));
+ printf("%-10s ", (char *)mode_string(dn->dstat.st_mode));
column += 10;
break;
case LIST_NLINKS:
my_getpwuid(scratch, dn->dstat.st_uid);
printf("%-8.8s ", scratch);
my_getgrgid(scratch, dn->dstat.st_gid);
- printf("%-8.8s", scratch);
+ printf("%-8.8s ", scratch);
column += 17;
break;
#endif
} else {
#ifdef BB_FEATURE_HUMAN_READABLE
if (ls_disp_hr==TRUE) {
- fprintf(stdout, "%9s ", make_human_readable_str(
- dn->dstat.st_size>>10, 0));
+ fprintf(stdout, "%8s ", make_human_readable_str(dn->dstat.st_size, 1, 0));
} else
#endif
{
break;
case LIST_SYMLINK:
if (S_ISLNK(dn->dstat.st_mode)) {
- len= readlink(dn->fullname, scratch, (sizeof scratch)-1);
- if (len > 0) {
- scratch[len]= '\0';
- printf(" -> %s", scratch);
+ char *lpath = xreadlink(dn->fullname);
+ if (lpath) {
+ printf(" -> %s", lpath);
#ifdef BB_FEATURE_LS_FILETYPES
if (!stat(dn->fullname, &info)) {
append = append_char(info.st_mode);
}
#endif
- column += len+4;
+ column += strlen(lpath) + 4;
+ free(lpath);
}
}
break;