Fossil SCM

On Cygwin determine home directory the same as on win32, so cygwin can share "_fossil" with win32.

jan.nijtmans 2013-02-27 09:46 trunk
Commit 26ad1bce495990397b2a49dd229e6cb607923c00
1 file changed +13 -1
+13 -1
--- src/db.c
+++ src/db.c
@@ -29,10 +29,13 @@
2929
**
3030
*/
3131
#include "config.h"
3232
#if ! defined(_WIN32)
3333
# include <pwd.h>
34
+# if defined(__CYGWIN__)
35
+# include <sys/cygwin.h>
36
+# endif
3437
#endif
3538
#include <sqlite3.h>
3639
#include <sys/types.h>
3740
#include <sys/stat.h>
3841
#include <unistd.h>
@@ -793,20 +796,29 @@
793796
*/
794797
void db_open_config(int useAttach){
795798
char *zDbName;
796799
const char *zHome;
797800
if( g.configOpen ) return;
798
-#if defined(_WIN32)
801
+#if defined(_WIN32) || defined(__CYGWIN__)
799802
zHome = fossil_getenv("LOCALAPPDATA");
800803
if( zHome==0 ){
801804
zHome = fossil_getenv("APPDATA");
802805
if( zHome==0 ){
803806
char *zDrive = fossil_getenv("HOMEDRIVE");
804807
zHome = fossil_getenv("HOMEPATH");
805808
if( zDrive && zHome ) zHome = mprintf("%s%s", zDrive, zHome);
806809
}
807810
}
811
+#if defined(__CYGWIN__)
812
+ if( zHome!=0 ){
813
+ /* We now have the win32 path, but we need the Cygwin equivalent */
814
+ ssize_t size = cygwin_conv_path(CCP_WIN_A_TO_POSIX, zHome, 0, 0);
815
+ char *converted = fossil_malloc(size);
816
+ cygwin_conv_path(CCP_WIN_A_TO_POSIX, zHome, converted, size);
817
+ zHome = converted;
818
+ }
819
+#endif
808820
if( zHome==0 ){
809821
fossil_fatal("cannot locate home directory - "
810822
"please set the LOCALAPPDATA or APPDATA or HOMEPATH "
811823
"environment variables");
812824
}
813825
--- src/db.c
+++ src/db.c
@@ -29,10 +29,13 @@
29 **
30 */
31 #include "config.h"
32 #if ! defined(_WIN32)
33 # include <pwd.h>
 
 
 
34 #endif
35 #include <sqlite3.h>
36 #include <sys/types.h>
37 #include <sys/stat.h>
38 #include <unistd.h>
@@ -793,20 +796,29 @@
793 */
794 void db_open_config(int useAttach){
795 char *zDbName;
796 const char *zHome;
797 if( g.configOpen ) return;
798 #if defined(_WIN32)
799 zHome = fossil_getenv("LOCALAPPDATA");
800 if( zHome==0 ){
801 zHome = fossil_getenv("APPDATA");
802 if( zHome==0 ){
803 char *zDrive = fossil_getenv("HOMEDRIVE");
804 zHome = fossil_getenv("HOMEPATH");
805 if( zDrive && zHome ) zHome = mprintf("%s%s", zDrive, zHome);
806 }
807 }
 
 
 
 
 
 
 
 
 
808 if( zHome==0 ){
809 fossil_fatal("cannot locate home directory - "
810 "please set the LOCALAPPDATA or APPDATA or HOMEPATH "
811 "environment variables");
812 }
813
--- src/db.c
+++ src/db.c
@@ -29,10 +29,13 @@
29 **
30 */
31 #include "config.h"
32 #if ! defined(_WIN32)
33 # include <pwd.h>
34 # if defined(__CYGWIN__)
35 # include <sys/cygwin.h>
36 # endif
37 #endif
38 #include <sqlite3.h>
39 #include <sys/types.h>
40 #include <sys/stat.h>
41 #include <unistd.h>
@@ -793,20 +796,29 @@
796 */
797 void db_open_config(int useAttach){
798 char *zDbName;
799 const char *zHome;
800 if( g.configOpen ) return;
801 #if defined(_WIN32) || defined(__CYGWIN__)
802 zHome = fossil_getenv("LOCALAPPDATA");
803 if( zHome==0 ){
804 zHome = fossil_getenv("APPDATA");
805 if( zHome==0 ){
806 char *zDrive = fossil_getenv("HOMEDRIVE");
807 zHome = fossil_getenv("HOMEPATH");
808 if( zDrive && zHome ) zHome = mprintf("%s%s", zDrive, zHome);
809 }
810 }
811 #if defined(__CYGWIN__)
812 if( zHome!=0 ){
813 /* We now have the win32 path, but we need the Cygwin equivalent */
814 ssize_t size = cygwin_conv_path(CCP_WIN_A_TO_POSIX, zHome, 0, 0);
815 char *converted = fossil_malloc(size);
816 cygwin_conv_path(CCP_WIN_A_TO_POSIX, zHome, converted, size);
817 zHome = converted;
818 }
819 #endif
820 if( zHome==0 ){
821 fossil_fatal("cannot locate home directory - "
822 "please set the LOCALAPPDATA or APPDATA or HOMEPATH "
823 "environment variables");
824 }
825

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button