int
main (int argc, char **argv)
{
    int             c,
                    errflg = 0;
    Dbptr           db;
    char           *table;
    int             verbose = 0;
    int             errors = 0;
    long            n;
    Pf             *pf;

    elog_init (argc, argv);

    if (pfread (Program_Name, &pf) != 0)
	die (0, "Can't read parameter file\n");

    Segtype = pfget_arr (pf, "segtype");

    while ((c = getopt (argc, argv, "vV")) != -1) {
	switch (c) {

	  case 'v':
	    verbose++;
	    break;

	  case 'V':
	    banner (Program_Name, 0) ;
	    exit (0);

	  default:
	    errflg++;
	    break;
	}
    }

    if (errflg || argc - optind != 1)
	usage ();

    table = argv[optind++];
    n = dbopen_table (table, "r", &db);
    switch (n) {

      case dbINVALID:
	die (0, "Can't open input table '%s'", table);
	break;

      case 0:
	die (0, "No records in input table '%s'", table);
	break;
    }

    for (db.record = 0; db.record < n; db.record++) {
	errors += autodrm_response (db);
    }

    return (errors == 0 ? 0 : 1);
}
示例#2
0
int
main (int argc, char **argv)
{
	int	c;
	int 	errflg = 0;
	Dbptr	db;
	char	*database;
	int	verbose = 0;
	int	primary = 0;
	Pf	pf;
	char	*xmlstring = 0;
	char	*rootname = 0;
	char	*rowname = 0;
	Tbl	*fields = 0;
	Tbl	*expressions = 0;

	elog_init( argc, argv ) ; 

	while ((c = getopt (argc, argv, "pd:r:v")) != -1) {
		switch (c) {

		case 'v':
			verbose++;
			break;

		case 'd':
			rootname = strdup( optarg );
			break;

		case 'p':
			primary++;
			break;

		case 'r':
			rowname = strdup( optarg );
			break;

		default:
			errflg++;
			break ;
		}
	}

	if( errflg || argc - optind < 1 || (((argc-optind) % 2) != 1)) {
		usage ();
	}

	database = argv[optind++];
	
	if( dbopen_table( database, "r+", &db ) < 0 ) { 

		die( 0, "Can't open database %s\n", database ); 
	}

	if( argc - optind > 0 ) {

		fields = newtbl( 20 );	
		expressions = newtbl( 20 );

		while( argc - optind > 0 ) {
			pushtbl( fields, argv[optind++] );	
			pushtbl( expressions, argv[optind++] );	
		}
		
		if( primary ) {
			complain( 1, 
			"Useless use of '-p' with specified expressions\n" );
		}

	} else if( primary ) {

		dbquery( db, dbPRIMARY_KEY, (Dbvalue *) &fields );
	}

	db2ptolemy( db, fields, expressions, (void **) &xmlstring, 0 );

	if( xmlstring != NULL ) {

		fwrite( xmlstring, sizeof(char), strlen( xmlstring ), stdout );
		free( xmlstring );
	}

	return 0;
}
示例#3
0
int
main (int argc, char **argv)
{
	int	c;
	int 	errflg = 0;
	Dbptr	db;
	char	*database;
	int	verbose = 0;
	int	primary = 0;
	Pf	*pf = NULL;
	char	*xmlstring = NULL;
	char	*rootname = NULL;
	char	*rowname = NULL;
	char	*stylesheet = NULL;
	char	xslt_processor[STRSZ];
	char	command[STRSZ];
	char	tempfile[FILENAME_MAX];
	FILE	*tempfs = NULL;
	Tbl	*fields = 0;
	Tbl	*expressions = 0;
	int	rc;
	int	flags = 0;

	elog_init( argc, argv ) ; 

	while ((c = getopt (argc, argv, "pd:r:t:v")) != -1) {
		switch (c) {

		case 'v':
			verbose++;
			break;

		case 't':
			stylesheet = strdup( optarg );
			break;

		case 'd':
			rootname = strdup( optarg );
			break;

		case 'p':
			primary++;
			break;

		case 'r':
			rowname = strdup( optarg );
			break;

		default:
			errflg++;
			break ;
		}
	}

	if( errflg || argc - optind < 1 || (((argc-optind) % 2) != 1)) {
		usage ();
	}

	pfread( "db2xml", &pf );

	database = argv[optind++];
	
	if( dbopen_table( database, "r+", &db ) < 0 ) { 

		elog_die( 0, "Can't open database %s\n", database ); 
	}

	if( argc - optind > 0 ) {

		fields = newtbl( 20 );	
		expressions = newtbl( 20 );

		while( argc - optind > 0 ) {
			pushtbl( fields, argv[optind++] );	
			pushtbl( expressions, argv[optind++] );	
		}
		
		if( primary ) {
			elog_complain( 1, 
			"Useless use of '-p' with specified expressions, ignoring\n" );
		}

	} else if( primary ) {

		flags |= DBXML_PRIMARY;
	}

	rc = db2xml( db, rootname, rowname, fields, expressions, 
		(void **) &xmlstring, flags );

	if( rc < 0 || xmlstring == NULL ) {
		
		elog_clear_register( 1 );

		elog_die( 0, "db2xml failed\n" );

	} else if( stylesheet != NULL ) {

		sprintf( tempfile, "/tmp/db2xml_%d_%d.xml", getuid(), getpid() );

		tempfs = fopen( tempfile, "w" );

		fwrite( xmlstring, sizeof(char), strlen( xmlstring ), tempfs );

		fclose( tempfs );

		sprintf( xslt_processor, "%s", pfget_string( pf, "xslt_processor" ) );

		strsub( xslt_processor, "STYLESHEET", stylesheet, xslt_processor );

		strsub( xslt_processor, "XMLFILE", tempfile, command );

		system( command );

		unlink( tempfile );

	} else {

		fwrite( xmlstring, sizeof(char), strlen( xmlstring ), stdout );
	}

	free( xmlstring );

	return 0;
}