50#include <grass/iostream/ami_stream.h>
55 "AMI_ERROR_END_OF_STREAM",
56 "AMI_ERROR_OUT_OF_RANGE",
57 "AMI_ERROR_READ_ONLY",
60 "AMI_ERROR_OBJECT_INITIALIZATION",
61 "AMI_ERROR_PERMISSION_DENIED",
62 "AMI_ERROR_INSUFFICIENT_MAIN_MEMORY",
63 "AMI_ERROR_INSUFFICIENT_AVAILABLE_STREAMS",
64 "AMI_ERROR_ENV_UNDEFINED",
65 "AMI_ERROR_NO_MAIN_MEMORY_OPERATION",
78 base_dir = getenv(STREAM_TMPDIR);
80 fprintf(stderr,
"ami_stream: %s not set\n", STREAM_TMPDIR);
84 snprintf(tmp_path, GPATH_MAX,
"%s/%s_XXXXXX", base_dir, base.c_str());
89 cerr <<
"ami_single_temp_name: ";
90 perror(
"G_mkstemp() failed: ");
106 case AMI_READ_STREAM:
107 fp = fdopen(fd,
"rb");
109 case AMI_WRITE_STREAM:
110 fp = fdopen(fd,
"wb");
112 case AMI_APPEND_WRITE_STREAM:
113 fp = fdopen(fd,
"ab");
115 case AMI_APPEND_STREAM:
116 fp = fdopen(fd,
"ab+");
118 case AMI_READ_WRITE_STREAM:
119 fp = fdopen(fd,
"rb+");
122 fp = fdopen(fd,
"wb+");
143 case AMI_READ_STREAM:
144 fp = fopen(pathname,
"rb");
146 case AMI_WRITE_STREAM:
147 fp = fopen(pathname,
"wb");
149 case AMI_APPEND_WRITE_STREAM:
150 fp = fopen(pathname,
"ab");
152 case AMI_APPEND_STREAM:
153 fp = fopen(pathname,
"ab+");
157 case AMI_READ_WRITE_STREAM:
158 fp = fopen(pathname,
"rb+");
161 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.