From 4aca87515a5083ae0e31ce3177189fd43b6d05ac Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 3 Jan 2015 13:58:15 +0100 Subject: patch to Vanilla Tomato 1.28 --- release/src/router/busybox/libbb/wfopen_input.c | 60 +++++++++++-------------- 1 file changed, 27 insertions(+), 33 deletions(-) (limited to 'release/src/router/busybox/libbb/wfopen_input.c') 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 * - * 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 -#include -#include +#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; +} -- cgit v1.2.3-54-g00ecf