--- ls.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/ls.c b/ls.c index 0c88b8c..3611a87 100644 --- a/ls.c +++ b/ls.c _AT_@ -359,7 +359,7 @@ usage(void) int main(int argc, char *argv[]) { - struct entry *ent, **dents, **fents; + struct entry ent, *dents, *fents; size_t i, ds, fs; ARGBEGIN { _AT_@ -439,26 +439,24 @@ main(int argc, char *argv[]) case 0: /* fallthrough */ *--argv = ".", ++argc; case 1: - ent = emalloc(sizeof(*ent)); - mkent(ent, argv[0], 1, Hflag || Lflag); - ls("", ent, (!dflag && S_ISDIR(ent->mode)) || - ((S_ISLNK(ent->mode) && S_ISDIR(ent->tmode)) && + mkent(&ent, argv[0], 1, Hflag || Lflag); + ls("", &ent, (!dflag && S_ISDIR(ent.mode)) || + ((S_ISLNK(ent.mode) && S_ISDIR(ent.tmode)) && ((Hflag || Lflag) || !(dflag || Fflag || lflag)))); break; default: for (i = ds = fs = 0, fents = dents = NULL; i < argc; ++i) { - ent = emalloc(sizeof(*ent)); - mkent(ent, argv[i], 1, Hflag || Lflag); + mkent(&ent, argv[i], 1, Hflag || Lflag); - if ((!dflag && S_ISDIR(ent->mode)) || - ((S_ISLNK(ent->mode) && S_ISDIR(ent->tmode)) && + if ((!dflag && S_ISDIR(ent.mode)) || + ((S_ISLNK(ent.mode) && S_ISDIR(ent.tmode)) && ((Hflag || Lflag) || !(dflag || Fflag || lflag)))) { - dents = ereallocarray(dents, ++ds, sizeof(ent)); - dents[ds - 1] = ent; + dents = ereallocarray(dents, ++ds, sizeof(*dents)); + memcpy(&dents[ds - 1], &ent, sizeof(ent)); } else { - fents = ereallocarray(fents, ++fs, sizeof(ent)); - fents[fs - 1] = ent; + fents = ereallocarray(fents, ++fs, sizeof(*fents)); + memcpy(&fents[fs - 1], &ent, sizeof(ent)); } } _AT_@ -466,11 +464,13 @@ main(int argc, char *argv[]) qsort(dents, ds, sizeof(ent), entcmp); for (i = 0; i < fs; ++i) - ls("", fents[i], 0); + ls("", &fents[i], 0); + free(fents); if (fs && ds) putchar('\n'); for (i = 0; i < ds; ++i) - ls("", dents[i], 1); + ls("", &dents[i], 1); + free(dents); } return fshut(stdout, "<stdout>"); -- 2.6.2Received on Sun Nov 01 2015 - 18:12:25 CET
This archive was generated by hypermail 2.3.0 : Sun Nov 01 2015 - 18:24:12 CET