Mercurial > trustbridge
annotate common/portpath.c @ 168:f100861dad8f
Added simple portable function to test if an file exists.
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Tue, 25 Mar 2014 13:08:59 +0100 |
parents | 199878f09bf1 |
children | 701b7036c5dc |
rev | line source |
---|---|
146
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
1 #include "portpath.h" |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
2 |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
3 #include <libgen.h> |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
4 #include <limits.h> |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
5 #include <stdio.h> |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
6 #include <stdlib.h> |
168
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
7 #include <sys/stat.h> |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
8 #include <sys/types.h> |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
9 #include <unistd.h> |
146
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
10 |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
11 |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
12 char * |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
13 port_dirname(char *path) |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
14 { |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
15 #ifndef _WIN32 |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
16 return dirname(path); |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
17 #else |
164
6d64d7e9fa32
Implemented port_dirname for windows.
Sascha Wilde <wilde@intevation.de>
parents:
146
diff
changeset
|
18 char drive[_MAX_DRIVE]; |
6d64d7e9fa32
Implemented port_dirname for windows.
Sascha Wilde <wilde@intevation.de>
parents:
146
diff
changeset
|
19 char dir[_MAX_DIR]; |
6d64d7e9fa32
Implemented port_dirname for windows.
Sascha Wilde <wilde@intevation.de>
parents:
146
diff
changeset
|
20 _splitpath(path, drive, dir, NULL, NULL); |
6d64d7e9fa32
Implemented port_dirname for windows.
Sascha Wilde <wilde@intevation.de>
parents:
146
diff
changeset
|
21 /* We assume: drive + dir is shorter than |
6d64d7e9fa32
Implemented port_dirname for windows.
Sascha Wilde <wilde@intevation.de>
parents:
146
diff
changeset
|
22 * drive + dir + fname + ext */ |
6d64d7e9fa32
Implemented port_dirname for windows.
Sascha Wilde <wilde@intevation.de>
parents:
146
diff
changeset
|
23 sprintf(path, "%s%s", drive, dir); |
6d64d7e9fa32
Implemented port_dirname for windows.
Sascha Wilde <wilde@intevation.de>
parents:
146
diff
changeset
|
24 return path; |
146
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
25 #endif |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
26 } |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
27 |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
28 char * |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
29 port_realpath(char *path) |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
30 { |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
31 #ifndef _WIN32 |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
32 return realpath(path, NULL); |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
33 #else |
165
d47de01d6ad7
Implemented port_realpath for windows.
Sascha Wilde <wilde@intevation.de>
parents:
164
diff
changeset
|
34 return _fullpath(NULL, path, 0); |
146
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
35 #endif |
306e4db11761
Added portable path name handling functions.
Sascha Wilde <wilde@intevation.de>
parents:
diff
changeset
|
36 } |
168
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
37 |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
38 bool |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
39 port_fileexits(char *path) |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
40 { |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
41 int ret; |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
42 #ifndef _WIN32 |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
43 struct stat sb; |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
44 ret = stat(path, &sb); |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
45 #else |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
46 struct _stat sb; |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
47 ret = _stat(path, &sb); |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
48 #endif |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
49 |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
50 if (ret == 0) |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
51 return true; |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
52 else |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
53 return false; |
f100861dad8f
Added simple portable function to test if an file exists.
Sascha Wilde <wilde@intevation.de>
parents:
166
diff
changeset
|
54 } |