GRASS GIS 8 Programmer's Manual 8.4.1(2025)-45ca3179ab
Loading...
Searching...
No Matches
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
33int Segment_close(SEGMENT *SEG)
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}
void G_free(void *buf)
Free allocated memory.
Definition alloc.c:150
#define NULL
Definition ccmath.h:32
int Segment_close(SEGMENT *SEG)
Free memory allocated to segment, delete temp file.
Definition close.c:33
int Segment_release(SEGMENT *SEG)
Free memory allocated to segment.