This is the mail archive of the
cygwin-xfree@cygwin.com
mailing list for the Cygwin XFree86 project.
Re: XWin.exe crashes
Oh, now this is just great. I opened this email in Mozilla, hit reply,
changed the address to send this only to Alan, and it still got sent to
the mailing list. Time for a new nightly of Mozilla...
Harold
Harold L Hunt II wrote:
Alan,
Do you want to apply Alexander's patch directly, or do you want me to
apply it locally, test it, then submit it for inclusion in the trunk?
Note, this applies to xkb stuff.
Harold
Alexander Gottwald wrote:
Christopher Faylor wrote:
I thought your patch only added a "b" to reads and writes which would
indicate that it needed to operate entirely in "binmode". However, I
see that in some cases, it doesn't add the "b". Not sure why.
This seems to be the opposite of what you're implying though.
I'm not sure for the other cases. So I just changed the case where the
"wb" was definitly missing.
Fixing bugs at work showed me one thing: Changing not exactly the
condition
where the bug occured will likely introduce a new one. If the XFree
maintainer which applies the patch is sure about the other cases, he
can easily add the
"t" where it belongs.
cgf
Index: programs/Xserver/xkb/ddxLoad.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/xkb/ddxLoad.c,v
retrieving revision 3.30
diff -u -r3.30 ddxLoad.c
--- programs/Xserver/xkb/ddxLoad.c 2002/05/31 18:46:06 3.30
+++ programs/Xserver/xkb/ddxLoad.c 2002/11/03 12:29:17
@@ -413,7 +413,7 @@
else if (strlen(xkm_output_dir)+strlen(mapName)+5 <= PATH_MAX)
sprintf(buf,"%s%s.xkm",xkm_output_dir,mapName);
if (buf[0] != '\0')
- file= fopen(buf,"r");
+ file= fopen(buf,"rb");
else file= NULL;
}
else file= NULL;
This is the server. It reads the binary file. So the "b" should be
there. The automode maybe fixed this automaticly, but this is the
IMHO the better
way.
Index: programs/xkbcomp/xkbcomp.c
===================================================================
RCS file: /cvs/xc/programs/xkbcomp/xkbcomp.c,v
retrieving revision 3.17
diff -u -r3.17 xkbcomp.c
--- programs/xkbcomp/xkbcomp.c 2002/06/05 00:00:37 3.17
+++ programs/xkbcomp/xkbcomp.c 2002/11/03 14:57:04
@@ -873,16 +873,30 @@
* -- Branden Robinson
*/
int outputFileFd;
+ int binMode = 0;
+ const char *openMode = "w";
unlink(outputFile);
+#ifdef O_BINARY
+ switch (outputFormat) {
+ case WANT_XKM_FILE:
+ binMode = O_BINARY;
+ openMode = "wb";
+ break;
+ default:
+ binMode = 0;
+ break;
+ }
+#endif
outputFileFd= open(outputFile, O_WRONLY|O_CREAT|O_EXCL,
- S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
+
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH|binMode);
if (outputFileFd<0) {
ERROR1("Cannot open \"%s\" to write keyboard description\n",
outputFile);
ACTION("Exiting\n");
exit(1);
}
- out= fdopen(outputFileFd, "w");
+ + out= fdopen(outputFileFd, openMode);
/* end BR */
if (out==NULL) {
ERROR1("Cannot open \"%s\" to write keyboard description\n",
This is for xkbcomp. Here the binary file gets written. So I added "wb"
where it was needed and left the other unchanged.
bye
ago