xref: /freebsd/contrib/sendmail/libsmutil/cf.c (revision 2fb4f839f3fc72ce2bab12f9ba4760f97f73e97f)
140266059SGregory Neil Shapiro /*
25dd76dd0SGregory Neil Shapiro  * Copyright (c) 2000-2002 Proofpoint, Inc. and its suppliers.
340266059SGregory Neil Shapiro  *	All rights reserved.
440266059SGregory Neil Shapiro  *
540266059SGregory Neil Shapiro  * By using this file, you agree to the terms and conditions set
640266059SGregory Neil Shapiro  * forth in the LICENSE file which can be found at the top level of
740266059SGregory Neil Shapiro  * the sendmail distribution.
840266059SGregory Neil Shapiro  *
940266059SGregory Neil Shapiro  */
1040266059SGregory Neil Shapiro 
1140266059SGregory Neil Shapiro #include <sendmail.h>
124313cc83SGregory Neil Shapiro SM_RCSID("@(#)$Id: cf.c,v 8.20 2013-11-22 20:51:50 ca Exp $")
1340266059SGregory Neil Shapiro #include <sendmail/pathnames.h>
1440266059SGregory Neil Shapiro 
1540266059SGregory Neil Shapiro /*
1640266059SGregory Neil Shapiro **  GETCFNAME -- return the name of the .cf file to use.
1740266059SGregory Neil Shapiro **
1840266059SGregory Neil Shapiro **	Some systems (e.g., NeXT) determine this dynamically.
1940266059SGregory Neil Shapiro **
2040266059SGregory Neil Shapiro **	For others: returns submit.cf or sendmail.cf depending
2140266059SGregory Neil Shapiro **		on the modes.
2240266059SGregory Neil Shapiro **
2340266059SGregory Neil Shapiro **	Parameters:
2440266059SGregory Neil Shapiro **		opmode -- operation mode.
2540266059SGregory Neil Shapiro **		submitmode -- submit mode.
2640266059SGregory Neil Shapiro **		cftype -- may request a certain cf file.
2740266059SGregory Neil Shapiro **		conffile -- if set, return it.
2840266059SGregory Neil Shapiro **
2940266059SGregory Neil Shapiro **	Returns:
3040266059SGregory Neil Shapiro **		name of .cf file.
3140266059SGregory Neil Shapiro */
3240266059SGregory Neil Shapiro 
3340266059SGregory Neil Shapiro char *
3440266059SGregory Neil Shapiro getcfname(opmode, submitmode, cftype, conffile)
3540266059SGregory Neil Shapiro 	int opmode;
3640266059SGregory Neil Shapiro 	int submitmode;
3740266059SGregory Neil Shapiro 	int cftype;
3840266059SGregory Neil Shapiro 	char *conffile;
3940266059SGregory Neil Shapiro {
4013bd1963SGregory Neil Shapiro #if NETINFO
4113bd1963SGregory Neil Shapiro 	char *cflocation;
425b0945b5SGregory Neil Shapiro #endif
4340266059SGregory Neil Shapiro 
4440266059SGregory Neil Shapiro 	if (conffile != NULL)
4540266059SGregory Neil Shapiro 		return conffile;
4640266059SGregory Neil Shapiro 
4740266059SGregory Neil Shapiro 	if (cftype == SM_GET_SUBMIT_CF ||
4840266059SGregory Neil Shapiro 	    ((submitmode != SUBMIT_UNKNOWN ||
4940266059SGregory Neil Shapiro 	      opmode == MD_DELIVER ||
5040266059SGregory Neil Shapiro 	      opmode == MD_ARPAFTP ||
5140266059SGregory Neil Shapiro 	      opmode == MD_SMTP) &&
5240266059SGregory Neil Shapiro 	     cftype != SM_GET_SENDMAIL_CF))
5340266059SGregory Neil Shapiro 	{
5440266059SGregory Neil Shapiro 		struct stat sbuf;
5594c01205SGregory Neil Shapiro 		static char cf[MAXPATHLEN];
5640266059SGregory Neil Shapiro 
5713bd1963SGregory Neil Shapiro #if NETINFO
5813bd1963SGregory Neil Shapiro 		cflocation = ni_propval("/locations", NULL, "sendmail",
5913bd1963SGregory Neil Shapiro 					"submit.cf", '\0');
6013bd1963SGregory Neil Shapiro 		if (cflocation != NULL)
6113bd1963SGregory Neil Shapiro 			(void) sm_strlcpy(cf, cflocation, sizeof cf);
6213bd1963SGregory Neil Shapiro 		else
6313bd1963SGregory Neil Shapiro #endif /* NETINFO */
64*2fb4f839SGregory Neil Shapiro 		/* "else" in #if code above */
65*2fb4f839SGregory Neil Shapiro 		{
6640266059SGregory Neil Shapiro 			(void) sm_strlcpyn(cf, sizeof cf, 2, _DIR_SENDMAILCF,
6740266059SGregory Neil Shapiro 					   "submit.cf");
68*2fb4f839SGregory Neil Shapiro 		}
6940266059SGregory Neil Shapiro 		if (cftype == SM_GET_SUBMIT_CF || stat(cf, &sbuf) == 0)
7040266059SGregory Neil Shapiro 			return cf;
7140266059SGregory Neil Shapiro 	}
7213bd1963SGregory Neil Shapiro #if NETINFO
7313bd1963SGregory Neil Shapiro 	cflocation = ni_propval("/locations", NULL, "sendmail",
7413bd1963SGregory Neil Shapiro 				"sendmail.cf", '\0');
7513bd1963SGregory Neil Shapiro 	if (cflocation != NULL)
7613bd1963SGregory Neil Shapiro 		return cflocation;
775b0945b5SGregory Neil Shapiro #endif
7840266059SGregory Neil Shapiro 	return _PATH_SENDMAILCF;
7940266059SGregory Neil Shapiro }
80