Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 008cbcd0 authored by Kenny Root's avatar Kenny Root Committed by Android Code Review
Browse files

Merge "Add -F for classify to ls"

parents 4c6b494a 40dac659
Loading
Loading
Loading
Loading
+24 −2
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@ static void strlist_sort( strlist_t *list )
#define LIST_RECURSIVE      (1 << 2)
#define LIST_DIRECTORIES    (1 << 3)
#define LIST_SIZE           (1 << 4)
#define LIST_CLASSIFY       (1 << 6)

// fwd
static int listpath(const char *name, int flags);
@@ -253,7 +254,27 @@ static int listfile_size(const char *path, const char *filename, int flags)
    }

    /* blocks are 512 bytes, we want output to be KB */
    printf("%lld %s\n", s.st_blocks / 2, filename);
    if ((flags & LIST_SIZE) != 0) {
        printf("%lld ", s.st_blocks / 2);
    }

    if ((flags & LIST_CLASSIFY) != 0) {
        char filetype = mode2kind(s.st_mode);
        if (filetype != 'l') {
            printf("%c ", filetype);
        } else {
            struct stat link_dest;
            if (!stat(path, &link_dest)) {
                printf("l%c ", mode2kind(link_dest.st_mode));
            } else {
                fprintf(stderr, "stat '%s' failed: %s\n", path, strerror(errno));
                printf("l? ");
            }
        }
    }

    printf("%s\n", filename);

    return 0;
}

@@ -330,7 +351,7 @@ static int listfile_long(const char *path, int flags)

static int listfile(const char *dirname, const char *filename, int flags)
{
    if ((flags & (LIST_LONG | LIST_SIZE)) == 0) {
    if ((flags & (LIST_LONG | LIST_SIZE | LIST_CLASSIFY)) == 0) {
        printf("%s\n", filename);
        return 0;
    }
@@ -480,6 +501,7 @@ int ls_main(int argc, char **argv)
                    case 'R': flags |= LIST_RECURSIVE; break;
                    case 'd': flags |= LIST_DIRECTORIES; break;
                    case 'a': flags |= LIST_ALL; break;
                    case 'F': flags |= LIST_CLASSIFY; break;
                    default:
                        fprintf(stderr, "%s: Unknown option '-%c'. Aborting.\n", "ls", arg[0]);
                        exit(1);