git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Multiuser, Capabilities and Access Controls (#54)
[lunaix-os.git]
/
lunaix-os
/
usr
/
ls.c
diff --git
a/lunaix-os/usr/ls.c
b/lunaix-os/usr/ls.c
index caea32d8f63c481b14da836ed616dad61a603a69..3fdfc6eb772475633321d1543e2476cefe98a0d7 100644
(file)
--- a/
lunaix-os/usr/ls.c
+++ b/
lunaix-os/usr/ls.c
@@
-13,27
+13,43
@@
main(int argc, const char* argv[])
DIR* dir = opendir(path);
if (!dir) {
DIR* dir = opendir(path);
if (!dir) {
-
return errno
;
+
goto done
;
}
struct dirent* dent;
}
struct dirent* dent;
+ int i = 0, sz;
+ char bf[100];
while ((dent = readdir(dir))) {
if (dent->d_type == DT_DIR) {
while ((dent = readdir(dir))) {
if (dent->d_type == DT_DIR) {
-
printf(" %s/\n
", dent->d_name);
+
sz = snprintf(bf, 100, "%s/
", dent->d_name);
} else if (dent->d_type == DT_SYMLINK) {
} else if (dent->d_type == DT_SYMLINK) {
-
printf(" %s@\n
", dent->d_name);
+
sz = snprintf(bf, 100, "%s@
", dent->d_name);
} else {
} else {
-
printf(" %s\n
", dent->d_name);
+
sz = snprintf(bf, 100, "%s
", dent->d_name);
}
}
+
+ bf[sz] = 0;
+ printf("%-15s ", bf);
+
+ i++;
+ if ((i % 4) == 0) {
+ printf("\n");
+ }
+ }
+
+ if ((i % 4) != 0) {
+ printf("\n");
}
}
+done:
int err = errno;
if (err) {
printf("failed: %d\n",err);
}
int err = errno;
if (err) {
printf("failed: %d\n",err);
}
- closedir(dir);
+ if (dir)
+ closedir(dir);
return err;
}
\ No newline at end of file
return err;
}
\ No newline at end of file