/*
* C4 -- CVS like front end to the Perforce p4 SCM tool.
*
* Copyright (c) 1997, Neil Russell. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Neil Russell.
* 4. The name Neil Russell may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY NEIL RUSSELL ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL NEIL RUSSELL BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* Main.
*/
#include "defs.h"
#include "version.h"
/**************************************************/
/*
* Support.
*/
void
Error(int flag, char * msg, ...)
{
va_list ap;
va_start(ap, msg);
fprintf(stderr, "c4: ");
vfprintf(stderr, msg, ap);
fprintf(stderr, "\n");
va_end(ap);
if (flag)
perror("c4");
exit(1);
}
void *
Alloc(int sz)
{
void * p;
extern char * malloc();
p = malloc(sz);
if (!p)
Error(0, "Can't allocate memory");
return p;
}
/**************************************************/
int
main(int argc, char ** argv)
{
int i;
/*
* Find the root directory of this client.
*/
FindRoot();
/*
* If we were given a command, see if it's one of ours.
*/
if (argv[1])
{
if (strcmp(argv[1], "-V") == 0)
{
printf("C4 version %s.", VERSIONSTR);
printf(" Copyright (c) 1997 Neil Russell.\n");
exit(0);
}
else if (strcmp(argv[1], "scan") == 0)
Scan(&argv[2]);
else if (strcmp(argv[1], "import") == 0)
Import(&argv[2]);
else if (strcmp(argv[1], "update") == 0)
Update(&argv[2]);
else if (strcmp(argv[1], "mkws") == 0)
MakeWorkspace(&argv[2]);
}
/*
* Not our command; pass it on to p4 itself.
*/
execvp(CmdP4, argv);
Error(1, "execvp of p4 failed");
/* NOTREACHED */
return 9;
}