56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* vi: set sw=4 ts=4: */
 | |
| /*
 | |
|  * wfopen_input implementation for busybox
 | |
|  *
 | |
|  * Copyright (C) 2003  Manuel Novoa III  <mjn3@codepoet.org>
 | |
|  *
 | |
|  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
 | |
|  */
 | |
| #include "libbb.h"
 | |
| 
 | |
| /* 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.
 | |
|  */
 | |
| 
 | |
| FILE* FAST_FUNC fopen_or_warn_stdin(const char *filename)
 | |
| {
 | |
| 	FILE *fp = stdin;
 | |
| 
 | |
| 	if (filename != bb_msg_standard_input
 | |
| 	 && NOT_LONE_DASH(filename)
 | |
| 	) {
 | |
| 		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;
 | |
| }
 | |
| 
 | |
| int FAST_FUNC xopen_stdin(const char *filename)
 | |
| {
 | |
| 	int fd = open_or_warn_stdin(filename);
 | |
| 	if (fd >= 0)
 | |
| 		return fd;
 | |
| 	xfunc_die();  /* We already output an error message. */
 | |
| }
 | 
