aboutsummaryrefslogtreecommitdiffstats
path: root/rcfile_y.y
diff options
context:
space:
mode:
Diffstat (limited to 'rcfile_y.y')
-rw-r--r--rcfile_y.y12
1 files changed, 9 insertions, 3 deletions
diff --git a/rcfile_y.y b/rcfile_y.y
index 12851030..3170ccca 100644
--- a/rcfile_y.y
+++ b/rcfile_y.y
@@ -357,10 +357,14 @@ int prc_filecheck(const char *pathname, const flag securecheck)
errno = 0;
- /* special cases useful for debugging purposes */
+ /* special case useful for debugging purposes */
if (strcmp("/dev/null", pathname) == 0)
return(PS_SUCCESS);
+ /* pass through the special name for stdin */
+ if (strcmp("-", pathname) == 0)
+ return(PS_SUCCESS);
+
/* the run control file must have the same uid as the REAL uid of this
process, it must have permissions no greater than 600, and it must not
be a symbolic link. We check these conditions here. */
@@ -413,8 +417,10 @@ int prc_parse_file (const char *pathname, const flag securecheck)
if (errno == ENOENT)
return(PS_SUCCESS);
- /* Open the configuration and feed it to the lexer. */
- if ((yyin = fopen(pathname,"r")) == (FILE *)NULL) {
+ /* Open the configuration file and feed it to the lexer. */
+ if (strcmp(pathname, "-") == 0)
+ yyin = stdin;
+ else if ((yyin = fopen(pathname,"r")) == (FILE *)NULL) {
error(0, errno, "open: %s", pathname);
return(PS_IOERR);
}