diff options
-rw-r--r-- | fetchmail.man | 7 | ||||
-rw-r--r-- | rcfile_y.y | 12 |
2 files changed, 14 insertions, 5 deletions
diff --git a/fetchmail.man b/fetchmail.man index 27bdc69d..255853cb 100644 --- a/fetchmail.man +++ b/fetchmail.man @@ -420,8 +420,11 @@ option does not work with ETRN. .B \-f pathname, --fetchmailrc pathname Specify a non-default name for the .I .fetchmailrc -run control file. Unless the --version option is also on, the file must have -permissions no more open than 0600 (u=rw,g=,o=) or else be /dev/null. +run control file. The pathname argument must be either "-" (a single +dash, meaning to read the configuration from standard input) or a +filename. Unless the --version option is also on, a named file +argument must have permissions no more open than 0600 (u=rw,g=,o=) or +else be /dev/null. .TP .B \-i pathname, --idfile pathname (Keyword: idfile) @@ -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); } |