diff options
author | Colin Harrison <colin.harrison@virgin.net> | 2011-10-08 14:39:07 +0100 |
---|---|---|
committer | Jon TURNEY <jon.turney@dronecode.org.uk> | 2011-11-02 14:07:36 +0000 |
commit | f6529a05a2f087cb57a7fe84f226fef3780728d0 (patch) | |
tree | 9a6e039b931bb8fa0e23d1ee1d55538e15371daa /xkb | |
parent | ee1985386700288af1a8b1789dcad0d7d9c97393 (diff) |
Xming: Always remove temporary file used when invoking xkbcomp on Win32
When built for native Win32, pipe() & fork() aren't available, so we
use a tempoary file and system() to invoke xkbcomp
Ensure the temporary file is always removed. It was only being removed
on most errors, not on success :S
Also fix a couple of warnings which occur when built with WIN32 defined
Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Diffstat (limited to 'xkb')
-rw-r--r-- | xkb/ddxList.c | 8 | ||||
-rw-r--r-- | xkb/ddxLoad.c | 3 |
2 files changed, 9 insertions, 2 deletions
diff --git a/xkb/ddxList.c b/xkb/ddxList.c index 7de8efc15..e599f9169 100644 --- a/xkb/ddxList.c +++ b/xkb/ddxList.c @@ -44,7 +44,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #ifdef WIN32 /* from ddxLoad.c */ -extern const char* Win32TempDir(); +extern const char* Win32TempDir(void); extern int Win32System(const char *cmdline); #undef System #define System Win32System @@ -126,10 +126,11 @@ XkbDDXListComponent( DeviceIntPtr dev, char *file,*map,*tmp,*buf=NULL; FILE *in; Status status; -int rval; Bool haveDir; #ifdef WIN32 char tmpname[PATH_MAX]; +#else +int rval; #endif if ((list->pattern[what]==NULL)||(list->pattern[what][0]=='\0')) @@ -223,6 +224,9 @@ char tmpname[PATH_MAX]; buf = malloc(PATH_MAX * sizeof(char)); if (!buf) { fclose(in); +#ifdef WIN32 + unlink(tmpname); +#endif return BadAlloc; } while ((status==Success)&&((tmp=fgets(buf,PATH_MAX,in))!=NULL)) { diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c index e1020358a..219d39c9a 100644 --- a/xkb/ddxLoad.c +++ b/xkb/ddxLoad.c @@ -267,6 +267,9 @@ XkbDDXCompileKeymapByNames( XkbDescPtr xkb, nameRtrn[nameRtrnLen-1]= '\0'; } free(buf); +#ifdef WIN32 + unlink(tmpname); +#endif return TRUE; } else |