30 #include <grass/gis.h>
40 #define PIPE_TIMEOUT 5000
48 static char *_get_make_pipe_path(
void)
51 const char *prefix =
"c:/grass-";
52 char *whoami =
"mingw-anon-user";
60 len = strlen(prefix) + strlen(user) + 1;
62 sprintf(path,
"%s%s", prefix, user);
64 if ((status =
G_lstat(path, &theStat)) != 0) {
68 if (!S_ISDIR(theStat.st_mode)) {
72 status = chmod(path, S_IRWXU);
90 char *G_pipe_get_fname(
char *
name)
98 dirpath = _get_make_pipe_path();
103 len = strlen(dirpath) + strlen(name) + 2;
104 path = G_malloc(len);
105 sprintf(path,
"%s/%s", dirpath, name);
117 int G_pipe_exists(
char *name)
120 HANDLE hFile = hFile = CreateFile(name,
125 FILE_ATTRIBUTE_NORMAL,
128 if (hFile != INVALID_HANDLE_VALUE) {
129 if (name ==
NULL || (FILE_TYPE_PIPE != GetFileType(hFile))) {
148 HANDLE G_pipe_bind(
char *name)
155 if (G_pipe_exists(name)) {
160 hPipe = CreateNamedPipe(name,
163 PIPE_READMODE_MESSAGE |
165 PIPE_UNLIMITED_INSTANCES,
171 if (hPipe == INVALID_HANDLE_VALUE) {
183 int G_pipe_listen(HANDLE hPipe,
unsigned int queue_len)
197 HANDLE G_pipe_accept(HANDLE hPipe)
202 fConnected = ConnectNamedPipe(hPipe,
NULL) ?
203 TRUE : (GetLastError() == ERROR_PIPE_CONNECTED);
219 HANDLE G_pipe_connect(
char *name)
223 if (!G_pipe_exists(name)) {
228 hPipe = CreateFile(name,
236 if (hPipe != INVALID_HANDLE_VALUE) {
239 if (GetLastError() != ERROR_PIPE_BUSY) {
243 if (!WaitNamedPipe(name, PIPE_TIMEOUT)) {
sprintf(buf2,"%s", G3D_CATS_ELEMENT)
void G_free(void *buf)
Free allocated memory.
int G_mkdir(const char *path)
Creates a new directory.
int G_lstat(const char *file_name, struct stat *buf)
Get file status.
char * G_whoami(void)
Gets user's name.