074296bd3a79058550b1b7649f9b7eb88734bb94
[debian/amanda] / common-src / genversion.c
1 /*
2  * Amanda, The Advanced Maryland Automatic Network Disk Archiver
3  * Copyright (c) 1991-1999 University of Maryland at College Park
4  * All Rights Reserved.
5  *
6  * Permission to use, copy, modify, distribute, and sell this software and its
7  * documentation for any purpose is hereby granted without fee, provided that
8  * the above copyright notice appear in all copies and that both that
9  * copyright notice and this permission notice appear in supporting
10  * documentation, and that the name of U.M. not be used in advertising or
11  * publicity pertaining to distribution of the software without specific,
12  * written prior permission.  U.M. makes no representations about the
13  * suitability of this software for any purpose.  It is provided "as is"
14  * without express or implied warranty.
15  *
16  * U.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL U.M.
18  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
20  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
21  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22  *
23  * Authors: the Amanda Development Team.  Its members are listed in a
24  * file named AUTHORS, in the root directory of this distribution.
25  */
26 /*
27  * $Id: genversion.c,v 1.31 2003/10/07 17:09:46 martinea Exp $
28  *
29  * dump the current Amanda version info
30  */
31 #include "amanda.h"
32 #include "version.h"
33 #include "genversion.h"
34
35 #define LMARGIN         6
36 #define RMARGIN         70
37
38 static int linelen;
39
40 #define startline(title)        printf("  \"%-*s", LMARGIN, title); linelen = 0
41 #define endline()               printf("\\n\",\n")
42
43 static void prstr P((const char *));
44 static void prvar P((const char *, const char *));
45 int main P((void));
46
47 /* Print a string */
48 static void
49 prstr(string)
50     const char *string;
51 {
52     size_t len = strlen(string) + 1;
53
54     /*
55      * If this string overflows this line, and there's other stuff
56      * on the line, create a new one.
57      */
58     if (linelen > 0 && linelen + len >= RMARGIN - LMARGIN) {
59         endline();
60         startline("");
61     }
62     printf(" %s", string);
63     linelen += len;
64 }
65
66 static char *buf = NULL;
67 static size_t buf_len = 0;
68
69 /* Print a text variable */
70 static void
71 prvar(var, val)
72     const char *var, *val;
73 {
74     size_t new_len;
75
76     new_len = strlen(var)
77               + sizeof("=\\\"")
78               + strlen(val)
79               + sizeof("\\\"")
80               + 1;
81     if(new_len > buf_len) {
82         free(buf);
83         buf_len = new_len;
84         buf = malloc(new_len);          /* let it die if malloc() fails */
85     }
86     sprintf(buf, "%s=\\\"%s\\\"", var, val);    /* safe */
87     prstr(buf);
88 }
89
90 /* Print a undef variable */
91 static void
92 prundefvar(var)
93     const char *var;
94 {
95     size_t new_len;
96
97     new_len = strlen(var)
98               + sizeof("=UNDEF")
99               + 1;
100     if(new_len > buf_len) {
101         free(buf);
102         buf_len = new_len;
103         buf = malloc(new_len);          /* let it die if malloc() fails */
104     }
105     sprintf(buf, "%s=UNDEF", var);      /* safe */
106     prstr(buf);
107 }
108
109 /* Print a numeric variable */
110 static void
111 prnum(var, val)
112     const char *var;
113     long val;
114 {
115     static char number[NUM_STR_SIZE];
116     size_t new_len;
117
118     snprintf(number, sizeof(number), "%ld", val);
119     new_len = strlen(var)
120               + sizeof("=")
121               + strlen(number)
122               + 1;
123     if(new_len > buf_len) {
124         free(buf);
125         buf_len = new_len;
126         buf = malloc(new_len);          /* let it die if malloc() fails */
127     }
128     sprintf(buf, "%s=%s", var, number);         /* safe */
129     prstr(buf);
130 }
131
132 int
133 main()
134 {
135     const char *v;
136     char *verstr;
137     size_t v_len;
138
139     printf("/* version.c - generated by genversion.c - DO NOT EDIT! */\n");
140     printf("const char * const version_info[] = {\n");
141
142     startline("build:");
143     v = version();
144     v_len = sizeof("Amanda-") + strlen(v) + 1;
145     verstr = malloc(v_len);
146     sprintf(verstr, "Amanda-%s", v);            /* safe */
147     prvar("VERSION", verstr);
148     free(verstr);
149
150 #ifdef BUILT_DATE
151     prvar("BUILT_DATE", BUILT_DATE);
152 #else
153     prundefvar("BUILT_DATE");
154 #endif
155
156 #ifdef BUILT_MACH
157     prvar("BUILT_MACH", BUILT_MACH);
158 #else
159     prundefvar("BUILT_MACH");
160 #endif
161
162 #ifdef CC
163     prvar("CC", CC);
164 #else
165     prundefvar("CC");
166 #endif
167
168 #ifdef CC
169     prvar("CONFIGURE_COMMAND", CONFIGURE_COMMAND);
170 #else
171     prundefvar("CONFIGURE_COMMAND");
172 #endif
173
174     endline();
175
176     startline("paths:");
177
178     prvar("bindir", bindir);
179     prvar("sbindir", sbindir);
180     prvar("libexecdir", libexecdir);
181     prvar("mandir", mandir);
182     prvar("AMANDA_TMPDIR", AMANDA_TMPDIR);
183 #ifdef AMANDA_DBGDIR
184     prvar("AMANDA_DBGDIR", AMANDA_DBGDIR);
185 #else
186     prundefvar("AMANDA_DBGDIR");
187 #endif
188     prvar("CONFIG_DIR", CONFIG_DIR);
189
190 #ifdef DEV_PREFIX
191     prvar("DEV_PREFIX", DEV_PREFIX);
192 #else
193     prundefvar("DEV_PREFIX");
194 #endif
195
196 #ifdef RDEV_PREFIX
197     prvar("RDEV_PREFIX", RDEV_PREFIX);
198 #else
199     prundefvar("RDEV_PREFIX");
200 #endif
201
202 #ifdef DUMP
203     prvar("DUMP", DUMP);
204     prvar("RESTORE", RESTORE);
205 #else
206     prundefvar("DUMP");
207     prundefvar("RESTORE");
208 #endif
209
210 #ifdef VDUMP
211     prvar("VDUMP", VDUMP);
212     prvar("VRESTORE", VRESTORE);
213 #else
214     prundefvar("VDUMP");
215     prundefvar("VRESTORE");
216 #endif
217
218 #ifdef XFSDUMP
219     prvar("XFSDUMP", XFSDUMP);
220     prvar("XFSRESTORE", XFSRESTORE);
221 #else
222     prundefvar("XFSDUMP");
223     prundefvar("XFSRESTORE");
224 #endif
225
226 #ifdef VXDUMP
227     prvar("VXDUMP", VXDUMP);
228     prvar("VXRESTORE", VXRESTORE);
229 #else
230     prundefvar("VXDUMP");
231     prundefvar("VXRESTORE");
232 #endif
233
234 #ifdef SAMBA_CLIENT
235     prvar("SAMBA_CLIENT", SAMBA_CLIENT);
236 #else
237     prundefvar("SAMBA_CLIENT");
238 #endif
239
240 #ifdef GNUTAR
241     prvar("GNUTAR", GNUTAR);
242 #else
243     prundefvar("GNUTAR");
244 #endif
245
246 #ifdef COMPRESS_PATH
247     prvar("COMPRESS_PATH", COMPRESS_PATH);
248 #else
249     prundefvar("COMPRESS_PATH");
250 #endif
251
252 #ifdef UNCOMPRESS_PATH
253     prvar("UNCOMPRESS_PATH", UNCOMPRESS_PATH);
254 #else
255     prundefvar("UNCOMPRESS_PATH");
256 #endif
257
258 #ifdef LPRCMD
259     prvar("LPRCMD", LPRCMD);
260 #else
261     prundefvar(" LPRCMD");
262 #endif
263
264     prvar("MAILER", MAILER);
265
266 #ifdef GNUTAR_LISTED_INCREMENTAL_DIR
267     prvar("listed_incr_dir", GNUTAR_LISTED_INCREMENTAL_DIR);
268 #else
269     prundefvar("GNUTAR_LISTED_INCREMENTAL_DIR");
270 #endif
271     endline();
272
273     startline("defs:");
274
275     prvar("DEFAULT_SERVER", DEFAULT_SERVER);
276     prvar("DEFAULT_CONFIG", DEFAULT_CONFIG);
277     prvar("DEFAULT_TAPE_SERVER", DEFAULT_TAPE_SERVER);
278     prvar("DEFAULT_TAPE_DEVICE", DEFAULT_TAPE_DEVICE);
279
280 #ifdef AIX_BACKUP
281     prstr("AIX_BACKUP");
282 #endif
283
284 #ifdef AIX_TAPEIO
285     prstr("AIX_TAPEIO");
286 #endif
287
288 #ifdef BROKEN_VOID
289     prstr("BROKEN_VOID");
290 #endif
291
292 #ifdef DUMP_RETURNS_1
293     prstr("DUMP_RETURNS_1");
294 #endif
295
296 #ifdef HAVE_MMAP
297     prstr("HAVE_MMAP");
298 #endif
299
300 #ifndef HAVE_STRERROR
301     prstr("NEED_STRERROR");
302 #endif
303
304 #ifndef HAVE_STRSTR
305     prstr("NEED_STRSTR");
306 #endif
307
308 #ifdef HAVE_SYSVSHM
309     prstr("HAVE_SYSVSHM");
310 #endif
311
312 #ifdef USE_POSIX_FCNTL
313     prstr("LOCKING=POSIX_FCNTL");
314 #endif
315 #ifdef USE_FLOCK
316     prstr("LOCKING=FLOCK");
317 #endif
318 #ifdef USE_LOCKF
319     prstr("LOCKING=LOCKF");
320 #endif
321 #ifdef USE_LNLOCK
322     prstr("LOCKING=LNLOCK");
323 #endif
324 #if !defined(USE_POSIX_FCNTL) && !defined(USE_FLOCK) && !defined(USE_LOCK) && !defined(USE_LNLOCK)
325     prstr("LOCKING=**NONE**");
326 #endif
327
328 #ifdef STATFS_BSD
329     prstr("STATFS_BSD");
330 #endif
331
332 #ifdef STATFS_OSF1
333     prstr("STATFS_OSF1");
334 #endif
335
336 #ifdef STATFS_ULTRIX
337     prstr("STATFS_ULTRIX");
338 #endif
339
340 #ifdef SETPGRP_VOID
341     prstr("SETPGRP_VOID");
342 #endif
343
344 #ifdef ASSERTIONS
345     prstr("ASSERTIONS");
346 #endif
347
348 #ifdef DEBUG_CODE
349     prstr("DEBUG_CODE");
350 #endif
351
352 #ifdef AMANDA_DEBUG_DAYS
353     prnum("AMANDA_DEBUG_DAYS", AMANDA_DEBUG_DAYS);
354 #endif
355
356 #ifdef BSD_SECURITY
357     prstr("BSD_SECURITY");
358 #endif
359
360 #ifdef KRB4_SECURITY
361     prstr("KRB4_SECURITY");
362 #endif
363
364 #ifdef KRB5_SECURITY
365     prstr("KRB5_SECURITY");
366 #endif
367
368 #ifdef RSH_SECURITY
369     prstr("RSH_SECURITY");
370 #endif
371
372 #ifdef USE_AMANDAHOSTS
373     prstr("USE_AMANDAHOSTS");
374 #endif
375
376 #ifdef USE_RUNDUMP
377     prstr("USE_RUNDUMP");
378 #endif
379
380     prvar("CLIENT_LOGIN", CLIENT_LOGIN);
381
382 #ifdef FORCE_USERID
383     prstr("FORCE_USERID");
384 #endif
385
386 #ifdef USE_VERSION_SUFFIXES
387     prstr("USE_VERSION_SUFFIXES");
388 #endif
389
390 #ifdef HAVE_GZIP
391     prstr("HAVE_GZIP");
392 #endif
393
394 #ifdef COMPRESS_SUFFIX
395     prvar("COMPRESS_SUFFIX", COMPRESS_SUFFIX);
396 #endif
397
398 #ifdef COMPRESS_FAST_OPT
399     prvar("COMPRESS_FAST_OPT", COMPRESS_FAST_OPT);
400 #endif
401
402 #ifdef COMPRESS_BEST_OPT
403     prvar("COMPRESS_BEST_OPT", COMPRESS_BEST_OPT);
404 #endif
405
406 #ifdef UNCOMPRESS_OPT
407     prvar("UNCOMPRESS_OPT", UNCOMPRESS_OPT);
408 #endif
409
410     endline();
411
412     printf("  0\n};\n");
413
414     exit(0);
415 }