52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
** ExtFILE Symbolic links always refer to the object to which the
** link points. Symlinks are never recognized as symlinks but
** instead always appear to the the target object.
**
** SymFILE Symbolic links always appear to be files whose name is
** the target pathname of the symbolic link.
**
** RepoFILE Like symfile is allow-symlinks is true, or like
** ExtFile if allow-symlinks is false. In other words,
** symbolic links are only recognized as something different
** from files or directories if allow-symlinks is true.
*/
#define ExtFILE 0 /* Always follow symlinks */
#define RepoFILE 1 /* Follow symlinks if and only if allow-symlinks is OFF */
#define SymFILE 2 /* Never follow symlinks */
|
|
|
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
** ExtFILE Symbolic links always refer to the object to which the
** link points. Symlinks are never recognized as symlinks but
** instead always appear to the the target object.
**
** SymFILE Symbolic links always appear to be files whose name is
** the target pathname of the symbolic link.
**
** RepoFILE Like SymFILE if allow-symlinks is true, or like
** ExtFILE if allow-symlinks is false. In other words,
** symbolic links are only recognized as something different
** from files or directories if allow-symlinks is true.
*/
#define ExtFILE 0 /* Always follow symlinks */
#define RepoFILE 1 /* Follow symlinks if and only if allow-symlinks is OFF */
#define SymFILE 2 /* Never follow symlinks */
|
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
|
static const char *azReqTab[] = {
"blob", "delta", "rcvfrom", "user", "config"
};
if( !file_isfile(zFilename, ExtFILE) ) return 0;
sz = file_size(zFilename, ExtFILE);
if( sz<35328 ) return 0;
if( sz%512!=0 ) return 0;
rc = sqlite3_open_v2(zFilename, &db,
SQLITE_OPEN_READWRITE, 0);
if( rc!=0 ) goto not_a_repo;
for(i=0; i<count(azReqTab); i++){
if( sqlite3_table_column_metadata(db, "main", azReqTab[i],0,0,0,0,0,0) ){
goto not_a_repo;
}
}
|
|
|
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
|
static const char *azReqTab[] = {
"blob", "delta", "rcvfrom", "user", "config"
};
if( !file_isfile(zFilename, ExtFILE) ) return 0;
sz = file_size(zFilename, ExtFILE);
if( sz<35328 ) return 0;
if( sz%512!=0 ) return 0;
rc = sqlite3_open_v2(zFilename, &db,
SQLITE_OPEN_READWRITE, 0);
if( rc!=0 ) goto not_a_repo;
for(i=0; i<count(azReqTab); i++){
if( sqlite3_table_column_metadata(db, "main", azReqTab[i],0,0,0,0,0,0) ){
goto not_a_repo;
}
}
|
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
|
** zFilename is a symbolic link, it is the object that zFilename points
** to that is modified.
*/
int file_setexe(const char *zFilename, int onoff){
int rc = 0;
#if !defined(_WIN32)
struct stat buf;
if( fossil_stat(zFilename, &buf, RepoFILE)!=0
|| S_ISLNK(buf.st_mode)
|| S_ISDIR(buf.st_mode)
){
return 0;
}
if( onoff ){
int targetMode = (buf.st_mode & 0444)>>2;
|
|
|
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
|
** zFilename is a symbolic link, it is the object that zFilename points
** to that is modified.
*/
int file_setexe(const char *zFilename, int onoff){
int rc = 0;
#if !defined(_WIN32)
struct stat buf;
if( fossil_stat(zFilename, &buf, RepoFILE)!=0
|| S_ISLNK(buf.st_mode)
|| S_ISDIR(buf.st_mode)
){
return 0;
}
if( onoff ){
int targetMode = (buf.st_mode & 0444)>>2;
|
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
|
if( 8==nFilename ) return 1;
return zEnd[-9]=='/' ? 2 : gotSuffix;
}
case 'T':
case 't':{
if( nFilename<9 || zEnd[-9]!='.'
|| fossil_strnicmp(".fslckout", &zEnd[-9], 9) ){
return 0;
}
if( 9==nFilename ) return 1;
return zEnd[-10]=='/' ? 2 : gotSuffix;
}
default:{
return 0;
}
}
}
|
|
|
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
|
if( 8==nFilename ) return 1;
return zEnd[-9]=='/' ? 2 : gotSuffix;
}
case 'T':
case 't':{
if( nFilename<9 || zEnd[-9]!='.'
|| fossil_strnicmp(".fslckout", &zEnd[-9], 9) ){
return 0;
}
if( 9==nFilename ) return 1;
return zEnd[-10]=='/' ? 2 : gotSuffix;
}
default:{
return 0;
}
}
}
|