pacemaker
1.1.16-94ff4df
Scalable High-Availability cluster resource manager
lib
common
compat.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2015 Andrew Beekhof <andrew@beekhof.net>
3
*
4
* This library is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation; either
7
* version 2.1 of the License, or (at your option) any later version.
8
*
9
* This library is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Lesser General Public License for more details.
13
*
14
* You should have received a copy of the GNU Lesser General Public
15
* License along with this library; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
19
#ifndef _GNU_SOURCE
20
# define _GNU_SOURCE
21
#endif
22
23
#include <
crm_internal.h
>
24
#include <stdio.h>
25
#include <unistd.h>
26
#include <limits.h>
27
#include <stdlib.h>
28
#include <errno.h>
29
39
char
*
40
crm_compat_realpath
(
const
char
*path)
41
{
42
#if _POSIX_VERSION >= 200809L
43
/* Recent C libraries can dynamically allocate memory as needed */
44
return
realpath(path, NULL);
45
46
#elif defined(PATH_MAX)
47
/* Older implementations require pre-allocated memory */
48
/* (this is less desirable because PATH_MAX may be huge or not defined) */
49
char
*canonicalized = malloc(PATH_MAX);
50
if
((canonicalized == NULL) || (realpath(path, canonicalized) == NULL)) {
51
return
NULL;
52
}
53
return
canonicalized;
54
#else
55
errno = ENOTSUP;
56
return
NULL;
57
#endif
58
}
crm_internal.h
crm_compat_realpath
char * crm_compat_realpath(const char *path)
Definition:
compat.c:40
Generated on Mon Feb 26 2018 17:36:37 for pacemaker by
1.8.13