[#6864] ruby 1.8.4 rc breaks alias_method/rails in bad ways — "Ara.T.Howard" <ara.t.howard@...>

20 messages 2005/12/09
[#6870] Re: ruby 1.8.4 rc breaks alias_method/rails in bad ways — =?ISO-8859-15?Q?Florian_Gro=DF?= <florgro@...> 2005/12/12

Ara.T.Howard wrote:

[#6872] Re: ruby 1.8.4 rc breaks alias_method/rails in bad ways — ara.t.howard@... 2005/12/12

On Tue, 13 Dec 2005, [ISO-8859-15] Florian Growrote:

[#6873] Re: ruby 1.8.4 rc breaks alias_method/rails in bad ways — James Edward Gray II <james@...> 2005/12/12

On Dec 12, 2005, at 1:19 PM, ara.t.howard@noaa.gov wrote:

[#6874] Re: ruby 1.8.4 rc breaks alias_method/rails in bad ways — ara.t.howard@... 2005/12/12

On Tue, 13 Dec 2005, James Edward Gray II wrote:

[#6891] Time.utc! and Time.localtime! — Daniel Hobe <hobe@...>

Writing a script yesterday I found out, much to my surprise, that the

16 messages 2005/12/14

[#6918] change to yaml in 1.8.4 — ara.t.howard@...

14 messages 2005/12/16

[#6934] 1.8.x, YAML, and release management — Ryan Davis <ryand-ruby@...>

I'm concerned that 1.8.3's acceptance of non-backwards-compatible

28 messages 2005/12/18

[#6996] Problems building 1.8.4 with VS8 C++ Express Edition (cl 14.00) — Austin Ziegler <halostatue@...>

Visual Studio C++ 2005 Express Edition (VS 8.0)

20 messages 2005/12/27

Re: [PATCH] Dir.tmpdir RDoc

From: Zach Dennis <zdennis@...>
Date: 2005-12-15 20:39:36 UTC
List: ruby-core #6910
nobuyoshi nakada wrote:
> Hi,
> 
> At Thu, 15 Dec 2005 12:01:22 +0900,
> Daniel Berger wrote in [ruby-core:06896]:
> 
>>Also, GetSystemWindowsDirectory() is deprecated on
>>Windows in favor of ShGetFolderPath().  From the MSDN
>>docs:
>>
>>"Applications should store code in the Program Files
>>folder and persistent data in the Application Data
>>folder in the user's profile."
> 
> 
> TEMP direcotry is defaulted to "%USERPROFILE%/Local
> Settings/Temp", but how can you tell USERPROFILE with that
> API?
> 

--- begin code for windows 2000 and xp ---
#include "windows.h"
#include "shlobj.h"

void main(){
   HINSTANCE hDll= LoadLibrary( "shell32.dll" );
   FARPROC proc;
   char cPath[256];

   if( hDll ){
     proc = GetProcAddress( hDll, "SHGetSpecialFolderPathA" );
     if( proc ){
       (proc)( NULL, cPath, CSIDL_PERSONAL, FALSE );
       printf( "user home directory is:\n   %s\n", cPath );
       printf( "user temp directory is:\n   %s\\Local Settings\\Temp", 
cPath );
     }
     else{
       printf( "Error calling function!\n" );
     }
   }
}

--- end code ---

The SHGetSpecialFolderPathA should really be "SHGetSpecialFolderPath" 
because windows is supposed to determine whether or not to call 
SHGetSpecialFolderPathA or SHGetSpecialFolderPathU (for ansii/unicode).

I have never seen that actually happen though, I have always had to use 
SHGetSpecialFolderPathA for it to work, but perhaps there just needs to 
be a macro used here.


--- begin code for windows 95, 98, 2000---

void main(){
   HINSTANCE hDll= LoadLibrary( "shell32.dll" );
   FARPROC proc;
   char cPath[256];

   if( hDll ){
     proc = GetProcAddress( hDll, "SHGetFolderPathA" );
     if( proc ){
       (proc)( NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, cPath );
       printf( "user home directory is:\n   %s\n", cPath );
       printf( "user temp directory is:\n   %s\\Local Settings\\Temp", 
cPath );
     }
     else{
       printf( "Error calling function!\n" );
     }
   }
}
--- end code ---

The same rules apply to SHGetFolderPathA (in regards to calling the 
ansii/unicode version)  if i remember correctly.

There is no CSIDL_xxx value for the actual temporary directory, although 
you can find the current values at:
 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp

Information on SHGetFolderPath and SHGetSpecialFolderPath:

http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/functions/shgetfolderpath.asp
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/functions/shgetspecialfolderpath.asp

I hope this helps,

Zach

In This Thread