1 /*
2    BAREOS® - Backup Archiving REcovery Open Sourced
3 
4    Copyright (C) 2019-2019 Bareos GmbH & Co. KG
5 
6    This program is Free Software; you can redistribute it and/or
7    modify it under the terms of version three of the GNU Affero General Public
8    License as published by the Free Software Foundation and included
9    in the file LICENSE.
10 
11    This program is distributed in the hope that it will be useful, but
12    WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14    Affero General Public License for more details.
15 
16    You should have received a copy of the GNU Affero General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19    02110-1301, USA.
20 */
21 #include <stdio.h>
22 #include "include/host.h"
23 #include "version.h"
24 
25 #if !defined BAREOS_VERSION
26 #warning should define BAREOS_VERSION when building version.c
27 #define BAREOS_VERSION "x.y.z"
28 #endif
29 
30 #if !defined BAREOS_DATE
31 #warning should define BAREOS_DATE when building version.c
32 #define BAREOS_DATE "unknown date"
33 #endif
34 
35 #if !defined BAREOS_SHORT_DATE
36 #warning should define BAREOS_SHORT_DATE when building version.c
37 #define BAREOS_SHORT_DATE "unknown date"
38 #endif
39 
40 #if !defined BAREOS_PROG_DATE_TIME
41 #warning should define BAREOS_PROG_DATE_TIME when building version.c
42 #define BAREOS_PROG_DATE_TIME __DATE__ " " __TIME__
43 #endif
44 
45 #if !defined BAREOS_YEAR
46 #warning should define BAREOS_YEAR when building version.c
47 #define BAREOS_YEAR "2019"
48 #endif
49 
50 #if !defined BAREOS_BINARY_INFO
51 #define BAREOS_BINARY_INFO "self-compiled"
52 #endif
53 
54 #if !defined BAREOS_SERVICES_MESSAGE
55 #define BAREOS_SERVICES_MESSAGE                             \
56   "self-compiled binaries are UNSUPPORTED by bareos.com.\n" \
57   "Get official binaries and vendor support on https://www.bareos.com"
58 #endif
59 
60 #if !defined BAREOS_JOBLOG_MESSAGE
61 #define BAREOS_JOBLOG_MESSAGE \
62   "self-compiled: Get official binaries and vendor support on bareos.com"
63 #endif
64 
65 #define BAREOS_COPYRIGHT_MESSAGE_WITH_FSF_AND_PLANETS            \
66   "\n%s"                                                         \
67   "\n"                                                           \
68   "Copyright (C) 2013-%s Bareos GmbH & Co. KG\n"                 \
69   "Copyright (C) %d-2012 Free Software Foundation Europe e.V.\n" \
70   "Copyright (C) 2010-2017 Planets Communications B.V.\n"        \
71   "\n"                                                           \
72   "Version: %s (%s) %s %s %s\n"                                  \
73   "\n"
74 
75 
FormatCopyrightWithFsfAndPlanets(char * out,size_t len,int FsfYear)76 static void FormatCopyrightWithFsfAndPlanets(char* out, size_t len, int FsfYear)
77 {
78   snprintf(out, len, BAREOS_COPYRIGHT_MESSAGE_WITH_FSF_AND_PLANETS,
79            kBareosVersionStrings.ServicesMessage, kBareosVersionStrings.Year,
80            FsfYear, kBareosVersionStrings.Full, kBareosVersionStrings.Date,
81            HOST_OS, DISTNAME, DISTVER);
82 }
PrintCopyrightWithFsfAndPlanets(FILE * fh,int FsfYear)83 static void PrintCopyrightWithFsfAndPlanets(FILE* fh, int FsfYear)
84 {
85   fprintf(fh, BAREOS_COPYRIGHT_MESSAGE_WITH_FSF_AND_PLANETS,
86           kBareosVersionStrings.ServicesMessage, kBareosVersionStrings.Year,
87           FsfYear, kBareosVersionStrings.Full, kBareosVersionStrings.Date,
88           HOST_OS, DISTNAME, DISTVER);
89 }
90 
91 
92 #define BAREOS_COPYRIGHT_MESSAGE               \
93   "\n%s"                                       \
94   "\n"                                         \
95   "Copyright (C) %d-%s Bareos GmbH & Co. KG\n" \
96   "\n"                                         \
97   "Version: %s (%s) %s %s %s\n"                \
98   "\n"
99 
FormatCopyright(char * out,size_t len,int StartYear)100 static void FormatCopyright(char* out, size_t len, int StartYear)
101 {
102   snprintf(out, len, BAREOS_COPYRIGHT_MESSAGE,
103            kBareosVersionStrings.ServicesMessage, StartYear,
104            kBareosVersionStrings.Year, kBareosVersionStrings.Full,
105            kBareosVersionStrings.Date, HOST_OS, DISTNAME, DISTVER);
106 }
PrintCopyright(FILE * fh,int StartYear)107 static void PrintCopyright(FILE* fh, int StartYear)
108 {
109   fprintf(fh, BAREOS_COPYRIGHT_MESSAGE, kBareosVersionStrings.ServicesMessage,
110           StartYear, kBareosVersionStrings.Year, kBareosVersionStrings.Full,
111           kBareosVersionStrings.Date, HOST_OS, DISTNAME, DISTVER);
112 }
113 
114 const struct BareosVersionStrings kBareosVersionStrings = {
115     .Full = BAREOS_VERSION,
116     .Date = BAREOS_DATE,
117     .ShortDate = BAREOS_SHORT_DATE,
118     .ProgDateTime = BAREOS_PROG_DATE_TIME,
119     .FullWithDate = BAREOS_VERSION " (" BAREOS_DATE ")",
120     .Year = BAREOS_YEAR,
121     .BinaryInfo = BAREOS_BINARY_INFO,
122     .ServicesMessage = BAREOS_SERVICES_MESSAGE,
123     .JoblogMessage = BAREOS_JOBLOG_MESSAGE,
124     .FormatCopyrightWithFsfAndPlanets = FormatCopyrightWithFsfAndPlanets,
125     .PrintCopyrightWithFsfAndPlanets = PrintCopyrightWithFsfAndPlanets,
126     .FormatCopyright = FormatCopyright,
127     .PrintCopyright = PrintCopyright};
128