GRASS GIS 8 Programmer's Manual  8.5.0dev(2024)-3a95b7a4e6
segment/close.c
Go to the documentation of this file.
1 /**
2  * \file lib/segment/close.c
3  *
4  * \brief Segment closing routine.
5  *
6  * This program is free software under the GNU General Public License
7  * (>=v2). Read the file COPYING that comes with GRASS for details.
8  *
9  * \author GRASS GIS Development Team
10  *
11  * \date 2018
12  */
13 
14 #include <unistd.h>
15 #include <fcntl.h>
16 #include <grass/gis.h>
17 #include <grass/glocale.h>
18 #include "local_proto.h"
19 
20 /**
21  * \fn int Segment_close (SEGMENT *SEG)
22  *
23  * \brief Free memory allocated to segment, delete temp file.
24  *
25  * Releases the allocated memory associated with the segment file
26  * <b>seg</b> and deletes the temporary file.
27  *
28  * \param[in,out] SEG segment
29  * \return 1 if successful
30  * \return -1 if SEGMENT is not available (not open)
31  */
32 
34 {
35  if (SEG->open != 1)
36  return -1;
37 
38  if (SEG->cache) {
39  G_free(SEG->cache);
40  }
41  else {
42  Segment_release(SEG);
43  close(SEG->fd);
44  unlink(SEG->fname);
45 
46  SEG->fd = -1;
47  SEG->fname = NULL;
48  }
49 
50  SEG->open = 0;
51 
52  return 1;
53 }
#define NULL
Definition: ccmath.h:32
void G_free(void *)
Free allocated memory.
Definition: gis/alloc.c:150
int Segment_release(SEGMENT *)
Free memory allocated to segment.
int Segment_close(SEGMENT *SEG)
Free memory allocated to segment, delete temp file.
Definition: segment/close.c:33
char * cache
Definition: segment.h:61
int open
Definition: segment.h:20
int fd
Definition: segment.h:43
char * fname
Definition: segment.h:42