Jump to page: 1 2
Thread overview
Environment variable for application storage under OSX ?
Jul 16, 2015
anonymous
Jul 16, 2015
byron
Jul 17, 2015
Maeriden
Jul 17, 2015
FreeSlave
Jul 17, 2015
Anonymous
Jul 17, 2015
FreeSlave
Jul 17, 2015
anonymous
Jul 17, 2015
Jacob Carlborg
Jul 17, 2015
Jacob Carlborg
Jul 17, 2015
Jacob Carlborg
Jul 17, 2015
Jacob Carlborg
July 16, 2015
I have the following code, working under Win and Linux:

---
import std.process: environment;

immutable string p;

static this() {
    version(Win32) p = environment.get("APPDATA");
    version(linux) p = "/home/" ~ environment.get("USER");
    version(OSX) p = "?";
}
---

what would be the OSX equivalent (to get the path where the applications data are commonmly stored)?
July 16, 2015
On Thursday, 16 July 2015 at 21:12:05 UTC, anonymous wrote:
> I have the following code, working under Win and Linux:
>
> ---
> import std.process: environment;
>
> immutable string p;
>
> static this() {
>     version(Win32) p = environment.get("APPDATA");
>     version(linux) p = "/home/" ~ environment.get("USER");
>     version(OSX) p = "?";
> }
> ---
>
> what would be the OSX equivalent (to get the path where the applications data are commonmly stored)?

Maybe checkout http://code.dlang.org/packages/standardpaths
July 17, 2015
On Thursday, 16 July 2015 at 21:12:05 UTC, anonymous wrote:
> I have the following code, working under Win and Linux:
>
> ---
> import std.process: environment;
>
> immutable string p;
>
> static this() {
>     version(Win32) p = environment.get("APPDATA");
>     version(linux) p = "/home/" ~ environment.get("USER");
>     version(OSX) p = "?";
> }
> ---
>
> what would be the OSX equivalent (to get the path where the applications data are commonmly stored)?

I'd like to point out that the xdg specification specifies subdirectories of the home directory to store application data on linux.
I hate when applications litter my home with configuration folders
July 17, 2015
On Thursday, 16 July 2015 at 21:12:05 UTC, anonymous wrote:
> I have the following code, working under Win and Linux:
>
> ---
> import std.process: environment;
>
> immutable string p;
>
> static this() {
>     version(Win32) p = environment.get("APPDATA");
>     version(linux) p = "/home/" ~ environment.get("USER");
>     version(OSX) p = "?";
> }
> ---
>
> what would be the OSX equivalent (to get the path where the applications data are commonmly stored)?

Hello. You may take a look at this library https://github.com/MyLittleRobo/standardpaths
OSX version uses Carbon though. You may want to use Cocoa API (which is newer), but it's Objective-C.
Also you may consider standard path for data storage without using any api or spec. It's usually $HOME/Library/Application Support/ on OSX.
July 17, 2015
On Friday, 17 July 2015 at 07:14:24 UTC, FreeSlave wrote:
> On Thursday, 16 July 2015 at 21:12:05 UTC, anonymous wrote:
>> I have the following code, working under Win and Linux:
>>
>> ---
>> import std.process: environment;
>>
>> immutable string p;
>>
>> static this() {
>>     version(Win32) p = environment.get("APPDATA");
>>     version(linux) p = "/home/" ~ environment.get("USER");
>>     version(OSX) p = "?";
>> }
>> ---
>>
>> what would be the OSX equivalent (to get the path where the applications data are commonmly stored)?
>
> Hello. You may take a look at this library https://github.com/MyLittleRobo/standardpaths
> OSX version uses Carbon though. You may want to use Cocoa API (which is newer), but it's Objective-C.
> Also you may consider standard path for data storage without using any api or spec. It's usually $HOME/Library/Application Support/ on OSX.

So for a software named 'SuperDownloader2015'  it would be

$HOME/Library/Application Support/SuperDownloader2015

right ?

so it's not user-specific and it's writable for the current user ?
sorry but it looks a bit strange, anyone can confirm ?


July 17, 2015
On Friday, 17 July 2015 at 07:33:43 UTC, Anonymous wrote:
> On Friday, 17 July 2015 at 07:14:24 UTC, FreeSlave wrote:
>> On Thursday, 16 July 2015 at 21:12:05 UTC, anonymous wrote:
>>> I have the following code, working under Win and Linux:
>>>
>>> ---
>>> import std.process: environment;
>>>
>>> immutable string p;
>>>
>>> static this() {
>>>     version(Win32) p = environment.get("APPDATA");
>>>     version(linux) p = "/home/" ~ environment.get("USER");
>>>     version(OSX) p = "?";
>>> }
>>> ---
>>>
>>> what would be the OSX equivalent (to get the path where the applications data are commonmly stored)?
>>
>> Hello. You may take a look at this library https://github.com/MyLittleRobo/standardpaths
>> OSX version uses Carbon though. You may want to use Cocoa API (which is newer), but it's Objective-C.
>> Also you may consider standard path for data storage without using any api or spec. It's usually $HOME/Library/Application Support/ on OSX.
>
> So for a software named 'SuperDownloader2015'  it would be
>
> $HOME/Library/Application Support/SuperDownloader2015
>
> right ?
>
> so it's not user-specific and it's writable for the current user ?
> sorry but it looks a bit strange, anyone can confirm ?

It is user specific obviously since it's in user home.
Can you elaborate on what do you want exactly?
From Windows and Linux examples you provided I assumed you need user-specific paths (APPDATA is defined per user on Windows). System-wide application data path is different.
July 17, 2015
On 2015-07-17 09:33, Anonymous wrote:

> So for a software named 'SuperDownloader2015'  it would be
>
> $HOME/Library/Application Support/SuperDownloader2015
>
> right ?
>
> so it's not user-specific and it's writable for the current user ?
> sorry but it looks a bit strange, anyone can confirm ?

Yes, that's correct. Some applications skip the "Application Support" directory and creates the "SuperDownloader2015" directory directly in $HOME/Library

-- 
/Jacob Carlborg
July 17, 2015
On 2015-07-16 23:12, anonymous wrote:
> I have the following code, working under Win and Linux:
>
> ---
> import std.process: environment;
>
> immutable string p;
>
> static this() {
>      version(Win32) p = environment.get("APPDATA");
>      version(linux) p = "/home/" ~ environment.get("USER");
>      version(OSX) p = "?";
> }
> ---
>
> what would be the OSX equivalent (to get the path where the applications
> data are commonmly stored)?

They are usually defined as constants in Objective-C. You can read more about it here [1][2][3].

You can also use the CoreServices framework which has a C API [4]. But I think it's deprecated and the preferred way is to use the Objective-C API's.

[1] https://developer.apple.com/library/mac/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/AccessingFilesandDirectories/AccessingFilesandDirectories.html#//apple_ref/doc/uid/TP40010672-CH3-SW3

[2] https://developer.apple.com/library/mac/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/AccessingFilesandDirectories/AccessingFilesandDirectories.html#//apple_ref/doc/uid/TP40010672-CH3-SW11

[3] https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/index.html#//apple_ref/c/econst/NSApplicationSupportDirectory

[4] http://stackoverflow.com/questions/5123361/finding-library-application-support-from-c

-- 
/Jacob Carlborg
July 17, 2015
On 2015-07-17 09:14, FreeSlave wrote:

> Hello. You may take a look at this library
> https://github.com/MyLittleRobo/standardpaths
> OSX version uses Carbon though. You may want to use Cocoa API (which is
> newer), but it's Objective-C.

DMD master now has some initial support for Objective-C.

-- 
/Jacob Carlborg
July 17, 2015
On Friday, 17 July 2015 at 07:54:43 UTC, FreeSlave wrote:
> On Friday, 17 July 2015 at 07:33:43 UTC, Anonymous wrote:
>> On Friday, 17 July 2015 at 07:14:24 UTC, FreeSlave wrote:
>>> On Thursday, 16 July 2015 at 21:12:05 UTC, anonymous wrote:
>>>> I have the following code, working under Win and Linux:
>>>>
>>>> ---
>>>> import std.process: environment;
>>>>
>>>> immutable string p;
>>>>
>>>> static this() {
>>>>     version(Win32) p = environment.get("APPDATA");
>>>>     version(linux) p = "/home/" ~ environment.get("USER");
>>>>     version(OSX) p = "?";
>>>> }
>>>> ---
>>>>
>>>> what would be the OSX equivalent (to get the path where the applications data are commonmly stored)?
>>>
>>> Hello. You may take a look at this library https://github.com/MyLittleRobo/standardpaths
>>> OSX version uses Carbon though. You may want to use Cocoa API (which is newer), but it's Objective-C.
>>> Also you may consider standard path for data storage without using any api or spec. It's usually $HOME/Library/Application Support/ on OSX.
>>
>> So for a software named 'SuperDownloader2015'  it would be
>>
>> $HOME/Library/Application Support/SuperDownloader2015
>>
>> right ?
>>
>> so it's not user-specific and it's writable for the current user ?
>> sorry but it looks a bit strange, anyone can confirm ?
>
> It is user specific obviously since it's in user home.
> Can you elaborate on what do you want exactly?
> From Windows and Linux examples you provided I assumed you need user-specific paths (APPDATA is defined per user on Windows). System-wide application data path is different.

Ok so my sample can be rewritten

----
static this() {
     version(Win32) p = environment.get("APPDATA");
     version(linux) p = "/home/" ~ environment.get("USER");
     version(OSX) p = environment.get("HOME") ~ /Library/Application Support/;
}
---

I really wish it could be possible to buy and setup OSX on any hardware...I will never buy a mac just to test the portability of a couple of projects 1 hour per week...

Anyway thx all for your answers.
« First   ‹ Prev
1 2