forked from airidosas252/Wine-Builds
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpath-patch-universalPGE.patch
More file actions
112 lines (105 loc) · 4.35 KB
/
Copy pathpath-patch-universalPGE.patch
File metadata and controls
112 lines (105 loc) · 4.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
diff --git a/dlls/crypt32/unixlib.c b/dlls/crypt32/unixlib.c
index feb0c360d68..9323f557a05 100644
--- a/dlls/crypt32/unixlib.c
+++ b/dlls/crypt32/unixlib.c
@@ -619,51 +619,27 @@ static const char * const CRYPT_knownLocations[] = {
"/usr/local/share/certs/",
"/etc/sfw/openssl/certs",
"/etc/security/cacerts", /* Android */
+ "/data/data/com.termux/files/usr/glibc/etc/ca-certificates/cacert.pem",
+ NULL
};
+
+static const char* get_ca_cert_path(void) {
+ const char *env_path = getenv("WINE_CA_CERT_PATH");
+ return env_path ? env_path : CRYPT_knownLocations[3];
+}
static void load_root_certs(void)
{
- const char *additional_dir;
unsigned int i;
+ const char *cert_path = get_ca_cert_path();
-#ifdef __APPLE__
- const SecTrustSettingsDomain domains[] = {
- kSecTrustSettingsDomainSystem,
- kSecTrustSettingsDomainAdmin,
- kSecTrustSettingsDomainUser
- };
- OSStatus status;
- CFArrayRef certs;
- DWORD domain;
+ import_certs_from_path(cert_path, TRUE);
- for (domain = 0; domain < ARRAY_SIZE(domains); domain++)
- {
- status = SecTrustSettingsCopyCertificates(domains[domain], &certs);
- if (status == noErr)
- {
- for (i = 0; i < CFArrayGetCount(certs); i++)
- {
- SecCertificateRef cert = (SecCertificateRef)CFArrayGetValueAtIndex(certs, i);
- CFDataRef certData;
- if ((status = SecItemExport(cert, kSecFormatX509Cert, 0, NULL, &certData)) == noErr)
- {
- BYTE *data = add_cert( CFDataGetLength(certData) );
- if (data) memcpy( data, CFDataGetBytePtr(certData), CFDataGetLength(certData) );
- CFRelease(certData);
- }
- else
- WARN("could not export certificate %u to X509 format: 0x%08x\n", i, (unsigned int)status);
- }
- CFRelease(certs);
+ if (list_empty(&root_cert_list)) {
+ for (i = 0; i < ARRAY_SIZE(CRYPT_knownLocations); i++) {
+ import_certs_from_path(CRYPT_knownLocations[i], TRUE);
}
}
-#endif
-
- for (i = 0; i < ARRAY_SIZE(CRYPT_knownLocations) && list_empty(&root_cert_list); i++)
- import_certs_from_path( CRYPT_knownLocations[i], TRUE );
-
- if ((additional_dir = getenv( "WINE_ADDITIONAL_CERTS_DIR" )))
- import_certs_from_path( additional_dir, TRUE );
}
static NTSTATUS enum_root_certs( void *args )
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
index f3ffd99..e6926b6 100644
--- a/dlls/ntdll/unix/server.c
+++ b/dlls/ntdll/unix/server.c
@@ -1275,7 +1295,7 @@ static const char *init_server_dir( dev_t dev, ino_t ino )
#ifdef __ANDROID__ /* there's no /tmp dir on Android */
asprintf( &dir, "%s/.wineserver/server-%s", config_dir, tmp );
#else
- asprintf( &dir, "/tmp/.wine-%u/server-%s", getuid(), tmp );
+ asprintf( &dir, "/data/data/com.termux/files/usr/tmp/.wine/server-%s", tmp );
#endif
return dir;
}
diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c
index 36569fa..bf2b178 100644
--- a/programs/winemenubuilder/winemenubuilder.c
+++ b/programs/winemenubuilder/winemenubuilder.c
@@ -1724,7 +1724,8 @@ static BOOL build_native_mime_types(struct list *mime_types)
if (_wgetenv( L"XDG_DATA_DIRS" ))
dirs = xwcsdup( _wgetenv( L"XDG_DATA_DIRS" ));
else
- dirs = xwcsdup( L"/usr/local/share/:/usr/share/" );
+ dirs = xwcsdup( _wgetenv(L"WINE_SHARE_DIRS") ? _wgetenv(L"WINE_SHARE_DIRS") :
+ L"/data/data/com.termux/files/usr/glibc/local/share:/data/data/com.termux/files/usr/glibc/share" );
ret = add_mimes(xdg_data_dir, mime_types);
if (ret)
diff --git a/server/request.c b/server/request.c
index 343e1a92e0e..5442ea6096f 100644
--- a/server/request.c
+++ b/server/request.c
@@ -665,9 +665,9 @@ static char *create_server_dir( int force )
strcpy( server_dir, config_dir );
strcat( server_dir, "/.wineserver" );
#else
- len += sizeof("/tmp/.wine-") + 12;
+ len += sizeof("/data/data/com.termux/files/usr/tmp/.wine-") + 12;
if (!(server_dir = malloc( len ))) fatal_error( "out of memory\n" );
- sprintf( server_dir, "/tmp/.wine-%u", getuid() );
+ sprintf( server_dir, "/data/data/com.termux/files/usr/tmp/.wine-%u", getuid() );
#endif
create_dir( server_dir, &st2 );