sync from MirBSD
[alioth/cvs.git] / src / version.c
1 /*
2  * Copyright (C) 1986-2005 The Free Software Foundation, Inc.
3  *
4  * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot <http://ximbiot.com>,
5  *                                  and others.
6  *
7  * Portions Copyright (C) 1994 david d `zoo' zuhn
8  * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk
9  * Portions Copyright (C) 1989-1992, Brian Berliner
10  * 
11  * You may distribute under the terms of the GNU General Public License as
12  * specified in the README file that comes with this  CVS source distribution.
13  * 
14  * version.c - the CVS version number
15  */
16
17 #include "cvs.h"
18
19 __RCSID("$MirOS: src/gnu/usr.bin/cvs/src/version.c,v 1.4 2017/11/18 23:04:57 tg Exp $");
20
21 static const
22 #ifdef CLIENT_SUPPORT
23 #ifdef SERVER_SUPPORT
24 char *config_string = " (client/server)\n";
25 #else
26 char *config_string = " (client)\n";
27 #endif
28 #else
29 #ifdef SERVER_SUPPORT
30 char *config_string = " (server)\n";
31 #else
32 char *config_string = "\n";
33 #endif
34 #endif
35
36
37
38 static const char *const version_usage[] =
39 {
40     "Usage: %s %s\n",
41     NULL
42 };
43
44
45
46 /*
47  * Output a version string for the client and server.
48  *
49  * This function will output the simple version number (for the '--version'
50  * option) or the version numbers of the client and server (using the 'version'
51  * command).
52  */
53 int
54 version (int argc, char **argv)
55 {
56     int err = 0;
57
58     if (argc == -1)
59         usage (version_usage);
60
61     if (current_parsed_root && current_parsed_root->isremote)
62         (void) fputs ("Client: ", stdout);
63
64     /* Having the year here is a good idea, so people have
65        some idea of how long ago their version of CVS was
66        released.  */
67     (void) fputs (PACKAGE_STRING, stdout);
68     (void) fputs (config_string, stdout);
69
70 #ifdef CLIENT_SUPPORT
71     if (current_parsed_root && current_parsed_root->isremote)
72     {
73         (void) fputs ("Server: ", stdout);
74         start_server ();
75         if (supported_request ("version"))
76             send_to_server ("version\012", 0);
77         else
78         {
79             send_to_server ("noop\012", 0);
80             fputs ("(unknown)\n", stdout);
81         }
82         err = get_responses_and_close ();
83     }
84 #endif
85     return err;
86 }