~ubuntu-branches/ubuntu/trusty/scotch/trusty

« back to all changes in this revision

Viewing changes to src/libscotch/library_graph_io_habo_f.c

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Prud'homme
  • Date: 2008-01-25 09:13:53 UTC
  • Revision ID: james.westby@ubuntu.com-20080125091353-zghdao60dfsyc2bt
Tags: upstream-5.0.1.dfsg
ImportĀ upstreamĀ versionĀ 5.0.1.dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS
 
2
**
 
3
** This file is part of the Scotch software package for static mapping,
 
4
** graph partitioning and sparse matrix ordering.
 
5
**
 
6
** This software is governed by the CeCILL-C license under French law
 
7
** and abiding by the rules of distribution of free software. You can
 
8
** use, modify and/or redistribute the software under the terms of the
 
9
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
 
10
** URL: "http://www.cecill.info".
 
11
** 
 
12
** As a counterpart to the access to the source code and rights to copy,
 
13
** modify and redistribute granted by the license, users are provided
 
14
** only with a limited warranty and the software's author, the holder of
 
15
** the economic rights, and the successive licensors have only limited
 
16
** liability.
 
17
** 
 
18
** In this respect, the user's attention is drawn to the risks associated
 
19
** with loading, using, modifying and/or developing or reproducing the
 
20
** software by the user in light of its specific status of free software,
 
21
** that may mean that it is complicated to manipulate, and that also
 
22
** therefore means that it is reserved for developers and experienced
 
23
** professionals having in-depth computer knowledge. Users are therefore
 
24
** encouraged to load and test the software's suitability as regards
 
25
** their requirements in conditions enabling the security of their
 
26
** systems and/or data to be ensured and, more generally, to use and
 
27
** operate it in the same conditions as regards security.
 
28
** 
 
29
** The fact that you are presently reading this means that you have had
 
30
** knowledge of the CeCILL-C license and that you accept its terms.
 
31
*/
 
32
/************************************************************/
 
33
/**                                                        **/
 
34
/**   NAME       : library_graph_io_habo_f.c               **/
 
35
/**                                                        **/
 
36
/**   AUTHOR     : Francois PELLEGRINI                     **/
 
37
/**                                                        **/
 
38
/**   FUNCTION   : This module is the Fortran API for the  **/
 
39
/**                graph i/o routines of the libSCOTCH     **/
 
40
/**                library.                                **/
 
41
/**                                                        **/
 
42
/**   DATES      : # Version 4.0  : from : 23 nov 2005     **/
 
43
/**                                 to     23 nov 2005     **/
 
44
/**                                                        **/
 
45
/************************************************************/
 
46
 
 
47
/*
 
48
**  The defines and includes.
 
49
*/
 
50
 
 
51
#define LIBRARY
 
52
 
 
53
#include "module.h"
 
54
#include "common.h"
 
55
#include "scotch.h"
 
56
 
 
57
/**************************************/
 
58
/*                                    */
 
59
/* These routines are the Fortran API */
 
60
/* for the mapping routines.          */
 
61
/*                                    */
 
62
/**************************************/
 
63
 
 
64
/* String lengths are passed at the very
 
65
** end of the argument list.
 
66
*/
 
67
 
 
68
FORTRAN (                                             \
 
69
SCOTCHFGRAPHGEOMLOADHABO, scotchfgraphgeomloadhabo, ( \
 
70
SCOTCH_Graph * const        grafptr,                  \
 
71
SCOTCH_Geom * const         geomptr,                  \
 
72
const int * const           filegrfptr,               \
 
73
const int * const           filegeoptr,               \
 
74
const char * const          dataptr, /* No use */     \
 
75
int * const                 revaptr,                  \
 
76
const int                   datanbr),                 \
 
77
(grafptr, geomptr, filegrfptr, filegeoptr, dataptr, revaptr, datanbr))
 
78
{
 
79
  FILE *              filegrfstream;              /* Streams to build from handles */
 
80
  FILE *              filegeostream;
 
81
  int                 filegrfnum;                 /* Duplicated handle */
 
82
  int                 filegeonum;
 
83
  int                 o;
 
84
 
 
85
  if ((filegrfnum = dup (*filegrfptr)) < 0) {     /* If cannot duplicate file descriptor */
 
86
    errorPrint ("SCOTCHFGRAPHGEOMLOADHABO: cannot duplicate handle (1)");
 
87
    *revaptr = 1;                                 /* Indicate error */
 
88
    return;
 
89
  }
 
90
  if ((filegeonum = dup (*filegeoptr)) < 0) {     /* If cannot duplicate file descriptor */
 
91
    errorPrint ("SCOTCHFGRAPHGEOMLOADHABO: cannot duplicate handle (2)");
 
92
    close      (filegrfnum);
 
93
    *revaptr = 1;                                 /* Indicate error */
 
94
    return;
 
95
  }
 
96
  if ((filegrfstream = fdopen (filegrfnum, "r+")) == NULL) { /* Build stream from handle */
 
97
    errorPrint ("SCOTCHFGRAPHGEOMLOADHABO: cannot open input stream (1)");
 
98
    close      (filegrfnum);
 
99
    close      (filegeonum);
 
100
    *revaptr = 1;
 
101
    return;
 
102
  }
 
103
  if ((filegeostream = fdopen (filegeonum, "r+")) == NULL) { /* Build stream from handle */
 
104
    errorPrint ("SCOTCHFGRAPHGEOMLOADHABO: cannot open input stream (2)");
 
105
    fclose     (filegrfstream);
 
106
    close      (filegeonum);
 
107
    *revaptr = 1;
 
108
    return;
 
109
  }
 
110
 
 
111
  o = SCOTCH_graphGeomLoadHabo (grafptr, geomptr, filegrfstream, filegeostream, NULL);
 
112
 
 
113
  fclose (filegrfstream);                         /* This closes file descriptors too */
 
114
  fclose (filegeostream);
 
115
 
 
116
  *revaptr = o;
 
117
}