Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
f5e51cfc
Commit
f5e51cfc
authored
Oct 23, 2021
by
Damjan Jovanovic
Committed by
Alexandre Julliard
Oct 25, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
loader: Use sysctl instead of /proc/curproc/file on FreeBSD.
Signed-off-by:
Damjan Jovanovic
<
damjan.jov@gmail.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
e224d74a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
12 additions
and
3 deletions
+12
-3
main.c
loader/main.c
+12
-3
No files found.
loader/main.c
View file @
f5e51cfc
...
@@ -29,6 +29,10 @@
...
@@ -29,6 +29,10 @@
#include <sys/stat.h>
#include <sys/stat.h>
#include <unistd.h>
#include <unistd.h>
#include <dlfcn.h>
#include <dlfcn.h>
#include <limits.h>
#ifdef HAVE_SYS_SYSCTL_H
# include <sys/sysctl.h>
#endif
#include "main.h"
#include "main.h"
...
@@ -83,8 +87,14 @@ static const char *get_self_exe( char *argv0 )
...
@@ -83,8 +87,14 @@ static const char *get_self_exe( char *argv0 )
#if defined(__linux__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
#if defined(__linux__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
return
"/proc/self/exe"
;
return
"/proc/self/exe"
;
#elif defined (__FreeBSD__) || defined(__DragonFly__)
#elif defined (__FreeBSD__) || defined(__DragonFly__)
return
"/proc/curproc/file"
;
static
int
pathname
[]
=
{
CTL_KERN
,
KERN_PROC
,
KERN_PROC_PATHNAME
,
-
1
};
#else
size_t
path_size
=
PATH_MAX
;
char
*
path
=
malloc
(
path_size
);
if
(
path
&&
!
sysctl
(
pathname
,
sizeof
(
pathname
)
/
sizeof
(
pathname
[
0
]),
path
,
&
path_size
,
NULL
,
0
))
return
path
;
free
(
path
);
#endif
if
(
!
strchr
(
argv0
,
'/'
))
/* search in PATH */
if
(
!
strchr
(
argv0
,
'/'
))
/* search in PATH */
{
{
char
*
p
,
*
path
=
getenv
(
"PATH"
);
char
*
p
,
*
path
=
getenv
(
"PATH"
);
...
@@ -104,7 +114,6 @@ static const char *get_self_exe( char *argv0 )
...
@@ -104,7 +114,6 @@ static const char *get_self_exe( char *argv0 )
return
NULL
;
return
NULL
;
}
}
return
argv0
;
return
argv0
;
#endif
}
}
static
void
*
try_dlopen
(
const
char
*
dir
,
const
char
*
name
)
static
void
*
try_dlopen
(
const
char
*
dir
,
const
char
*
name
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment