GRASS 8 Programmer's Manual 8.6.0dev(2026)-1d1e47ad9d
Loading...
Searching...
No Matches
intio.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <stdlib.h>
3#include <sys/types.h>
4#include <unistd.h>
5#include "raster3d_intern.h"
6
7/*---------------------------------------------------------------------------*/
8
9int Rast3d_write_ints(int fd, int useXdr, const int *i, int nofNum)
10{
12 unsigned int n;
13
14 if (nofNum <= 0)
15 Rast3d_fatal_error("Rast3d_write_ints: nofNum out of range");
16
17 if (useXdr == RASTER3D_NO_XDR) {
18 if (write(fd, i, sizeof(int) * nofNum) != (int)sizeof(int) * nofNum) {
19 Rast3d_error("Rast3d_write_ints: writing to file failed");
20 return 0;
21 }
22 else {
23 return 1;
24 }
25 }
26
27 do {
28 unsigned int j;
29
30 n = nofNum % 1024;
31 if (n == 0)
32 n = 1024;
33
34 for (j = 0; j < n; j++)
36
39 Rast3d_error("Rast3d_write_ints: writing xdr to file failed");
40 return 0;
41 }
42
43 nofNum -= n;
44 i += n;
45 } while (nofNum);
46
47 return 1;
48}
49
50/*---------------------------------------------------------------------------*/
51
52int Rast3d_read_ints(int fd, int useXdr, int *i, int nofNum)
53{
55 unsigned int n;
56
57 if (nofNum <= 0)
58 Rast3d_fatal_error("Rast3d_read_ints: nofNum out of range");
59
60 if (useXdr == RASTER3D_NO_XDR) {
61 if (read(fd, i, sizeof(int) * nofNum) != (int)sizeof(int) * nofNum) {
62 Rast3d_error("Rast3d_read_ints: reading from file failed");
63 return 0;
64 }
65 else {
66 return 1;
67 }
68 }
69
70 do {
71 unsigned int j;
72
73 n = nofNum % 1024;
74 if (n == 0)
75 n = 1024;
76
79 Rast3d_error("Rast3d_read_ints: reading xdr from file failed");
80 return 0;
81 }
82
83 for (j = 0; j < n; j++)
85
86 nofNum -= n;
87 i += n;
88 } while (nofNum);
89
90 return 1;
91}
void G_xdr_get_int(int *, const void *)
Definition gis/xdr.c:69
void G_xdr_put_int(void *, const int *)
Definition gis/xdr.c:74
void Rast3d_error(const char *,...) __attribute__((format(printf
void Rast3d_fatal_error(const char *,...) __attribute__((format(printf
int Rast3d_read_ints(int fd, int useXdr, int *i, int nofNum)
Definition intio.c:52
int Rast3d_write_ints(int fd, int useXdr, const int *i, int nofNum)
Definition intio.c:9
#define RASTER3D_NO_XDR
#define RASTER3D_XDR_INT_LENGTH
#define read
Definition unistd.h:5
#define write
Definition unistd.h:6