Fossil SCM
On Cygwin determine home directory the same as on win32, so cygwin can share "_fossil" with win32.
Commit
26ad1bce495990397b2a49dd229e6cb607923c00
Parent
8cc71be05f1f64c…
1 file changed
+13
-1
M
src/db.c
+13
-1
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -29,10 +29,13 @@ | ||
| 29 | 29 | ** |
| 30 | 30 | */ |
| 31 | 31 | #include "config.h" |
| 32 | 32 | #if ! defined(_WIN32) |
| 33 | 33 | # include <pwd.h> |
| 34 | +# if defined(__CYGWIN__) | |
| 35 | +# include <sys/cygwin.h> | |
| 36 | +# endif | |
| 34 | 37 | #endif |
| 35 | 38 | #include <sqlite3.h> |
| 36 | 39 | #include <sys/types.h> |
| 37 | 40 | #include <sys/stat.h> |
| 38 | 41 | #include <unistd.h> |
| @@ -793,20 +796,29 @@ | ||
| 793 | 796 | */ |
| 794 | 797 | void db_open_config(int useAttach){ |
| 795 | 798 | char *zDbName; |
| 796 | 799 | const char *zHome; |
| 797 | 800 | if( g.configOpen ) return; |
| 798 | -#if defined(_WIN32) | |
| 801 | +#if defined(_WIN32) || defined(__CYGWIN__) | |
| 799 | 802 | zHome = fossil_getenv("LOCALAPPDATA"); |
| 800 | 803 | if( zHome==0 ){ |
| 801 | 804 | zHome = fossil_getenv("APPDATA"); |
| 802 | 805 | if( zHome==0 ){ |
| 803 | 806 | char *zDrive = fossil_getenv("HOMEDRIVE"); |
| 804 | 807 | zHome = fossil_getenv("HOMEPATH"); |
| 805 | 808 | if( zDrive && zHome ) zHome = mprintf("%s%s", zDrive, zHome); |
| 806 | 809 | } |
| 807 | 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 | |
| 808 | 820 | if( zHome==0 ){ |
| 809 | 821 | fossil_fatal("cannot locate home directory - " |
| 810 | 822 | "please set the LOCALAPPDATA or APPDATA or HOMEPATH " |
| 811 | 823 | "environment variables"); |
| 812 | 824 | } |
| 813 | 825 |
| --- 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 |