Oh my bad, I'm not used to this style, fixed patch attached, also realized that everywhere else in kicad you are using "kicad" as the bundle name in OSX, so I changed that for consistency.
On Mon, Jan 5, 2015 at 6:38 PM, Wayne Stambaugh <stambau...@gmail.com> wrote: > Jose, > > The formatting of the if/else if statements does not follow the coding > policy. They should be formatted: > > if( condition ) > { > } > else if( condition ) > { > } > > Thanks, > > Wayne > > On 1/5/2015 4:36 PM, José Ignacio wrote: >> Whoops, I didn't realize my pre-approval email went through the list >> after all, sorry for littering the mailing list with two slightly >> different versions of the same patch. the one in this thread is the >> most current. >> >> Cheers, >> José >> >> On Mon, Jan 5, 2015 at 6:33 PM, Adam Wolf <adamw...@feelslikeburning.com> >> wrote: >>> I will test this on OS X. >>> >>> Adam Wolf >>> Cofounder and Engineer >>> W&L >>> >>> On Mon, Jan 5, 2015 at 3:31 PM, José Ignacio <jose.cyb...@gmail.com> wrote: >>>> >>>> Hello, I wrote a patch to fix the issue of Kicad creating lock/PID >>>> files for applications and open files in the user's home directory, >>>> which is unsightly and wrong according to the XDG[1]/Apple[2] >>>> standards/spec. >>>> >>>> To fix it I created a new function in common.cpp which fetches the >>>> proper path to use using environment variables and a couple fallbacks, >>>> and edited all calls to wxSingleInstanceChecker's constructor to use >>>> it. According to wxwidgets's documentation [3] the constructor >>>> *should* ignore that extra argument on windows since it uses mutexes >>>> instead of lock files. In Mac OSX I used the standard user-specific >>>> cache directory, choosing somewhat arbitrarily "org.kicad-pcb.kicad" >>>> as the app bundle name, feel free to change it if you think something >>>> else would suit better. >>>> >>>> In any case, it does need testing in those platforms. It works as >>>> expected on Debian Jessie. >>>> >>>> [1]: >>>> http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html >>>> [2]: >>>> https://developer.apple.com/library/mac/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/MacOSXDirectories/MacOSXDirectories.html#//apple_ref/doc/uid/TP40010672-CH10-SW1 >>>> [3]: >>>> http://docs.wxwidgets.org/trunk/classwx_single_instance_checker.html#aa69725041ea6c0479f65f6b468a42f1e >>>> >>>> _______________________________________________ >>>> Mailing list: https://launchpad.net/~kicad-developers >>>> Post to : kicad-developers@lists.launchpad.net >>>> Unsubscribe : https://launchpad.net/~kicad-developers >>>> More help : https://help.launchpad.net/ListHelp >>>> >>> >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> Post to : kicad-developers@lists.launchpad.net >> Unsubscribe : https://launchpad.net/~kicad-developers >> More help : https://help.launchpad.net/ListHelp >> > > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : kicad-developers@lists.launchpad.net > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp
=== modified file 'common/common.cpp' --- common/common.cpp 2014-12-23 13:01:59 +0000 +++ common/common.cpp 2015-01-05 21:51:33 +0000 @@ -305,6 +305,46 @@ return cfg; } +wxString GetKicadLockFilePath() +{ + wxFileName lockpath; + lockpath.AssignDir( wxGetHomeDir() ); // Default wx behavior + +#if defined( __WXMAC__ ) + // In OSX use the standard per user cache directory + lockpath.AppendDir( wxT( "Library" ) ); + lockpath.AppendDir( wxT( "Caches" ) ); + lockparh.AppendDir( wxT( "kicad" ) ); +#elif defined( __UNIX__ ) + wxString envstr; + // Try first the standard XDG_RUNTIME_DIR, falling back to XDG_CACHE_HOME + if( wxGetEnv( wxT( "XDG_RUNTIME_DIR" ), &envstr ) && !envstr.IsEmpty() ) + { + lockpath.AssignDir( envstr ); + } + else if( wxGetEnv( wxT( "XDG_CACHE_HOME" ), &envstr ) && !envstr.IsEmpty() ) + { + lockpath.AssignDir( envstr ); + } + else + { + // If all fails, just use ~/.cache + lockpath.AppendDir( wxT( ".cache" ) ); + } + + lockpath.AppendDir( wxT( "kicad" ) ); +#endif + +#if defined( __WXMAC__ ) || defined( __UNIX__ ) + if( !lockpath.DirExists() ) + { + // Lockfiles should be only readable by the user + lockpath.Mkdir( 0700, wxPATH_MKDIR_FULL ); + } +#endif + return lockpath.GetPath(); +} + wxString GetKicadConfigPath() { === modified file 'common/lockfile.cpp' --- common/lockfile.cpp 2014-10-19 20:20:16 +0000 +++ common/lockfile.cpp 2015-01-05 04:00:09 +0000 @@ -24,6 +24,7 @@ #include <wx/filename.h> #include <wx/snglinst.h> +#include <common.h> wxSingleInstanceChecker* LockFile( const wxString& aFileName ) @@ -41,7 +42,7 @@ // We can have filenames coming from Windows, so also convert Windows separator lockFileName.Replace( wxT( "\\" ), wxT( "_" ) ); - wxSingleInstanceChecker* p = new wxSingleInstanceChecker( lockFileName ); + wxSingleInstanceChecker* p = new wxSingleInstanceChecker( lockFileName, GetKicadLockFilePath() ); if( p->IsAnotherRunning() ) { === modified file 'common/pgm_base.cpp' --- common/pgm_base.cpp 2014-10-17 17:45:33 +0000 +++ common/pgm_base.cpp 2015-01-05 03:31:13 +0000 @@ -353,7 +353,7 @@ wxInitAllImageHandlers(); - m_pgm_checker = new wxSingleInstanceChecker( pgm_name.GetName().Lower() + wxT( "-" ) + wxGetUserId() ); + m_pgm_checker = new wxSingleInstanceChecker( pgm_name.GetName().Lower() + wxT( "-" ) + wxGetUserId(), GetKicadLockFilePath() ); if( m_pgm_checker->IsAnotherRunning() ) { === modified file 'include/common.h' --- include/common.h 2014-12-23 13:01:59 +0000 +++ include/common.h 2015-01-05 03:29:04 +0000 @@ -434,6 +434,12 @@ wxConfigBase* GetNewConfig( const wxString& aProgName ); /** + * Function GetKicadLockFilePath + * @return A wxString containing the path for lockfiles in Kicad + */ +wxString GetKicadLockFilePath(); + +/** * Function GetKicadConfigPath * @return A wxString containing the config path for Kicad */
_______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp