xref: /dflybsd-src/contrib/cvs-1.12/src/version.c (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
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