This is Unofficial EPICS BASE Doxygen Site
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
osdgetexec.c
Go to the documentation of this file.
1
2
#include <string.h>
3
#include <stdlib.h>
4
#include <unistd.h>
5
#include <limits.h>
6
7
#include <
osiFileName.h
>
8
9
#ifndef PATH_MAX
10
# define PATH_MAX 100
11
#endif
12
13
char
*
epicsGetExecName
(
void
)
14
{
15
size_t
max
=
PATH_MAX
;
16
char
*ret =
NULL
;
17
ssize_t n;
18
19
while
(1) {
20
char
*temp = realloc(ret, max);
21
if
(!temp) {
22
/* we treat alloc failure as terminal */
23
free(ret);
24
ret =
NULL
;
25
break
;
26
}
27
ret = temp;
28
29
n = readlink(
"/proc/self/exe"
, ret, max);
30
if
(n == -1) {
31
free(ret);
32
ret =
NULL
;
33
break
;
34
}
else
if
(n < max) {
35
/* readlink() never adds a nil */
36
ret[n] =
'\0'
;
37
break
;
38
}
39
40
max += 64;
41
}
42
43
return
ret;
44
}
45
46
char
*
epicsGetExecDir
(
void
)
47
{
48
char
*ret =
epicsGetExecName
();
49
if
(ret) {
50
char
*sep = strrchr(ret,
'/'
);
51
if
(sep) {
52
/* nil the charactor after the / */
53
sep[1] =
'\0'
;
54
}
55
}
56
return
ret;
57
}
max
#define max(x, y)
Definition:
flexdef.h:81
NULL
#define NULL
Definition:
catime.c:38
epicsGetExecName
char * epicsGetExecName(void)
Definition:
osdgetexec.c:9
PATH_MAX
#define PATH_MAX
Definition:
osdgetexec.c:10
osiFileName.h
epicsGetExecDir
char * epicsGetExecDir(void)
Definition:
osdgetexec.c:38
modules
libcom
src
osi
os
Linux
osdgetexec.c
Generated by
1.8.11