diff --git a/ls.c b/ls.c index 8d2c3f6..03765c6 100644 --- a/ls.c +++ b/ls.c @@ -24,6 +24,7 @@ struct entry { ino_t ino; }; +static int Aflag = 0; static int aflag = 0; static int cflag = 0; static int dflag = 0; @@ -204,8 +205,11 @@ lsdir(const char *path) } while ((d = readdir(dp))) { - if (d->d_name[0] == '.' && !aflag) + if (d->d_name[0] == '.' && !aflag && !Aflag) continue; + else if (Aflag) + if (strcmp(d->d_name, ".") == 0 || strcmp(d->d_name, "..") == 0) + continue; if (Uflag){ mkent(&ent, d->d_name, Fflag || lflag || pflag || iflag, Lflag); output(&ent); @@ -269,6 +273,9 @@ main(int argc, char *argv[]) case '1': /* ignore */ break; + case 'A': + Aflag = 1; + break; case 'a': aflag = 1; break;