Rebase against 82dbf75dc064bb03b5dfc5d8a82b9782a7272ce2

This commit is contained in:
Alistair Leslie-Hughes 2018-10-24 08:08:29 +11:00
parent f15b462860
commit 8710aa32b4
8 changed files with 50 additions and 245 deletions

View File

@ -1,7 +1,7 @@
From 4b428e09733605affb987d369f56ec09d2525858 Mon Sep 17 00:00:00 2001
From c8dc0ec6406e8449b59c219ede2e9bd88d8a56fa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 00:26:03 +0200
Subject: server: Implement token elevation information.
Subject: [PATCH] server: Implement token elevation information.
---
dlls/ntdll/nt.c | 16 ++++++++++++----
@ -10,10 +10,10 @@ Subject: server: Implement token elevation information.
3 files changed, 39 insertions(+), 7 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 5822dec9b15..dda6cabe1cf 100644
index cd271fde9c..b1dd999cf5 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -597,18 +597,26 @@ NTSTATUS WINAPI NtQueryInformationToken(
@@ -625,18 +625,26 @@ NTSTATUS WINAPI NtQueryInformationToken(
SERVER_END_REQ;
break;
case TokenElevationType:
@ -45,10 +45,10 @@ index 5822dec9b15..dda6cabe1cf 100644
case TokenSessionId:
{
diff --git a/server/protocol.def b/server/protocol.def
index b3dce66eb9c..33f1d5f0ab8 100644
index 90af9df7f4..93afaabca1 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3673,6 +3673,14 @@ struct handle_info
@@ -3643,6 +3643,14 @@ struct handle_info
@END
@ -64,10 +64,10 @@ index b3dce66eb9c..33f1d5f0ab8 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/token.c b/server/token.c
index 7ab0f634c05..6a1085bae12 100644
index 6d193603b4..64f20e1b57 100644
--- a/server/token.c
+++ b/server/token.c
@@ -126,6 +126,7 @@ struct token
@@ -112,6 +112,7 @@ struct token
ACL *default_dacl; /* the default DACL to assign to objects created by this user */
TOKEN_SOURCE source; /* source of the token */
int impersonation_level; /* impersonation level this token is capable of if non-primary token */
@ -75,7 +75,7 @@ index 7ab0f634c05..6a1085bae12 100644
};
struct privilege
@@ -566,7 +567,7 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -545,7 +546,7 @@ static struct token *create_token( unsigned primary, const SID *user,
const LUID_AND_ATTRIBUTES *privs, unsigned int priv_count,
const ACL *default_dacl, TOKEN_SOURCE source,
const luid_t *modified_id,
@ -84,7 +84,7 @@ index 7ab0f634c05..6a1085bae12 100644
{
struct token *token = alloc_object( &token_ops );
if (token)
@@ -588,6 +589,7 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -567,6 +568,7 @@ static struct token *create_token( unsigned primary, const SID *user,
token->impersonation_level = impersonation_level;
token->default_dacl = NULL;
token->primary_group = NULL;
@ -92,7 +92,7 @@ index 7ab0f634c05..6a1085bae12 100644
/* copy user */
token->user = memdup( user, security_sid_len( user ));
@@ -700,7 +702,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -682,7 +684,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
token = create_token( primary, src_token->user, NULL, 0,
NULL, 0, src_token->default_dacl,
src_token->source, modified_id,
@ -102,16 +102,16 @@ index 7ab0f634c05..6a1085bae12 100644
if (!token) return token;
/* copy groups */
@@ -904,7 +907,7 @@ struct token *token_create_admin( void )
@@ -888,7 +891,7 @@ struct token *token_create_admin( void )
static const TOKEN_SOURCE admin_source = {"SeMgr", {0, 0}};
token = create_token( TRUE, user_sid, admin_groups, sizeof(admin_groups)/sizeof(admin_groups[0]),
admin_privs, sizeof(admin_privs)/sizeof(admin_privs[0]), default_dacl,
token = create_token( TRUE, user_sid, admin_groups, ARRAY_SIZE( admin_groups ),
admin_privs, ARRAY_SIZE( admin_privs ), default_dacl,
- admin_source, NULL, -1 );
+ admin_source, NULL, -1, TokenElevationTypeFull );
/* we really need a primary group */
assert( token->primary_group );
}
@@ -1652,6 +1655,19 @@ DECL_HANDLER(get_token_statistics)
@@ -1627,6 +1630,19 @@ DECL_HANDLER(get_token_statistics)
}
}
@ -132,5 +132,5 @@ index 7ab0f634c05..6a1085bae12 100644
{
struct token *token;
--
2.13.1
2.19.1

View File

@ -1,4 +1,4 @@
From 971789f2af6149998e54382522569b3790309cf2 Mon Sep 17 00:00:00 2001
From 7d07ac217db0b5226fed0b7233fdb21ef70b0cc9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 7 Aug 2017 02:28:35 +0200
Subject: [PATCH] server: Implement token integrity level.
@ -10,10 +10,10 @@ Subject: [PATCH] server: Implement token integrity level.
3 files changed, 48 insertions(+), 12 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 9e60196..59c6e49 100644
index b1dd999cf5..249b715da3 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -340,7 +340,7 @@ NTSTATUS WINAPI NtQueryInformationToken(
@@ -400,7 +400,7 @@ NTSTATUS WINAPI NtQueryInformationToken(
0, /* TokenAccessInformation */
0, /* TokenVirtualizationAllowed */
0, /* TokenVirtualizationEnabled */
@ -22,7 +22,7 @@ index 9e60196..59c6e49 100644
0, /* TokenUIAccess */
0, /* TokenMandatoryPolicy */
0, /* TokenLogonSid */
@@ -593,18 +593,23 @@ NTSTATUS WINAPI NtQueryInformationToken(
@@ -653,18 +653,23 @@ NTSTATUS WINAPI NtQueryInformationToken(
}
break;
case TokenIntegrityLevel:
@ -55,10 +55,10 @@ index 9e60196..59c6e49 100644
case TokenAppContainerSid:
{
diff --git a/server/protocol.def b/server/protocol.def
index c961eaf..0bb04cd 100644
index 93afaabca1..685f69f4e2 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3388,6 +3388,13 @@ enum caret_state
@@ -3405,6 +3405,13 @@ enum caret_state
VARARG(sid,SID); /* the sid specified by which_sid from the token */
@END
@ -73,10 +73,10 @@ index c961eaf..0bb04cd 100644
obj_handle_t handle; /* handle to the token */
@REPLY
diff --git a/server/token.c b/server/token.c
index 355a523..1ed994a 100644
index e97c460ae0..fb40c1b551 100644
--- a/server/token.c
+++ b/server/token.c
@@ -112,6 +112,7 @@ struct token
@@ -113,6 +113,7 @@ struct token
TOKEN_SOURCE source; /* source of the token */
int impersonation_level; /* impersonation level this token is capable of if non-primary token */
TOKEN_ELEVATION_TYPE elevation; /* elevation level */
@ -84,7 +84,7 @@ index 355a523..1ed994a 100644
};
struct privilege
@@ -544,7 +545,8 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -546,7 +547,8 @@ static struct token *create_token( unsigned primary, const SID *user,
const LUID_AND_ATTRIBUTES *privs, unsigned int priv_count,
const ACL *default_dacl, TOKEN_SOURCE source,
const luid_t *modified_id,
@ -94,7 +94,7 @@ index 355a523..1ed994a 100644
{
struct token *token = alloc_object( &token_ops );
if (token)
@@ -625,6 +627,7 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -630,6 +632,7 @@ static struct token *create_token( unsigned primary, const SID *user,
}
token->source = source;
@ -102,7 +102,7 @@ index 355a523..1ed994a 100644
}
return token;
}
@@ -680,7 +683,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -685,7 +688,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
NULL, 0, src_token->default_dacl,
src_token->source, modified_id,
impersonation_level,
@ -112,16 +112,16 @@ index 355a523..1ed994a 100644
if (!token) return token;
/* copy groups */
@@ -884,7 +888,7 @@ struct token *token_create_admin( void )
@@ -891,7 +895,7 @@ struct token *token_create_admin( void )
static const TOKEN_SOURCE admin_source = {"SeMgr", {0, 0}};
token = create_token( TRUE, user_sid, admin_groups, sizeof(admin_groups)/sizeof(admin_groups[0]),
admin_privs, sizeof(admin_privs)/sizeof(admin_privs[0]), default_dacl,
token = create_token( TRUE, user_sid, admin_groups, ARRAY_SIZE( admin_groups ),
admin_privs, ARRAY_SIZE( admin_privs ), default_dacl,
- admin_source, NULL, -1, TokenElevationTypeFull );
+ admin_source, NULL, -1, TokenElevationTypeFull, &high_label_sid );
/* we really need a primary group */
assert( token->primary_group );
}
@@ -1530,6 +1534,26 @@ DECL_HANDLER(get_token_sid)
@@ -1525,6 +1529,26 @@ DECL_HANDLER(get_token_sid)
}
}
@ -149,5 +149,5 @@ index 355a523..1ed994a 100644
DECL_HANDLER(get_token_groups)
{
--
1.9.1
2.19.1

View File

@ -198,7 +198,7 @@ index af2ba3d..57bf0ec 100644
}
- if (!(process = create_process( socket_fd, parent, req->inherit_all, sd ))) goto done;
+ if (!(process = create_process( socket_fd, current, req->inherit_all, sd, token ))) goto done;
+ if (!(process = create_process( socket_fd, parent, req->inherit_all, sd, token ))) goto done;
process->startup_info = (struct startup_info *)grab_object( info );

View File

@ -1,175 +0,0 @@
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Subject: [PATCH] browseui: Implement PROGDLG_AUTOTIME flag for IProgressDialog.
Message-Id: <PS2P216MB0066C805C2E0BB70A2AA95E593E00@PS2P216MB0066.KORP216.PROD.OUTLOOK.COM>
Date: Wed, 10 Oct 2018 05:38:30 +0000
From: Michael Müller <michael@fds-team.de>
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45970
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
---
dlls/browseui/browseui.rc | 5 +++
dlls/browseui/progressdlg.c | 65 ++++++++++++++++++++++++++++++++++---
dlls/browseui/resids.h | 5 +++
3 files changed, 70 insertions(+), 5 deletions(-)
diff --git a/dlls/browseui/browseui.rc b/dlls/browseui/browseui.rc
index 4c612e93e3..6a152d7bcf 100644
--- a/dlls/browseui/browseui.rc
+++ b/dlls/browseui/browseui.rc
@@ -25,6 +25,11 @@ LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
STRINGTABLE
{
IDS_CANCELLING "Canceling..."
+ IDS_REMAINING1 "%u %s remaining"
+ IDS_REMAINING2 "%u %s and %u %s remaining"
+ IDS_SECONDS "seconds"
+ IDS_MINUTES "minutes"
+ IDS_HOURS "hours"
}
IDD_PROGRESS_DLG DIALOG 0, 0, 260, 85
diff --git a/dlls/browseui/progressdlg.c b/dlls/browseui/progressdlg.c
index 2355b0cfa0..88c629099a 100644
--- a/dlls/browseui/progressdlg.c
+++ b/dlls/browseui/progressdlg.c
@@ -74,6 +74,9 @@ typedef struct tagProgressDialog {
ULONGLONG ullCompleted;
ULONGLONG ullTotal;
HWND hwndDisabledParent; /* For modal dialog: the parent that need to be re-enabled when the dialog ends */
+ ULONGLONG startTime;
+ LPWSTR remainingMsg[2];
+ LPWSTR timeMsg[3];
} ProgressDialog;
static inline ProgressDialog *impl_from_IProgressDialog(IProgressDialog *iface)
@@ -158,6 +161,22 @@ static void update_dialog(ProgressDialog *This, DWORD dwUpdate)
}
}
+static void load_time_strings(ProgressDialog *This)
+{
+ int i;
+
+ for (i = 0; i < 2; i++)
+ {
+ if (!This->remainingMsg[i])
+ This->remainingMsg[i] = load_string(BROWSEUI_hinstance, IDS_REMAINING1 + i);
+ }
+ for (i = 0; i < 3; i++)
+ {
+ if (!This->timeMsg[i])
+ This->timeMsg[i] = load_string(BROWSEUI_hinstance, IDS_SECONDS + i);
+ }
+}
+
static void end_dialog(ProgressDialog *This)
{
SendMessageW(This->hwnd, WM_DLG_DESTROY, 0, 0);
@@ -260,14 +279,18 @@ static DWORD WINAPI dialog_thread(LPVOID lpParameter)
static void ProgressDialog_Destructor(ProgressDialog *This)
{
+ int i;
TRACE("destroying %p\n", This);
if (This->hwnd)
end_dialog(This);
- heap_free(This->lines[0]);
- heap_free(This->lines[1]);
- heap_free(This->lines[2]);
+ for (i = 0; i < 3; i++)
+ heap_free(This->lines[i]);
heap_free(This->cancelMsg);
heap_free(This->title);
+ for (i = 0; i < 2; i++)
+ heap_free(This->remainingMsg[i]);
+ for (i = 0; i < 3; i++)
+ heap_free(This->timeMsg[i]);
This->cs.DebugInfo->Spare[0] = 0;
DeleteCriticalSection(&This->cs);
heap_free(This);
@@ -329,8 +352,6 @@ static HRESULT WINAPI ProgressDialog_StartProgressDialog(IProgressDialog *iface,
TRACE("(%p, %p, %x, %p)\n", iface, punkEnableModeless, dwFlags, reserved);
if (punkEnableModeless || reserved)
FIXME("Reserved parameters not null (%p, %p)\n", punkEnableModeless, reserved);
- if (dwFlags & PROGDLG_AUTOTIME)
- FIXME("Flags PROGDLG_AUTOTIME not supported\n");
if (dwFlags & PROGDLG_NOTIME)
FIXME("Flags PROGDLG_NOTIME not supported\n");
@@ -365,6 +386,10 @@ static HRESULT WINAPI ProgressDialog_StartProgressDialog(IProgressDialog *iface,
This->hwndDisabledParent = hwndDisable;
}
+ if (dwFlags & PROGDLG_AUTOTIME)
+ load_time_strings(This);
+
+ This->startTime = GetTickCount64();
LeaveCriticalSection(&This->cs);
return S_OK;
@@ -422,6 +447,34 @@ static BOOL WINAPI ProgressDialog_HasUserCancelled(IProgressDialog *iface)
return This->isCancelled;
}
+static void update_time_remaining(ProgressDialog *This, ULONGLONG ullCompleted, ULONGLONG ullTotal)
+{
+ unsigned int remaining, remainder = 0;
+ ULONGLONG elapsed;
+ WCHAR line[128];
+ int i;
+
+ if (!This->startTime || !ullCompleted || !ullTotal)
+ return;
+
+ elapsed = GetTickCount64() - This->startTime;
+ remaining = (elapsed * ullTotal / ullCompleted - elapsed) / 1000;
+
+ for (i = 0; remaining >= 60 && i < 2; i++)
+ {
+ remainder = remaining % 60;
+ remaining /= 60;
+ }
+
+ if (i > 0 && remaining < 2 && remainder != 0)
+ wsprintfW(line, This->remainingMsg[1], remaining, This->timeMsg[i], remainder, This->timeMsg[i-1]);
+ else
+ wsprintfW(line, This->remainingMsg[0], remaining, This->timeMsg[i]);
+
+ set_buffer(&This->lines[2], line);
+ This->dwUpdate |= UPDATE_LINE3;
+}
+
static HRESULT WINAPI ProgressDialog_SetProgress64(IProgressDialog *iface, ULONGLONG ullCompleted, ULONGLONG ullTotal)
{
ProgressDialog *This = impl_from_IProgressDialog(iface);
@@ -434,6 +487,8 @@ static HRESULT WINAPI ProgressDialog_SetProgress64(IProgressDialog *iface, ULONG
This->ullCompleted = ullCompleted;
This->dwUpdate |= UPDATE_PROGRESS;
hwnd = This->hwnd;
+ if (This->dwFlags & PROGDLG_AUTOTIME)
+ update_time_remaining(This, ullCompleted, ullTotal);
LeaveCriticalSection(&This->cs);
if (hwnd)
diff --git a/dlls/browseui/resids.h b/dlls/browseui/resids.h
index cd44a8ebd9..865cdd1a5e 100644
--- a/dlls/browseui/resids.h
+++ b/dlls/browseui/resids.h
@@ -21,6 +21,11 @@
#include "commctrl.h"
#define IDS_CANCELLING 16
+#define IDS_REMAINING1 17
+#define IDS_REMAINING2 18
+#define IDS_SECONDS 19
+#define IDS_MINUTES 20
+#define IDS_HOURS 21
#define IDC_ANIMATION 100
#define IDC_PROGRESS_BAR 102
--
2.19.1

View File

@ -1 +0,0 @@
Fixes: [45970] - browseui: Implement PROGDLG_AUTOTIME flag for IProgressDialog

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "e52a20f5bf86d156e1130e8268c65e04032e8caa"
echo "82dbf75dc064bb03b5dfc5d8a82b9782a7272ce2"
}
# Show version information
@ -96,7 +96,6 @@ patch_enable_all ()
enable_avifile_dll16_AVIStreamGetFrame="$1"
enable_bcrypt_BCryptDeriveKeyPBKDF2="$1"
enable_bcrypt_BCryptGenerateKeyPair="$1"
enable_browseui_Progress_Dialog="$1"
enable_comctl32_Listview_DrawItem="$1"
enable_comdlg32_lpstrFileTitle="$1"
enable_configure_Absolute_RPATH="$1"
@ -454,9 +453,6 @@ patch_enable ()
bcrypt-BCryptGenerateKeyPair)
enable_bcrypt_BCryptGenerateKeyPair="$2"
;;
browseui-Progress_Dialog)
enable_browseui_Progress_Dialog="$2"
;;
comctl32-Listview_DrawItem)
enable_comctl32_Listview_DrawItem="$2"
;;
@ -2575,21 +2571,6 @@ if test "$enable_bcrypt_BCryptGenerateKeyPair" -eq 1; then
) >> "$patchlist"
fi
# Patchset browseui-Progress_Dialog
# |
# | This patchset fixes the following Wine bugs:
# | * [#45970] - browseui: Implement PROGDLG_AUTOTIME flag for IProgressDialog
# |
# | Modified files:
# | * dlls/browseui/browseui.rc, dlls/browseui/progressdlg.c, dlls/browseui/resids.h
# |
if test "$enable_browseui_Progress_Dialog" -eq 1; then
patch_apply browseui-Progress_Dialog/0002-browseui-Implement-PROGDLG_AUTOTIME-flag-for-IProgre.patch
(
printf '%s\n' '+ { "Michael Müller", "browseui: Implement PROGDLG_AUTOTIME flag for IProgressDialog.", 1 },';
) >> "$patchlist"
fi
# Patchset comctl32-Listview_DrawItem
# |
# | This patchset fixes the following Wine bugs:

View File

@ -1,18 +1,18 @@
From 02879d85a14dd6fff5c473cf38f92dab1305f573 Mon Sep 17 00:00:00 2001
From 2818967ffcc15779d8e0398eaf2f834f05fa21bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 27 Jun 2017 02:08:50 +0200
Subject: server: Improve handling of hooks for normal (non-injected) hardware
messages.
Subject: [PATCH] server: Improve handling of hooks for normal (non-injected)
hardware messages.
---
server/queue.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/server/queue.c b/server/queue.c
index 941fcb6a307..ee8e5255848 100644
index 919e0cc350..16832c7aa4 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -1715,7 +1715,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
@@ -1716,7 +1716,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
struct hardware_msg_data *msg_data;
struct message *msg;
unsigned int i, time, flags;
@ -21,9 +21,9 @@ index 941fcb6a307..ee8e5255848 100644
static const unsigned int messages[] =
{
@@ -1821,13 +1821,13 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
@@ -1822,13 +1822,13 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
/* specify a sender only when sending the last message */
if (!(flags & ((1 << sizeof(messages)/sizeof(messages[0])) - 1)))
if (!(flags & ((1 << ARRAY_SIZE( messages )) - 1)))
{
- if (!(wait = send_hook_ll_message( desktop, msg, input, sender )))
+ if (!(hooked = send_hook_ll_message( desktop, msg, input, sender )))
@ -37,7 +37,7 @@ index 941fcb6a307..ee8e5255848 100644
}
/* queue a hardware message for a keyboard event */
@@ -1839,7 +1839,7 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c
@@ -1840,7 +1840,7 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c
struct message *msg;
unsigned char vkey = input->kbd.vkey;
unsigned int message_code, time;
@ -46,7 +46,7 @@ index 941fcb6a307..ee8e5255848 100644
if (!(time = input->kbd.time)) time = get_tick_count();
@@ -1972,10 +1972,10 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c
@@ -1973,10 +1973,10 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c
msg_data->flags |= (flags & (KF_EXTENDED | KF_ALTDOWN | KF_UP)) >> 8;
}
@ -59,7 +59,7 @@ index 941fcb6a307..ee8e5255848 100644
}
/* queue a hardware message for a custom type of event */
@@ -2493,7 +2493,7 @@ DECL_HANDLER(send_hardware_message)
@@ -2494,7 +2494,7 @@ DECL_HANDLER(send_hardware_message)
{
struct thread *thread = NULL;
struct desktop *desktop;
@ -69,5 +69,5 @@ index 941fcb6a307..ee8e5255848 100644
if (!(desktop = get_thread_desktop( current, 0 ))) return;
--
2.13.1
2.19.1

View File

@ -1,4 +1,4 @@
From 9d905c79b5b646eb46058f76cc1983b3adedc49b Mon Sep 17 00:00:00 2001
From 65db555c42f4f114cba9f22fbec969f971e853ef Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Wed, 24 Sep 2014 21:13:59 +0200
Subject: [PATCH] winemenubuilder: Create desktop shortcuts with absolute wine
@ -15,7 +15,7 @@ wine, and so on ...).
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/programs/winemenubuilder/Makefile.in b/programs/winemenubuilder/Makefile.in
index 07e2702..a4e28ad 100644
index 07e2702843..a4e28adc4b 100644
--- a/programs/winemenubuilder/Makefile.in
+++ b/programs/winemenubuilder/Makefile.in
@@ -1,6 +1,7 @@
@ -27,7 +27,7 @@ index 07e2702..a4e28ad 100644
C_SRCS = \
winemenubuilder.c
diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c
index dd69ff9..239502f 100644
index 26710e9e92..c0834e54af 100644
--- a/programs/winemenubuilder/winemenubuilder.c
+++ b/programs/winemenubuilder/winemenubuilder.c
@@ -107,6 +107,14 @@ WINE_DEFAULT_DEBUG_CHANNEL(menubuilder);
@ -55,7 +55,7 @@ index dd69ff9..239502f 100644
+ wine_get_config_dir(), wine_path, path, args);
fprintf(file, "Type=Application\n");
fprintf(file, "StartupNotify=true\n");
if (descr && lstrlenA(descr))
if (descr && *descr)
@@ -2505,7 +2513,8 @@ static BOOL write_freedesktop_association_entry(const char *desktopPath, const c
fprintf(desktop, "Type=Application\n");
fprintf(desktop, "Name=%s\n", friendlyAppName);
@ -67,5 +67,5 @@ index dd69ff9..239502f 100644
fprintf(desktop, "StartupNotify=true\n");
if (openWithIcon)
--
1.9.1
2.19.1