File: gd_close.3in

package info (click to toggle)
libgetdata 0.11.0-17
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 13,144 kB
  • sloc: ansic: 100,814; cpp: 4,843; fortran: 4,548; f90: 2,561; python: 2,406; perl: 2,274; makefile: 1,487; php: 1,465; sh: 86
file content (135 lines) | stat: -rw-r--r-- 3,674 bytes parent folder | download | duplicates (3)
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
.\" gd_close.3.  The gd_close man page.
.\"
.\" Copyright (C) 2008, 2009, 2010, 2011, 2014, 2016 D.V. Wiebe
.\"
.\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
.\"
.\" This file is part of the GetData project.
.\"
.\" Permission is granted to copy, distribute and/or modify this document
.\" under the terms of the GNU Free Documentation License, Version 1.2 or
.\" any later version published by the Free Software Foundation; with no
.\" Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
.\" Texts.  A copy of the license is included in the `COPYING.DOC' file
.\" as part of this distribution.
.\"
.TH gd_close 3 "25 December 2016" "Version 0.10.0" "GETDATA"

.SH NAME
gd_close, gd_discard \(em close a Dirfile and free associated memory

.SH SYNOPSIS
.SC
.B #include <getdata.h>
.HP
.BI "int gd_close(DIRFILE *" dirfile );
.HP
.BI "int gd_discard(DIRFILE *" dirfile );
.EC

.SH DESCRIPTION
The
.FN gd_close
and
.FN gd_discard
attempt to close the open Dirfile
.ARG dirfile
and free all memory associated with it.

The
.FN gd_close
function first flushes all pending metadata updates to disk.  This step is
skipped by
.FN gd_discard ,
which simply discards metadata changes.  For dirfiles opened read-only,
these two functions are equivalent.

Next, all pending data is flushed to disk and all open data files closed.
In order to ensure that modified data files associated with
.B RAW
fields are properly terminated, changes to
.B RAW
data files are still flushed to disk by
.FN gd_discard .

Finally, if the above didn't encounter an error, these functions free memory
associated with the DIRFILE object.

If
.ARG dirfile
is NULL, nothing happens, and the call succeeds.

One of these functions should be called on all pointers returned by
.F3 gd_cbopen ,
.F3 gd_open ,
and
.F3 gd_invalid_dirfile ,
even if the call to those function failed.  After
.FN gd_close
or
.FN gd_discard
returns successfully, the pointer
.ARG dirfile
should be considered invalid.

Metadata is written to disk using the current Standards Version as stored in the
.ARG dirfile
object.  See
.F3 gd_dirfile_standards
to change or report the current Standards Version.  If the dirfile metadata
conforms to no known Standards Version, Standards non-compliant metadata will
be written.

.SH RETURN VALUE
.FN gd_close
and
.FN gd_discard
return zero on success.  On error, they do not de-allocate
.ARG dirfile
and instead return a negative-valued error code.  Possible error codes are:
.DD GD_E_ALLOC
The library was unable to allocate memory.
.DD GD_E_LINE_TOO_LONG
While attempting to flush modified metadata to disk, a field specification line
exceeded the maximum allowed length.  On most platforms, the maximum length is
at least 2**31 bytes, so this typically indicates something pathological
happening.
.DD GD_E_IO
An I/O error occurred while trying to write modified data or metadata to disk.
In this case, another call to
.FN gd_close
or
.FN gd_discard
may be attempted.
.PP
The error code is also stored in the
.B DIRFILE
object and may be retrieved after this function returns by calling
.F3 gd_error .
A descriptive error string for the error may be obtained by calling
.F3 gd_error_string .

.SH HISTORY
The function
.FN dirfile_close
appeared in GetData-0.3.0.

The function
.FN dirfile_discard
appeared in GetData-0.6.0.

In GetData-0.7.0 these functions were renamed to
.FN gd_close
and
.FN gd_discard .

In GetData-0.10.0, the error return from these functions changed from -1 to a
negative-valued error code.

.SH SEE ALSO
.F3 gd_dirfile_standards ,
.F3 gd_error ,
.F3 gd_error_string ,
.F3 gd_flush ,
.F3 gd_invalid_dirfile ,
.F3 gd_open