51#include <grass/iostream/ami_stream.h>
57 "AMI_ERROR_END_OF_STREAM",
58 "AMI_ERROR_OUT_OF_RANGE",
59 "AMI_ERROR_READ_ONLY",
62 "AMI_ERROR_OBJECT_INITIALIZATION",
63 "AMI_ERROR_PERMISSION_DENIED",
64 "AMI_ERROR_INSUFFICIENT_MAIN_MEMORY",
65 "AMI_ERROR_INSUFFICIENT_AVAILABLE_STREAMS",
66 "AMI_ERROR_ENV_UNDEFINED",
67 "AMI_ERROR_NO_MAIN_MEMORY_OPERATION",
80 base_dir = getenv(STREAM_TMPDIR);
82 fprintf(stderr,
"ami_stream: %s not set\n", STREAM_TMPDIR);
86 sprintf(tmp_path,
"%s/%s_XXXXXX", base_dir, base.c_str());
91 cerr <<
"ami_single_temp_name: ";
92 perror(
"G_mkstemp() failed: ");
109 case AMI_READ_STREAM:
110 fp = fdopen(fd,
"rb");
112 case AMI_WRITE_STREAM:
113 fp = fdopen(fd,
"wb");
115 case AMI_APPEND_WRITE_STREAM:
116 fp = fdopen(fd,
"ab");
118 case AMI_APPEND_STREAM:
119 fp = fdopen(fd,
"ab+");
121 case AMI_READ_WRITE_STREAM:
122 fp = fdopen(fd,
"rb+");
125 fp = fdopen(fd,
"wb+");
147 case AMI_READ_STREAM:
148 fp = fopen(pathname,
"rb");
150 case AMI_WRITE_STREAM:
151 fp = fopen(pathname,
"wb");
153 case AMI_APPEND_WRITE_STREAM:
154 fp = fopen(pathname,
"ab");
156 case AMI_APPEND_STREAM:
157 fp = fopen(pathname,
"ab+");
161 case AMI_READ_WRITE_STREAM:
162 fp = fopen(pathname,
"rb+");
165 fp = fopen(pathname,
"wb+");
FILE * open_stream(int fd, AMI_stream_type st)
const char * ami_str_error[]
int ami_single_temp_name(const std::string &base, char *tmp_path)
void G_fseek(FILE *fp, off_t offset, int whence)
Change the file position of the stream.
#define assert(condition)
int G_mkstemp(char *template, int flags, int mode)
Returns a file descriptor.