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>
This commit is contained in:
parent
ee19853867
commit
f6529a05a2
|
@ -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)) {
|
||||
|
|
|
@ -267,6 +267,9 @@ XkbDDXCompileKeymapByNames( XkbDescPtr xkb,
|
|||
nameRtrn[nameRtrnLen-1]= '\0';
|
||||
}
|
||||
free(buf);
|
||||
#ifdef WIN32
|
||||
unlink(tmpname);
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue
Block a user