`../etc/ashd`. For example, then, if *PATH* is
`/usr/local/bin:/bin:/usr/bin`, the directories `/usr/local/etc/ashd`,
`/etc/ashd` and `/usr/etc/ashd` are searched for `patplex.rc`, in that
-order. Only the first file found is used, should there exist several.
+order. Only the first file found is used, should there exist
+several. If the given 'CONFIGFILE' contains any slashes, it is opened
+by that exact name. Otherwise, it is searched for in the same manner
+as the global configuration file.
Should the global and the given configuration files conflict, the
directives from the given file take precedence.
{
int c;
int nodef;
- char *gcf;
+ char *gcf, *lcf;
struct hthead *req;
int fd;
free(gcf);
}
}
- if((lconfig = readconfig(argv[optind])) == NULL) {
- flog(LOG_ERR, "could not read `%s'", argv[optind]);
+ if((strchr(lcf = argv[optind], '/')) == NULL) {
+ if((lcf = findstdconf(sprintf3("ashd/%s", lcf))) == NULL) {
+ flog(LOG_ERR, "could not find requested configuration file `%s'", argv[optind]);
+ exit(1);
+ }
+ }
+ if((lconfig = readconfig(lcf)) == NULL) {
+ flog(LOG_ERR, "could not read `%s'", lcf);
exit(1);
}
signal(SIGCHLD, chldhandler);
signal(SIGPIPE, sighandler);
while(1) {
if(reload) {
- reloadconf(argv[optind]);
+ reloadconf(lcf);
reload = 0;
}
if((fd = recvreq(0, &req)) < 0) {