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
feat: capability list to enable greater flexibility of devices
[lunaix-os.git]
/
lunaix-os
/
usr
/
cat
/
main.c
diff --git
a/lunaix-os/usr/cat/main.c
b/lunaix-os/usr/cat/main.c
index 0a15f8cdc2fa1bd851b33523dfef7e79c189ca02..9f0d35b54b9ed463a9bce190304812b0733d0e62 100644
(file)
--- a/
lunaix-os/usr/cat/main.c
+++ b/
lunaix-os/usr/cat/main.c
@@
-11,14
+11,26
@@
int
main(int argc, const char* argv[])
{
int fd = 0;
main(int argc, const char* argv[])
{
int fd = 0;
- unsigned int size = 0;
+ int size = 0;
+ struct file_stat stat;
for (int i = 1; i < argc; i++) {
fd = open(argv[i], FO_RDONLY);
for (int i = 1; i < argc; i++) {
fd = open(argv[i], FO_RDONLY);
+
if (fd < 0) {
printf("open failed: %s (error: %d)", argv[i], fd);
continue;
}
if (fd < 0) {
printf("open failed: %s (error: %d)", argv[i], fd);
continue;
}
+ if (fstat(fd, &stat) < 0) {
+ printf("fail to get stat %d\n", errno);
+ return 1;
+ }
+
+ if (!(stat.mode & F_MFILE)) {
+ printf("%s is a directory", argv[i]);
+ return 1;
+ }
+
do {
size = read(fd, buffer, BUFSIZE);
write(stdout, buffer, size);
do {
size = read(fd, buffer, BUFSIZE);
write(stdout, buffer, size);