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