Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
431cf324
Commit
431cf324
authored
Feb 19, 2000
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Hard-coded DllPairs configuration; there is no need for the user to
change it.
parent
00377a78
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
104 deletions
+40
-104
loadorder.c
loader/loadorder.c
+39
-91
wine.ini
wine.ini
+1
-13
No files found.
loader/loadorder.c
View file @
431cf324
...
...
@@ -62,6 +62,23 @@ static struct tagDllOverride {
{
NULL
,
NULL
},
};
static
const
struct
tagDllPair
{
const
char
*
dll1
,
*
dll2
;
}
DllPairs
[]
=
{
{
"krnl386"
,
"kernel32"
},
{
"gdi"
,
"gdi32"
},
{
"user"
,
"user32"
},
{
"commdlg"
,
"comdlg32"
},
{
"commctrl"
,
"comctl32"
},
{
"ver"
,
"version"
},
{
"shell"
,
"shell32"
},
{
"lzexpand"
,
"lz32"
},
{
"mmsystem"
,
"winmm"
},
{
"msvideo"
,
"msvfw32"
},
{
"winsock"
,
"wsock32"
},
{
NULL
,
NULL
}
};
/***************************************************************************
* cmp_sort_func (internal, static)
*
...
...
@@ -343,23 +360,6 @@ endit:
* commdlg = native, builtin
* version, ver = elfdll, native, builtin
*
* Section:
* [DllPairs]
*
* Keys:
* This is a simple pairing in the form 'name1 = name2'. It is supposed to
* identify the dlls that cannot live without eachother unless they are
* loaded in the same format. Examples are common dialogs and controls,
* shell, kernel, gdi, user, etc...
* The code will issue a warning if the loadorder of these pairs are different
* and might cause hard-to-find bugs due to incompatible pairs loaded at
* run-time. Note that this pairing gives *no* guarantee that the pairs
* actually get loaded as the same type, nor that the correct versions are
* loaded (might be implemented later). It merely notes obvious trouble.
* Examples:
* kernel = kernel32
* commdlg = comdlg32
*
*/
#define BUFFERSIZE 1024
...
...
@@ -367,7 +367,10 @@ endit:
BOOL
MODULE_InitLoadOrder
(
void
)
{
char
buffer
[
BUFFERSIZE
];
char
key
[
256
];
int
nbuffer
;
int
idx
;
const
struct
tagDllPair
*
dllpair
;
#if defined(HAVE_DL_API)
/* Get/set the new LD_LIBRARY_PATH */
...
...
@@ -405,41 +408,14 @@ BOOL MODULE_InitLoadOrder(void)
}
/* Read the explicitely defined orders for specific modules as an entire section */
nbuffer
=
PROFILE_GetWineIniString
(
"DllOverrides"
,
NULL
,
""
,
buffer
,
sizeof
(
buffer
));
if
(
nbuffer
==
BUFFERSIZE
-
2
)
{
ERR
(
"BUFFERSIZE %d is too small to read [DllOverrides]. Needs to grow in the source
\n
"
,
BUFFERSIZE
);
return
FALSE
;
}
if
(
nbuffer
)
{
/* We only have the keys in the buffer, not the values */
char
*
key
;
char
value
[
BUFFERSIZE
];
char
*
next
;
for
(
key
=
buffer
;
*
key
;
key
=
next
)
{
next
=
key
+
strlen
(
key
)
+
1
;
nbuffer
=
PROFILE_GetWineIniString
(
"DllOverrides"
,
key
,
""
,
value
,
sizeof
(
value
));
if
(
!
nbuffer
)
{
ERR
(
"Module(s) '%s' will always fail to load. Are you sure you want this?
\n
"
,
key
);
value
[
0
]
=
'\0'
;
/* Just in case */
}
if
(
nbuffer
==
BUFFERSIZE
-
2
)
{
ERR
(
"BUFFERSIZE %d is too small to read [DllOverrides] key '%s'. Needs to grow in the source
\n
"
,
BUFFERSIZE
,
key
);
return
FALSE
;
}
TRACE
(
"Key '%s' uses override '%s'
\n
"
,
key
,
value
);
if
(
!
AddLoadOrderSet
(
key
,
value
,
TRUE
))
return
FALSE
;
}
}
idx
=
0
;
while
(
PROFILE_EnumWineIniString
(
"DllOverrides"
,
idx
++
,
key
,
sizeof
(
key
),
buffer
,
sizeof
(
buffer
)))
{
TRACE
(
"Key '%s' uses override '%s'
\n
"
,
key
,
buffer
);
if
(
!
AddLoadOrderSet
(
key
,
buffer
,
TRUE
))
return
FALSE
;
}
/* Add the commandline overrides to the pool */
if
(
!
ParseCommandlineOverrides
())
...
...
@@ -460,45 +436,17 @@ BOOL MODULE_InitLoadOrder(void)
qsort
(
module_loadorder
,
nmodule_loadorder
,
sizeof
(
module_loadorder
[
0
]),
cmp_sort_func
);
/* Check the pairs of dlls */
nbuffer
=
PROFILE_GetWineIniString
(
"DllPairs"
,
NULL
,
""
,
buffer
,
sizeof
(
buffer
));
if
(
nbuffer
==
BUFFERSIZE
-
2
)
{
ERR
(
"BUFFERSIZE %d is too small to read [DllPairs]. Needs to grow in the source
\n
"
,
BUFFERSIZE
);
return
FALSE
;
}
if
(
nbuffer
)
{
/* We only have the keys in the buffer, not the values */
char
*
key
;
char
value
[
BUFFERSIZE
];
char
*
next
;
for
(
key
=
buffer
;
*
key
;
key
=
next
)
{
module_loadorder_t
*
plo1
,
*
plo2
;
next
=
key
+
strlen
(
key
)
+
1
;
nbuffer
=
PROFILE_GetWineIniString
(
"DllPairs"
,
key
,
""
,
value
,
sizeof
(
value
));
if
(
!
nbuffer
)
{
ERR
(
"Module pair '%s' is not associated with another module?
\n
"
,
key
);
continue
;
}
if
(
nbuffer
==
BUFFERSIZE
-
2
)
{
ERR
(
"BUFFERSIZE %d is too small to read [DllPairs] key '%s'. Needs to grow in the source
\n
"
,
BUFFERSIZE
,
key
);
return
FALSE
;
}
plo1
=
MODULE_GetLoadOrder
(
key
);
plo2
=
MODULE_GetLoadOrder
(
value
);
assert
(
plo1
&&
plo2
);
if
(
memcmp
(
plo1
->
loadorder
,
plo2
->
loadorder
,
sizeof
(
plo1
->
loadorder
)))
MESSAGE
(
"Warning: Modules '%s' and '%s' have different loadorder which may cause trouble
\n
"
,
key
,
value
);
}
}
dllpair
=
DllPairs
;
while
(
dllpair
->
dll1
)
{
module_loadorder_t
*
plo1
,
*
plo2
;
plo1
=
MODULE_GetLoadOrder
(
dllpair
->
dll1
);
plo2
=
MODULE_GetLoadOrder
(
dllpair
->
dll2
);
assert
(
plo1
&&
plo2
);
if
(
memcmp
(
plo1
->
loadorder
,
plo2
->
loadorder
,
sizeof
(
plo1
->
loadorder
)))
MESSAGE
(
"Warning: Modules '%s' and '%s' have different loadorder which may cause trouble
\n
"
,
dllpair
->
dll1
,
dllpair
->
dll2
);
dllpair
++
;
}
if
(
TRACE_ON
(
module
))
{
...
...
wine.ini
View file @
431cf324
...
...
@@ -63,19 +63,6 @@ SymbolTableFile=./wine.sym
EXTRA_LD_LIBRARY_PATH
=
${HOME}/wine/cvs/lib
DefaultLoadOrder
=
native, builtin, elfdll, so
[DllPairs]
krnl386
=
kernel32
gdi
=
gdi32
user
=
user32
commdlg
=
comdlg32
commctrl
=
comctl32
ver
=
version
shell
=
shell32
lzexpand
=
lz32
mmsystem
=
winmm
msvideo
=
msvfw32
winsock
=
wsock32
[DllOverrides]
kernel32,
gdi32,
user32
=
builtin
krnl386,
gdi,
user
=
builtin
...
...
@@ -169,6 +156,7 @@ Default=
Startup
=
[Console]
;Drivers=tty
;XtermProg=nxterm
;InitialRows=25
;InitialColumns=80
...
...
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