Damjan Jovanovic : winemenubuilder: Make initial directories for fd. o MIME type handling.
Alexandre Julliard
julliard at winehq.org
Mon Apr 6 09:00:35 CDT 2009
Module: wine
Branch: master
Commit: 448ca846cf22c760b7d16609d18f5baf9d98dbf1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=448ca846cf22c760b7d16609d18f5baf9d98dbf1
Author: Damjan Jovanovic <damjan.jov at gmail.com>
Date: Sun Apr 5 08:14:53 2009 +0200
winemenubuilder: Make initial directories for fd.o MIME type handling.
---
programs/winemenubuilder/winemenubuilder.c | 56 ++++++++++++++++++++++++++++
1 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c
index 96d3c0f..9dafc16 100644
--- a/programs/winemenubuilder/winemenubuilder.c
+++ b/programs/winemenubuilder/winemenubuilder.c
@@ -1668,6 +1668,57 @@ static BOOL Process_URL( LPCWSTR urlname, BOOL bWait )
return !r;
}
+static void RefreshFileTypeAssociations(void)
+{
+ HANDLE hSem = NULL;
+ char *mime_dir = NULL;
+ char *packages_dir = NULL;
+ char *applications_dir = NULL;
+
+ hSem = CreateSemaphoreA( NULL, 1, 1, "winemenubuilder_semaphore");
+ if( WAIT_OBJECT_0 != MsgWaitForMultipleObjects( 1, &hSem, FALSE, INFINITE, QS_ALLINPUT ) )
+ {
+ WINE_ERR("failed wait for semaphore\n");
+ CloseHandle(hSem);
+ hSem = NULL;
+ goto end;
+ }
+
+ mime_dir = heap_printf("%s/mime", xdg_data_dir);
+ if (mime_dir == NULL)
+ {
+ WINE_ERR("out of memory\n");
+ goto end;
+ }
+ create_directories(mime_dir);
+
+ packages_dir = heap_printf("%s/packages", mime_dir);
+ if (packages_dir == NULL)
+ {
+ WINE_ERR("out of memory\n");
+ goto end;
+ }
+ create_directories(packages_dir);
+
+ applications_dir = heap_printf("%s/applications", xdg_data_dir);
+ if (applications_dir == NULL)
+ {
+ WINE_ERR("out of memory\n");
+ goto end;
+ }
+ create_directories(applications_dir);
+
+end:
+ if (hSem)
+ {
+ ReleaseSemaphore(hSem, 1, NULL);
+ CloseHandle(hSem);
+ }
+ HeapFree(GetProcessHeap(), 0, mime_dir);
+ HeapFree(GetProcessHeap(), 0, packages_dir);
+ HeapFree(GetProcessHeap(), 0, applications_dir);
+}
+
static CHAR *next_token( LPSTR *p )
{
LPSTR token = NULL, t = *p;
@@ -1764,6 +1815,11 @@ int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show
token = next_token( &p );
if( !token )
break;
+ if( !lstrcmpA( token, "-a" ) )
+ {
+ RefreshFileTypeAssociations();
+ break;
+ }
if( !lstrcmpA( token, "-w" ) )
bWait = TRUE;
else if ( !lstrcmpA( token, "-u" ) )
More information about the wine-cvs
mailing list