GRASS 8 Programmer's Manual 8.6.0dev(2026)-1d1e47ad9d
Loading...
Searching...
No Matches
key_value2.c
Go to the documentation of this file.
1/*!
2 \file lib/gis/key_value2.c
3
4 \brief Read/write Key_Value from/to file.
5
6 (C) 2001-2008, 2012 by the GRASS Development Team
7
8 This program is free software under the GNU General Public License
9 (>=v2). Read the file COPYING that comes with GRASS for details.
10
11 \author CERL
12 */
13
14#include <grass/gis.h>
15
16/*!
17 \brief Write key/value pairs to file
18
19 \param[in,out] fd file to write to
20 \param kv pointer Key_Value structure
21
22 \return 0 success
23 \return -1 error writing
24 */
25int G_fwrite_key_value(FILE *fd, const struct Key_Value *kv)
26{
27 int n;
28 int err;
29
30 err = 0;
31 for (n = 0; n < kv->nitems; n++)
32 if (kv->value[n][0]) {
33 if (EOF == fprintf(fd, "%s: %s\n", kv->key[n], kv->value[n]))
34 err = -1;
35 }
36 return err;
37}
38
39/*!
40 \brief Read key/values pairs from file
41
42 Allocated memory must be freed G_free_key_value().
43
44 \param fd file to read key/values from
45
46 \return pointer to allocated Key_Value structure
47 \return NULL on error
48 */
50{
51 struct Key_Value *kv;
52 char *key, *value;
53 char buf[1024];
54
56 if (kv == NULL)
57 return NULL;
58 while (G_getl2(buf, sizeof(buf) - 1, fd) != 0) {
59 key = value = buf;
60 while (*value && *value != ':')
61 value++;
62 if (*value != ':')
63 continue;
64 *value++ = 0;
65 G_strip(key);
68 }
69 return kv;
70}
#define NULL
Definition ccmath.h:32
int G_getl2(char *, int, FILE *)
Gets a line of text from a file of any pedigree.
Definition getl.c:60
void G_set_key_value(const char *, const char *, struct Key_Value *)
Set value for given key.
Definition key_value1.c:39
void G_strip(char *)
Removes all leading and trailing white space from string.
Definition strings.c:300
struct Key_Value * G_create_key_value(void)
Allocate and initialize Key_Value structure.
Definition key_value1.c:23
struct Key_Value * G_fread_key_value(FILE *fd)
Read key/values pairs from file.
Definition key_value2.c:49
int G_fwrite_key_value(FILE *fd, const struct Key_Value *kv)
Write key/value pairs to file.
Definition key_value2.c:25
char ** value
Definition gis.h:538
char ** key
Definition gis.h:537
SYMBOL * err(FILE *fp, SYMBOL *s, char *msg)