File: delnode.c

package info (click to toggle)
grass 6.0.2-6
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 40,044 kB
  • ctags: 31,303
  • sloc: ansic: 321,125; tcl: 25,676; sh: 11,176; cpp: 10,098; makefile: 5,025; fortran: 1,846; yacc: 493; lex: 462; perl: 133; sed: 1
file content (120 lines) | stat: -rw-r--r-- 2,896 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/* LIBDGL -- a Directed Graph Library implementation
 * Copyright (C) 2002 Roberto Micarelli
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

/*
 * Source best viewed with tabstop=4
 */

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <time.h>
#include <errno.h>
#include <math.h>

#include "../type.h"
#include "../graph.h"

#include "opt.h"

int main( int argc , char ** argv )
{
	dglGraph_s  	graph;
	dglInt32_t		nNode;
	int			 	nret , fd;

	/* program options
	 */
 	char	*	pszGraph;
 	char	*	pszGraphOut;
 	char	*	pszNode;
 
	GNO_BEGIN/* short   long        	default     variable        help */
 	GNO_OPTION( "g", 	"graph", 		NULL ,  	& pszGraph ,	"Input Graph file" )
 	GNO_OPTION( "o", 	"graphout", 	NULL ,  	& pszGraphOut ,	"Output Graph file" )
 	GNO_OPTION( "n", 	"node", 		NULL ,  	& pszNode ,		"Node Id to cancel" )
 	GNO_END
 

	if ( GNO_PARSE( argc , argv ) < 0 )
	{
		return 1;
	}
	/*
	 * options parsed
	 */

	if ( pszNode == NULL ) {
		GNO_HELP("delnode usage");
		return 1;
	}
	nNode = atol(pszNode);

	printf( "Graph read:\n" );
	if ( (fd = open( pszGraph , O_RDONLY )) < 0 )
	{
		perror( "open" ); return 1;
	}
	nret = dglRead( & graph , fd );
	if ( nret < 0 ) {
		fprintf( stderr , "dglRead error: %s\n", dglStrerror( & graph ) );
		return 1;
	}
	close( fd );
	printf( "Done.\n" );

	printf( "Graph unflatten:\n" );
	nret = dglUnflatten( & graph );
	if ( nret < 0 ) {
		fprintf( stderr , "dglUnflatten error: %s\n", dglStrerror( & graph ) );
		return 1;
	}
	printf( "Done.\n" );

	nret = dglDelNode( & graph, nNode );
	if ( nret < 0 ) {
		fprintf( stderr , "dglDelNode error: %s\n", dglStrerror( & graph ) );
		return 1;
	}

	printf( "Graph flatten:\n" );
	nret = dglFlatten( & graph );
	printf( "Done.\n" );

	if ( pszGraphOut ) {
		printf( "Graph write: %s\n", pszGraphOut );
		if ( (fd = open( pszGraphOut , O_WRONLY | O_CREAT | O_TRUNC, 0666 )) < 0 )
		{
			perror( "open" ); return 1;
		}
		nret = dglWrite( & graph, fd );
		if ( nret < 0 )
		{
			fprintf( stderr , "dglWrite error: %s\n" , dglStrerror( & graph ) );
			return 1;
		}
		close( fd );
		printf( "Done.\n" );
	}

	dglRelease( & graph );
	return 0;
}