Fossil SCM
Refactored [bf66d61582] to move the dir-has-a-checkout-db check into the new dir_has_ckout_db() routine.
Commit
3946ff81b038c5db4f14bd9eaf4e648518ab6624c41bb0a53e1667e7533d2d23
Parent
c5dc24d4ebfa355…
2 files changed
+21
+4
-14
+21
| --- src/file.c | ||
| +++ src/file.c | ||
| @@ -2676,5 +2676,26 @@ | ||
| 2676 | 2676 | for( i = 2; i < g.argc; ++i ){ |
| 2677 | 2677 | const int check = file_is_reserved_name(g.argv[i], -1); |
| 2678 | 2678 | fossil_print("%d %s\n", check, g.argv[i]); |
| 2679 | 2679 | } |
| 2680 | 2680 | } |
| 2681 | + | |
| 2682 | + | |
| 2683 | +/* | |
| 2684 | +** Returns 1 if the given directory contains a file named .fslckout, 2 | |
| 2685 | +** if it contains a file named _FOSSIL_, else returns 0. | |
| 2686 | +*/ | |
| 2687 | +int dir_has_ckout_db(const char *zDir){ | |
| 2688 | + int rc = 0; | |
| 2689 | + char * zCkoutDb = mprintf("%//.fslckout", zDir); | |
| 2690 | + if(file_isfile(zCkoutDb, ExtFILE)){ | |
| 2691 | + rc = 1; | |
| 2692 | + }else{ | |
| 2693 | + fossil_free(zCkoutDb); | |
| 2694 | + zCkoutDb = mprintf("%//_FOSSIL_", zDir); | |
| 2695 | + if(file_isfile(zCkoutDb, ExtFILE)){ | |
| 2696 | + rc = 2; | |
| 2697 | + } | |
| 2698 | + } | |
| 2699 | + fossil_free(zCkoutDb); | |
| 2700 | + return rc; | |
| 2701 | +} | |
| 2681 | 2702 |
| --- src/file.c | |
| +++ src/file.c | |
| @@ -2676,5 +2676,26 @@ | |
| 2676 | for( i = 2; i < g.argc; ++i ){ |
| 2677 | const int check = file_is_reserved_name(g.argv[i], -1); |
| 2678 | fossil_print("%d %s\n", check, g.argv[i]); |
| 2679 | } |
| 2680 | } |
| 2681 |
| --- src/file.c | |
| +++ src/file.c | |
| @@ -2676,5 +2676,26 @@ | |
| 2676 | for( i = 2; i < g.argc; ++i ){ |
| 2677 | const int check = file_is_reserved_name(g.argv[i], -1); |
| 2678 | fossil_print("%d %s\n", check, g.argv[i]); |
| 2679 | } |
| 2680 | } |
| 2681 | |
| 2682 | |
| 2683 | /* |
| 2684 | ** Returns 1 if the given directory contains a file named .fslckout, 2 |
| 2685 | ** if it contains a file named _FOSSIL_, else returns 0. |
| 2686 | */ |
| 2687 | int dir_has_ckout_db(const char *zDir){ |
| 2688 | int rc = 0; |
| 2689 | char * zCkoutDb = mprintf("%//.fslckout", zDir); |
| 2690 | if(file_isfile(zCkoutDb, ExtFILE)){ |
| 2691 | rc = 1; |
| 2692 | }else{ |
| 2693 | fossil_free(zCkoutDb); |
| 2694 | zCkoutDb = mprintf("%//_FOSSIL_", zDir); |
| 2695 | if(file_isfile(zCkoutDb, ExtFILE)){ |
| 2696 | rc = 2; |
| 2697 | } |
| 2698 | } |
| 2699 | fossil_free(zCkoutDb); |
| 2700 | return rc; |
| 2701 | } |
| 2702 |
+4
-14
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -2952,24 +2952,14 @@ | ||
| 2952 | 2952 | if( g.argc!=2 && g.argc!=3 ) usage("?REPOSITORY?"); |
| 2953 | 2953 | if( isUiCmd && 3==g.argc && file_isdir(g.argv[2], ExtFILE)>0 ){ |
| 2954 | 2954 | /* If REPOSITORY arg is the root of a checkout, |
| 2955 | 2955 | ** chdir to that checkout so that the current version |
| 2956 | 2956 | ** gets highlighted in the timeline by default. */ |
| 2957 | - const char * zArg = g.argv[2]; | |
| 2958 | - char * zCkoutDb = mprintf("%//.fslckout", zArg); | |
| 2959 | - if(file_size(zCkoutDb, ExtFILE)<=0){ | |
| 2960 | - fossil_free(zCkoutDb); | |
| 2961 | - zCkoutDb = mprintf("%//_FOSSIL_", zArg); | |
| 2962 | - if(file_size(zCkoutDb, ExtFILE)<=0){ | |
| 2963 | - fossil_free(zCkoutDb); | |
| 2964 | - zCkoutDb = 0; | |
| 2965 | - } | |
| 2966 | - } | |
| 2967 | - if(zCkoutDb!=0){ | |
| 2968 | - fossil_free(zCkoutDb); | |
| 2969 | - if(0!=file_chdir(zArg, 0)){ | |
| 2970 | - fossil_fatal("Cannot chdir to %s", zArg); | |
| 2957 | + const char * zDir = g.argv[2]; | |
| 2958 | + if(dir_has_ckout_db(zDir)){ | |
| 2959 | + if(0!=file_chdir(zDir, 0)){ | |
| 2960 | + fossil_fatal("Cannot chdir to %s", zDir); | |
| 2971 | 2961 | } |
| 2972 | 2962 | findServerArg = 99; |
| 2973 | 2963 | fCreate = 0; |
| 2974 | 2964 | g.argv[2] = 0; |
| 2975 | 2965 | --g.argc; |
| 2976 | 2966 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -2952,24 +2952,14 @@ | |
| 2952 | if( g.argc!=2 && g.argc!=3 ) usage("?REPOSITORY?"); |
| 2953 | if( isUiCmd && 3==g.argc && file_isdir(g.argv[2], ExtFILE)>0 ){ |
| 2954 | /* If REPOSITORY arg is the root of a checkout, |
| 2955 | ** chdir to that checkout so that the current version |
| 2956 | ** gets highlighted in the timeline by default. */ |
| 2957 | const char * zArg = g.argv[2]; |
| 2958 | char * zCkoutDb = mprintf("%//.fslckout", zArg); |
| 2959 | if(file_size(zCkoutDb, ExtFILE)<=0){ |
| 2960 | fossil_free(zCkoutDb); |
| 2961 | zCkoutDb = mprintf("%//_FOSSIL_", zArg); |
| 2962 | if(file_size(zCkoutDb, ExtFILE)<=0){ |
| 2963 | fossil_free(zCkoutDb); |
| 2964 | zCkoutDb = 0; |
| 2965 | } |
| 2966 | } |
| 2967 | if(zCkoutDb!=0){ |
| 2968 | fossil_free(zCkoutDb); |
| 2969 | if(0!=file_chdir(zArg, 0)){ |
| 2970 | fossil_fatal("Cannot chdir to %s", zArg); |
| 2971 | } |
| 2972 | findServerArg = 99; |
| 2973 | fCreate = 0; |
| 2974 | g.argv[2] = 0; |
| 2975 | --g.argc; |
| 2976 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -2952,24 +2952,14 @@ | |
| 2952 | if( g.argc!=2 && g.argc!=3 ) usage("?REPOSITORY?"); |
| 2953 | if( isUiCmd && 3==g.argc && file_isdir(g.argv[2], ExtFILE)>0 ){ |
| 2954 | /* If REPOSITORY arg is the root of a checkout, |
| 2955 | ** chdir to that checkout so that the current version |
| 2956 | ** gets highlighted in the timeline by default. */ |
| 2957 | const char * zDir = g.argv[2]; |
| 2958 | if(dir_has_ckout_db(zDir)){ |
| 2959 | if(0!=file_chdir(zDir, 0)){ |
| 2960 | fossil_fatal("Cannot chdir to %s", zDir); |
| 2961 | } |
| 2962 | findServerArg = 99; |
| 2963 | fCreate = 0; |
| 2964 | g.argv[2] = 0; |
| 2965 | --g.argc; |
| 2966 |