Date: Tue, 16 Mar 2004 00:04:04 EST-10EDT,10,-1,0,7200,3,-1,0,7200,3600 Subject: [UnixOS2_Archive] No. 315 ************************************************** Monday 15 March 2004 Number 315 ************************************************** Subjects for today 1 Re: XFree86/OS2 version 4.4.0 : Dave and Natalie" 2 DLL question : Stefan Neis 3 Re: DLL question : Henry Sobotka 4 Re: GCC 3.2.2 Beta 4 - printf bug? : Henry Sobotka **= Email 1 ==========================** Date: Sun, 14 Mar 2004 10:20:21 -0800 From: "Dave and Natalie" Subject: Re: XFree86/OS2 version 4.4.0 On Sun, 14 Mar 2004 10:59:53 +0000 (GMT), Dave Saville wrote: >Must admit that I never tried the locks. But it did seem very dead. >Nothing in /usr/adm. One thing though. I also tried on my T21 ECS1.0 >system. V3 would never work on that because of the screen. This time >I did not redirect the error stream and it whinged about being unable >to write to /tmp - because that's on another drive. Put a temp tmp on >the same drive and it all ran. However, after startx I got a twm >desktop that did not fit the screen. I could not change resolutions >and it did not scroll if I hit the edge with the mouse - *and* I >could not get back to the OS/2 desktop. Just another black screen and >again a locked up keyboard. Had to power cycle the thing. Yes it does need a /tmp and /usr/adm on the current drive. ctrl-alt-backspace should kill the X session. I'd suggest moving the discussion over to the XFree list Dave **= Email 2 ==========================** Date: Sun, 14 Mar 2004 20:56:28 +0100 (CET) From: Stefan Neis Subject: DLL question Hi, I realize that DLLs have an ugly limitation when it comes to naming them (8 digits or letters + ".dll"). Is that limitation also valid if I access the library _only_ by DosLoadModule & DosQueryProcAddr (think of Plugins)? Regards, Stefan -- Micro$oft is not an answer. It is a question. The answer is 'no'. **= Email 3 ==========================** Date: Sun, 14 Mar 2004 21:31:13 -0500 From: Henry Sobotka Subject: Re: DLL question Stefan Neis wrote: > > I realize that DLLs have an ugly limitation when it comes to naming them > (8 digits or letters + ".dll"). Is that limitation also valid if I > access the library _only_ by DosLoadModule & DosQueryProcAddr (think of > Plugins)? Yes. DosLoadModule returns 123 (ERROR_INVALID_NAME) when fed a longer name and without the load, DosQueryProcAddr fails. h~ -- Free software, free minds. **= Email 4 ==========================** Date: Sun, 14 Mar 2004 22:33:28 -0500 From: Henry Sobotka Subject: Re: GCC 3.2.2 Beta 4 - printf bug? Hi Knut, While looking into the emxomfar foo.o bar/foo.o problem (thanks for emxomfar.dbg!) I discovered that EMX's strrev is broken; it SIGSEGVs on "*p = *q" and, even if it didn't, it returns the input "string" after doing nothing with it other than the assignment to p and q. So I rolled my own (my_strrev in the revtest.c below) and found it works fine with gcc 2.8.1 and 2.95.3. But with 3.2.2 b4 I get strange behavior: [C:\temp]revtest foo reversed = 9l T The garbage is output until strlen == 16, which produces reversal + garbage: [C:\temp]revtest foofoofoofoofoof reversed = foofoofoofoofoof9l T With spaces in the string, the first 8 chars get cut off: [C:\temp]revtest "This is a very very long string reversed" reversed = desrever gnirts gnol yrev yrev a9l 4 I then added the debug printf to my_strrev and (surprise!) its presence alone fixes things: [C:\temp]revtest foo returning oof reversed = oof [C:\temp]revtest "This string should now be clearly reversed" returning desrever ylraelc eb won dluohs gnirts sihT reversed = desrever ylraelc eb won dluohs gnirts sihT A look in sd386 with fix == 0 shows that the string is fine when assigned to r, and the garbage suddenly gets added to r with the call to printf in main(). h~ -- Free software, free minds. --------------------revtest.c--------------------- #include #include int fix = 0; char* my_strrev (char *string) { char* p = string; int len = strlen(string); char q[len+1]; int i = 0; p += len-1; while (len--) { q[i] = *p--; i++; } q[i] = '\0'; p = (char*)&q; if (fix) printf("returning %s\n", p); return p; } int main(int argc, char** argv) { char* r = my_strrev(argv[1]); printf("reversed = %s\n", r); return 0; } ----------------------------end revtest.c-----------------