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