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 wouldI'm not sure for the other cases. So I just changed the case where the
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.
"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.
cgfThis 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
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;
way.
Index: programs/xkbcomp/xkbcomp.cThis is for xkbcomp. Here the binary file gets written. So I added "wb"
===================================================================
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",
where it was needed and left the other unchanged.
bye
ago
