Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Add '--reset' option to the file test commands. Other minor improvements. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | symlinks |
| Files: | files | file ages | folders |
| SHA1: |
996ebab71bd93ef9eca356283303b101 |
| User & Date: | mistachkin 2017-02-14 00:59:17.284 |
Context
|
2017-02-14
| ||
| 01:03 | When the --reset option is used, reset the cached stat() information before and after dealing with it. check-in: 39ea7a2f61 user: mistachkin tags: symlinks | |
| 00:59 | Add '--reset' option to the file test commands. Other minor improvements. check-in: 996ebab71b user: mistachkin tags: symlinks | |
| 00:40 | Report the effective file mode bits also. check-in: 7972e19f77 user: mistachkin tags: symlinks | |
Changes
Changes to src/file.c.
| ︙ | ︙ | |||
103 104 105 106 107 108 109 110 111 112 113 114 115 116 | } #else rc = win32_stat(zMbcs, buf, isWd); #endif fossil_path_free(zMbcs); return rc; } /* ** Fill in the fileStat variable for the file named zFilename. ** If zFilename==0, then use the previous value of fileStat if ** there is a previous value. ** ** If isWd is TRUE, do lstat() instead of stat() if allow-symlinks is on. | > > > > > > > > | 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
}
#else
rc = win32_stat(zMbcs, buf, isWd);
#endif
fossil_path_free(zMbcs);
return rc;
}
/*
** Clears the fileStat variable and its associated validity flag.
*/
static void resetStat(){
fileStatValid = 0;
memset(&fileStat, 0, sizeof(struct fossilStat));
}
/*
** Fill in the fileStat variable for the file named zFilename.
** If zFilename==0, then use the previous value of fileStat if
** there is a previous value.
**
** If isWd is TRUE, do lstat() instead of stat() if allow-symlinks is on.
|
| ︙ | ︙ | |||
956 957 958 959 960 961 962 |
#endif
blob_resize(pOut, file_simplify_name(blob_buffer(pOut),
blob_size(pOut), slash));
}
/*
** Emits the effective or raw stat() information for the specified
| | > | > > > > > | 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 |
#endif
blob_resize(pOut, file_simplify_name(blob_buffer(pOut),
blob_size(pOut), slash));
}
/*
** Emits the effective or raw stat() information for the specified
** file or directory, optionally preserving the trailing slash and
** resetting the cached stat() information.
*/
static void emitFileStat(
const char *zPath,
int raw,
int slash,
int reset
){
char zBuf[100];
Blob x;
memset(zBuf, 0, sizeof(zBuf));
blob_zero(&x);
file_canonical_name(zPath, &x, slash);
fossil_print("%s[%s] -> [%s]\n", raw ? "RAW " : "", zPath, blob_buffer(&x));
blob_reset(&x);
|
| ︙ | ︙ | |||
986 987 988 989 990 991 992 993 994 995 996 997 998 999 |
fossil_print(" l_stat_rc = %d\n", rc);
sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", testFileStat.st_size);
fossil_print(" l_stat_size = %s\n", zBuf);
sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", testFileStat.st_mtime);
fossil_print(" l_stat_mtime = %s\n", zBuf);
fossil_print(" l_stat_mode = %d\n", testFileStat.st_mode);
}else{
sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", file_wd_size(zPath));
fossil_print(" file_size = %s\n", zBuf);
sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", file_wd_mtime(zPath));
fossil_print(" file_mtime = %s\n", zBuf);
fossil_print(" file_mode = %d\n", file_wd_mode(zPath));
fossil_print(" file_isfile = %d\n", file_wd_isfile(zPath));
fossil_print(" file_isfile_or_link = %d\n", file_wd_isfile_or_link(zPath));
| > | 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 |
fossil_print(" l_stat_rc = %d\n", rc);
sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", testFileStat.st_size);
fossil_print(" l_stat_size = %s\n", zBuf);
sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", testFileStat.st_mtime);
fossil_print(" l_stat_mtime = %s\n", zBuf);
fossil_print(" l_stat_mode = %d\n", testFileStat.st_mode);
}else{
if( reset ) resetStat();
sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", file_wd_size(zPath));
fossil_print(" file_size = %s\n", zBuf);
sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", file_wd_mtime(zPath));
fossil_print(" file_mtime = %s\n", zBuf);
fossil_print(" file_mode = %d\n", file_wd_mode(zPath));
fossil_print(" file_isfile = %d\n", file_wd_isfile(zPath));
fossil_print(" file_isfile_or_link = %d\n", file_wd_isfile_or_link(zPath));
|
| ︙ | ︙ | |||
1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 |
** Display the effective file handling subsystem "settings" and then
** display file system information about the files specified, if any.
**
** Options:
**
** --open-config Open the configuration database first.
** --slash Trailing slashes, if any, are retained.
*/
void cmd_test_file_environment(void){
int i;
int slashFlag = find_option("slash",0,0)!=0;
if( find_option("open-config", 0, 0)!=0 ){
Th_OpenConfig(1);
}
fossil_print("Th_IsRepositoryOpen() = %d\n", Th_IsRepositoryOpen());
fossil_print("Th_IsConfigOpen() = %d\n", Th_IsConfigOpen());
fossil_print("filenames_are_case_sensitive() = %d\n",
filenames_are_case_sensitive());
fossil_print("db_allow_symlinks_by_default() = %d\n",
db_allow_symlinks_by_default());
fossil_print("db_allow_symlinks(0) = %d\n", db_allow_symlinks(0));
fossil_print("db_allow_symlinks(1) = %d\n", db_allow_symlinks(1));
for(i=2; i<g.argc; i++){
| > > > | | > > | | 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 |
** Display the effective file handling subsystem "settings" and then
** display file system information about the files specified, if any.
**
** Options:
**
** --open-config Open the configuration database first.
** --slash Trailing slashes, if any, are retained.
** --reset Reset cached stat() info for each file.
*/
void cmd_test_file_environment(void){
int i;
int slashFlag = find_option("slash",0,0)!=0;
int resetFlag = find_option("reset",0,0)!=0;
if( find_option("open-config", 0, 0)!=0 ){
Th_OpenConfig(1);
}
fossil_print("Th_IsLocalOpen() = %d\n", Th_IsLocalOpen());
fossil_print("Th_IsRepositoryOpen() = %d\n", Th_IsRepositoryOpen());
fossil_print("Th_IsConfigOpen() = %d\n", Th_IsConfigOpen());
fossil_print("filenames_are_case_sensitive() = %d\n",
filenames_are_case_sensitive());
fossil_print("db_allow_symlinks_by_default() = %d\n",
db_allow_symlinks_by_default());
fossil_print("db_allow_symlinks(0) = %d\n", db_allow_symlinks(0));
fossil_print("db_allow_symlinks(1) = %d\n", db_allow_symlinks(1));
for(i=2; i<g.argc; i++){
emitFileStat(g.argv[i], 1, slashFlag, resetFlag);
emitFileStat(g.argv[i], 0, slashFlag, resetFlag);
}
}
/*
** COMMAND: test-canonical-name
**
** Usage: %fossil test-canonical-name FILENAME...
**
** Test the operation of the canonical name generator.
** Also test Fossil's ability to measure attributes of a file.
**
** Options:
**
** --open-config Open the configuration database first.
** --slash Trailing slashes, if any, are retained.
** --reset Reset cached stat() info for each file.
*/
void cmd_test_canonical_name(void){
int i;
int slashFlag = find_option("slash",0,0)!=0;
int resetFlag = find_option("reset",0,0)!=0;
if( find_option("open-config", 0, 0)!=0 ){
Th_OpenConfig(1);
}
for(i=2; i<g.argc; i++){
emitFileStat(g.argv[i], 0, slashFlag, resetFlag);
}
}
/*
** Return TRUE if the given filename is canonical.
**
** Canonical names are full pathnames using "/" not "\" and which
|
| ︙ | ︙ |
Changes to src/th_main.c.
| ︙ | ︙ | |||
23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include "sqlite3.h"
#if INTERFACE
/*
** These macros are used within this file to detect if the repository and
** configuration ("user") database are currently open.
*/
#define Th_IsRepositoryOpen() (g.repositoryOpen)
#define Th_IsConfigOpen() (g.zConfigDbName!=0)
/*
** Flag parameters to the Th_FossilInit() routine used to control the
** interpreter creation and initialization process.
*/
| > | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include "sqlite3.h"
#if INTERFACE
/*
** These macros are used within this file to detect if the repository and
** configuration ("user") database are currently open.
*/
#define Th_IsLocalOpen() (g.localOpen)
#define Th_IsRepositoryOpen() (g.repositoryOpen)
#define Th_IsConfigOpen() (g.zConfigDbName!=0)
/*
** Flag parameters to the Th_FossilInit() routine used to control the
** interpreter creation and initialization process.
*/
|
| ︙ | ︙ |