diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2015-01-03 13:58:15 +0100 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2015-01-03 13:58:15 +0100 |
commit | 4aca87515a5083ae0e31ce3177189fd43b6d05ac (patch) | |
tree | 7b1d9a31393ca090757dc6f0d3859b4fcd93f271 /release/src/router/busybox/libbb/wfopen_input.c | |
parent | 008d0be72b2f160382c6e880765e96b64a050c65 (diff) | |
download | tomato-4aca87515a5083ae0e31ce3177189fd43b6d05ac.tar.gz tomato-4aca87515a5083ae0e31ce3177189fd43b6d05ac.tar.bz2 |
patch to Vanilla Tomato 1.28
Diffstat (limited to 'release/src/router/busybox/libbb/wfopen_input.c')
-rw-r--r-- | release/src/router/busybox/libbb/wfopen_input.c | 60 |
1 files changed, 27 insertions, 33 deletions
diff --git a/release/src/router/busybox/libbb/wfopen_input.c b/release/src/router/busybox/libbb/wfopen_input.c index bff6606b..46ff7a6d 100644 --- a/release/src/router/busybox/libbb/wfopen_input.c +++ b/release/src/router/busybox/libbb/wfopen_input.c @@ -4,51 +4,45 @@ * * Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org> * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ /* A number of applets need to open a file for reading, where the filename * is a command line arg. Since often that arg is '-' (meaning stdin), * we avoid testing everywhere by consolidating things in this routine. - * - * Note: We also consider "" to main stdin (for 'cmp' at least). */ -#include <stdio.h> -#include <sys/stat.h> -#include <libbb.h> +#include "libbb.h" -FILE *bb_wfopen_input(const char *filename) +FILE* FAST_FUNC fopen_or_warn_stdin(const char *filename) { FILE *fp = stdin; - if ((filename != bb_msg_standard_input) - && filename[0] && ((filename[0] != '-') || filename[1]) + if (filename != bb_msg_standard_input + && NOT_LONE_DASH(filename) ) { -#if 0 - /* This check shouldn't be necessary for linux, but is left - * here disabled just in case. */ - struct stat stat_buf; - if (is_directory(filename, 1, &stat_buf)) { - bb_error_msg("%s: Is a directory", filename); - return NULL; - } -#endif - fp = bb_wfopen(filename, "r"); + fp = fopen_or_warn(filename, "r"); } - return fp; } + +FILE* FAST_FUNC xfopen_stdin(const char *filename) +{ + FILE *fp = fopen_or_warn_stdin(filename); + if (fp) + return fp; + xfunc_die(); /* We already output an error message. */ +} + +int FAST_FUNC open_or_warn_stdin(const char *filename) +{ + int fd = STDIN_FILENO; + + if (filename != bb_msg_standard_input + && NOT_LONE_DASH(filename) + ) { + fd = open_or_warn(filename, O_RDONLY); + } + + return fd; +} |