Start 1.33.0 development cycle
[oweals/busybox.git] / libbb / bb_cat.c
1 /* vi: set sw=4 ts=4: */
2 /*
3  * Copyright (C) 2003  Manuel Novoa III  <mjn3@codepoet.org>
4  *
5  * Licensed under GPLv2, see file LICENSE in this source tree.
6  */
7 //kbuild:lib-y += bb_cat.o
8
9 #include "libbb.h"
10
11 int FAST_FUNC bb_cat(char **argv)
12 {
13         int fd;
14         int retval = EXIT_SUCCESS;
15
16         if (!*argv)
17                 argv = (char**) &bb_argv_dash;
18
19         do {
20                 fd = open_or_warn_stdin(*argv);
21                 if (fd >= 0) {
22                         /* This is not a xfunc - never exits */
23                         off_t r = bb_copyfd_eof(fd, STDOUT_FILENO);
24                         if (fd != STDIN_FILENO)
25                                 close(fd);
26                         if (r >= 0)
27                                 continue;
28                 }
29                 retval = EXIT_FAILURE;
30         } while (*++argv);
31
32         return retval;
33 }