main.cpp #5

  • //
  • guest/
  • sam_stafford/
  • joincheck/
  • main.cpp
  • View
  • Commits
  • Open Download .zip Download (2 KB)
#include <clientapi.h>
#include <debug.h>
#include <mapapi.h>
#include <options.h>
#include <i18napi.h>

#include "joincheck.h"

int main( int argc, char** argv )
{
	ClientApi client;
	Error e;
	JoinCheck check( &client, &e );
	Options opts;

	argc--;
	argv++;

	ErrorId usage = { E_FAILED,
	    "Usage: joincheck [ -b branch -c client -C charset -p port -u user -d -v ] [ path ]" };
	opts.Parse( argc, argv, "u:b:c:p:C:dv", OPT_OPT, usage, &e );

	client.SetProtocol( "tag", "" );

	StrPtr *s;
	if ( s = opts['c'] ) client.SetClient( s );
	if ( s = opts['C'] ) client.SetCharset( s );
	if ( s = opts['p'] ) client.SetPort( s );
	if ( s = opts['u'] ) client.SetUser( s );
	s = opts['b'];

	if ( opts['d'] )
	{
	    printf( "\n" );
	    printf( "%7s: %s\n", "User",    client.GetUser() );
	    printf( "%7s: %s\n", "Client",  client.GetClient() );
	    printf( "%7s: %s\n", "Port",    client.GetPort() );
	    printf( "%7s: %s\n", "Charset", client.GetCharset() );

	    if ( s = opts['b'] )
		printf( "%7s: %s\n", "Branch", s->Text() );
	}

	if ( client.GetCharset().Length() )
	    client.SetTrans( 
	        (int)CharSetApi::Lookup( client.GetCharset().Text() ), 
		0, 0, 0 );

	client.Init( &e );
	if ( e.Test() )
	{
	    check.Message( &e );
	    return 1;
	}

	check.LoadProtect( opts['u'] );
	check.LoadBranch( opts['b'] );
	check.LoadClient( opts['c'] );

	client.Final( &e );
	if ( e.Test() )
	{
	    check.Message( &e );
	    return 1;
	}

	// Set joinmax tunables way high before doing any joins.

	p4debug.SetLevel( "map.joinmax1=999999999" );
	p4debug.SetLevel( "map.joinmax2=999999999" );

	check.LoadPath( argc ? argv[0] : 0 );

	check.DoJoins();
	MapApi *j = check.Join();

	printf( "Joined map size: %d lines\n", j->Count() );
	printf( "Most wild line:  %d wildcards\n", check.MaxWild( j ) );

	if ( opts['v'] )
	{
	    printf( "\nJoined map:\n" );
	    check.DumpView( j );
	}

	return 0;
}
# Change User Description Committed
#5 7787 Sam Stafford Integrated Stephen's change over.
 Tidied it up some.
#4 7730 Sam Stafford Raise joinmax tunables, and update the build.
#3 7729 Sam Stafford Whoops, forgot to update the usage string.
#2 7728 Sam Stafford Add an option for a file path, and another join of
the protect table after the branch map.
#1 7727 Sam Stafford MapApi-based tool for displaying joins of protects, client,
and optionally a branch view.