summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Harrison <colin.harrison@virgin.net>2011-10-08 14:39:07 +0100
committerJon TURNEY <jon.turney@dronecode.org.uk>2011-11-02 14:07:36 +0000
commitf6529a05a2f087cb57a7fe84f226fef3780728d0 (patch)
tree9a6e039b931bb8fa0e23d1ee1d55538e15371daa
parentee1985386700288af1a8b1789dcad0d7d9c97393 (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>
-rw-r--r--xkb/ddxList.c8
-rw-r--r--xkb/ddxLoad.c3
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