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