xref: /dflybsd-src/contrib/cvs-1.12/src/version.c (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
186d7f5d3SJohn Marino /*
286d7f5d3SJohn Marino  * Copyright (C) 1986-2005 The Free Software Foundation, Inc.
386d7f5d3SJohn Marino  *
486d7f5d3SJohn Marino  * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot <http://ximbiot.com>,
586d7f5d3SJohn Marino  *                                  and others.
686d7f5d3SJohn Marino  *
786d7f5d3SJohn Marino  * Portions Copyright (C) 1994 david d `zoo' zuhn
886d7f5d3SJohn Marino  * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk
986d7f5d3SJohn Marino  * Portions Copyright (C) 1989-1992, Brian Berliner
1086d7f5d3SJohn Marino  *
1186d7f5d3SJohn Marino  * You may distribute under the terms of the GNU General Public License as
1286d7f5d3SJohn Marino  * specified in the README file that comes with this  CVS source distribution.
1386d7f5d3SJohn Marino  *
1486d7f5d3SJohn Marino  * version.c - the CVS version number
1586d7f5d3SJohn Marino  */
1686d7f5d3SJohn Marino 
1786d7f5d3SJohn Marino #include "cvs.h"
1886d7f5d3SJohn Marino 
1986d7f5d3SJohn Marino #ifdef CLIENT_SUPPORT
2086d7f5d3SJohn Marino #ifdef SERVER_SUPPORT
2186d7f5d3SJohn Marino char *config_string = " (client/server)\n";
2286d7f5d3SJohn Marino #else
2386d7f5d3SJohn Marino char *config_string = " (client)\n";
2486d7f5d3SJohn Marino #endif
2586d7f5d3SJohn Marino #else
2686d7f5d3SJohn Marino #ifdef SERVER_SUPPORT
2786d7f5d3SJohn Marino char *config_string = " (server)\n";
2886d7f5d3SJohn Marino #else
2986d7f5d3SJohn Marino char *config_string = "\n";
3086d7f5d3SJohn Marino #endif
3186d7f5d3SJohn Marino #endif
3286d7f5d3SJohn Marino 
3386d7f5d3SJohn Marino 
3486d7f5d3SJohn Marino 
3586d7f5d3SJohn Marino static const char *const version_usage[] =
3686d7f5d3SJohn Marino {
3786d7f5d3SJohn Marino     "Usage: %s %s\n",
3886d7f5d3SJohn Marino     NULL
3986d7f5d3SJohn Marino };
4086d7f5d3SJohn Marino 
4186d7f5d3SJohn Marino 
4286d7f5d3SJohn Marino 
4386d7f5d3SJohn Marino /*
4486d7f5d3SJohn Marino  * Output a version string for the client and server.
4586d7f5d3SJohn Marino  *
4686d7f5d3SJohn Marino  * This function will output the simple version number (for the '--version'
4786d7f5d3SJohn Marino  * option) or the version numbers of the client and server (using the 'version'
4886d7f5d3SJohn Marino  * command).
4986d7f5d3SJohn Marino  */
5086d7f5d3SJohn Marino int
version(int argc,char ** argv)5186d7f5d3SJohn Marino version (int argc, char **argv)
5286d7f5d3SJohn Marino {
5386d7f5d3SJohn Marino     int err = 0;
5486d7f5d3SJohn Marino 
5586d7f5d3SJohn Marino     if (argc == -1)
5686d7f5d3SJohn Marino 	usage (version_usage);
5786d7f5d3SJohn Marino 
5886d7f5d3SJohn Marino     if (current_parsed_root && current_parsed_root->isremote)
5986d7f5d3SJohn Marino         (void) fputs ("Client: ", stdout);
6086d7f5d3SJohn Marino 
6186d7f5d3SJohn Marino     /* Having the year here is a good idea, so people have
6286d7f5d3SJohn Marino        some idea of how long ago their version of CVS was
6386d7f5d3SJohn Marino        released.  */
6486d7f5d3SJohn Marino     (void) fputs (PACKAGE_STRING, stdout);
6586d7f5d3SJohn Marino     (void) fputs (config_string, stdout);
6686d7f5d3SJohn Marino 
6786d7f5d3SJohn Marino #ifdef CLIENT_SUPPORT
6886d7f5d3SJohn Marino     if (current_parsed_root && current_parsed_root->isremote)
6986d7f5d3SJohn Marino     {
7086d7f5d3SJohn Marino 	(void) fputs ("Server: ", stdout);
7186d7f5d3SJohn Marino 	start_server ();
7286d7f5d3SJohn Marino 	if (supported_request ("version"))
7386d7f5d3SJohn Marino 	    send_to_server ("version\012", 0);
7486d7f5d3SJohn Marino 	else
7586d7f5d3SJohn Marino 	{
7686d7f5d3SJohn Marino 	    send_to_server ("noop\012", 0);
7786d7f5d3SJohn Marino 	    fputs ("(unknown)\n", stdout);
7886d7f5d3SJohn Marino 	}
7986d7f5d3SJohn Marino 	err = get_responses_and_close ();
8086d7f5d3SJohn Marino     }
8186d7f5d3SJohn Marino #endif
8286d7f5d3SJohn Marino     return err;
8386d7f5d3SJohn Marino }
8486d7f5d3SJohn Marino 
85