Mercurial > trustbridge
view common/portpath.c @ 214:aab742690bee
Fix check for selected items and wait for bytes written.
According to the documentation closing the write channel
should suffice. But in testing it did not sent over everything.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 26 Mar 2014 17:17:19 +0100 |
parents | 70d627e9e801 |
children | 17e1c8f37d72 |
line wrap: on
line source
#include "portpath.h" #include <libgen.h> #include <limits.h> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> char * port_dirname(char *path) { #ifndef _WIN32 return dirname(path); #else char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; _splitpath(path, drive, dir, NULL, NULL); size_t dlen = strlen(dir); if ((dlen > 0) && ((dir[dlen-1] == '/') || (dir[dlen-1] == '\\'))) dir[dlen-1] = '\0'; /* We assume: drive + dir is shorter than * drive + dir + fname + ext */ sprintf(path, "%s%s", drive, dir); return path; #endif } char * port_realpath(char *path) { #ifndef _WIN32 return realpath(path, NULL); #else char *fp = _fullpath(NULL, path, 0); if (port_fileexits(fp)) return fp; else return NULL; #endif } bool port_fileexits(char *path) { int ret; #ifndef _WIN32 struct stat sb; ret = stat(path, &sb); #else struct _stat sb; ret = _stat(path, &sb); #endif if (ret == 0) return true; else return false; } bool port_isdir(char *path) { int ret; #ifndef _WIN32 struct stat sb; ret = stat(path, &sb); #else struct _stat sb; ret = _stat(path, &sb); #endif if ((ret == 0) && S_ISDIR(sb.st_mode)) return true; else return false; }