1 #include <stdlib.h>
2 #include "config.h"
3 #include "global.h"
4 #include "execute.h"
5 
6 /* prefix.c */
7 
8 static void     make_nn_prefix(int flag, FILE * f);
9 
10 
11 extern char    *home_directory;
12 extern char    *news_directory;
13 extern char    *news_lib_directory;
14 extern char    *master_directory;
15 extern char    *help_directory;
16 extern char    *bin_directory;
17 extern char    *db_directory;
18 extern char    *db_data_directory;
19 extern char    *tmp_directory;
20 extern char    *log_file;
21 
22 #define SHELL_PREFIX	0x01
23 #define FULL_PREFIX	0x02
24 #define CONF_PREFIX	0x04
25 
26 static void
make_nn_prefix(int flag,FILE * f)27 make_nn_prefix(int flag, FILE * f)
28 {
29     char            nl;
30 
31     nl = (flag & CONF_PREFIX) ? TAB : NL;
32 
33     if (flag & SHELL_PREFIX) {
34 
35 #ifdef AVOID_SHELL_EXEC
36 	fprintf(f, ":\n");
37 #else
38 	fprintf(f, "#!%s\n", SHELL);
39 #endif
40 
41 #ifdef PUT_TIMESTAMP_IN_SCRIPTS
42 	fprintf(f, "\n# Generated by nn release %s at %s\n\n",
43 		version_id, date_time((time_t) 0));
44 #else
45 	fprintf(f, "\n# Generated by nn release %s\n\n", version_id);
46 #endif
47     }
48     fprintf(f, "VERSION=\"%s\"\n", version_id);
49 
50 #ifndef OLD_AWK
51 #define OLD_AWK "awk"
52 #endif
53 
54     fprintf(f, "AWK=\"%s\"\n", OLD_AWK);
55 
56 #ifdef NOV
57     fprintf(f, "NOV=true%c", nl);
58 #else
59     fprintf(f, "NOV=false%c", nl);
60 #endif
61 
62 #ifdef NNTP
63     fprintf(f, "NNTP=true%c", nl);
64     fprintf(f, "ACTIVE=%s/ACTIVE\n", db_directory);
65 
66 #ifndef CACHE_DIRECTORY
67 #define CACHE_DIRECTORY ""
68 #endif
69 
70     fprintf(f, "NNTPCACHE=%s\n", CACHE_DIRECTORY);
71 #else
72     fprintf(f, "NNTP=false%c", nl);
73     fprintf(f, "ACTIVE=%s/active\n", news_lib_directory);
74 #endif
75 
76     fprintf(f, "LOG=%s\n", log_file);
77     fprintf(f, "TMP=${TMPDIR-%s}\n", tmp_directory);
78     fprintf(f, "DB=%s\n", db_directory);
79     fprintf(f, "BIN=%s\n", bin_directory);
80     fprintf(f, "LIB=%s\n", lib_directory);
81 
82     if (flag & (FULL_PREFIX | CONF_PREFIX)) {
83 	fprintf(f, "RECMAIL=\"%s\"\n", REC_MAIL);
84 	fprintf(f, "SPOOL=%s\n", news_directory);
85 	fprintf(f, "NLIB=%s\n", news_lib_directory);
86 	fprintf(f, "MASTER=%s\n", master_directory);
87 	fprintf(f, "HELP=%s\n", help_directory);
88 	fprintf(f, "DBDATA=\"%s\"\n", db_data_directory ? db_data_directory : "");
89 
90 #ifdef DB_LONG_NAMES
91 	fprintf(f, "DBSHORTNAME=false\n");
92 #else
93 	fprintf(f, "DBSHORTNAME=true\n");
94 #endif
95 
96 	fprintf(f, "OWNER=%s%c", OWNER, nl);
97 	fprintf(f, "GROUP=%s\n", GROUP);
98     }
99 
100 #ifdef AUTHORIZE
101     fprintf(f, "AUTH=true\n");
102 #else
103     fprintf(f, "AUTH=false\n");
104 #endif
105 
106     if (flag & FULL_PREFIX) {
107 	fprintf(f, "UMAN_DIR=\"%s\"\n", USER_MAN_DIR);
108 	fprintf(f, "UMAN_SECT=\"%s\"\n", USER_MAN_SECTION);
109 
110 	fprintf(f, "SMAN_DIR=\"%s\"\n", SYS_MAN_DIR);
111 	fprintf(f, "SMAN_SECT=\"%s\"\n", SYS_MAN_SECTION);
112 
113 	fprintf(f, "DMAN_DIR=\"%s\"\n", DAEMON_MAN_DIR);
114 	fprintf(f, "DMAN_SECT=\"%s\"\n", DAEMON_MAN_SECTION);
115     }
116     if (flag & SHELL_PREFIX)
117 	fprintf(f, "\n# ---- end of prefix\n\n");
118 }
119 
120 int
main(int argc,char * argv[])121 main(int argc, char *argv[])
122 {
123     if (argc != 2)
124 	exit(2);
125 
126     /* init_global(I_AM_MASTER); */
127     init_global();
128 
129     switch (argv[1][0]) {
130 	case 'f':
131 	    make_nn_prefix(SHELL_PREFIX | FULL_PREFIX, stdout);
132 	    break;
133 	case 'p':
134 	    make_nn_prefix(SHELL_PREFIX, stdout);
135 	    break;
136 	case 'c':
137 	    make_nn_prefix(CONF_PREFIX, stdout);
138 	    break;
139 	default:
140 	    exit(1);
141     }
142     exit(0);
143 }
144 
145 void
nn_exit(int n)146 nn_exit(int n)
147 {
148     exit(n);
149 }
150 
151 void
nn_exitmsg(void)152 nn_exitmsg(void)
153 {
154     exit(0);
155 }
156 
157 #ifdef HAVE_JOBCONTROL
158 int
suspend_nn(void)159 suspend_nn(void)
160 {
161     return 0;
162 }
163 
164 #endif
165 
166 /* dummy function */
167 void
msg(void)168 msg(void)
169 {
170 }
171