91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
if( db_exists("SELECT 1 FROM vfile WHERE vid=%d", vid) ){
return;
}
content_get(vid, &manifest);
vfile_build(vid, &manifest);
blob_reset(&manifest);
}
/*
** Read the manifest file given by vid out of the repository
** and store it in the root of the local check-out.
*/
void manifest_to_disk(int vid){
char *zManFile;
|
>
>
>
>
>
>
>
>
|
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
if( db_exists("SELECT 1 FROM vfile WHERE vid=%d", vid) ){
return;
}
content_get(vid, &manifest);
vfile_build(vid, &manifest);
blob_reset(&manifest);
}
/*
** Set or clear the vfile.isexe flag for a file.
*/
static void set_or_clear_isexe(const char *zFilename, int vid, int onoff){
db_multi_exec("UPDATE vfile SET isexe=%d WHERE vid=%d and pathname=%Q",
onoff, vid, zFilename);
}
/*
** Read the manifest file given by vid out of the repository
** and store it in the root of the local check-out.
*/
void manifest_to_disk(int vid){
char *zManFile;
|
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
blob_appendf(&filename, "%s/", g.zLocalRoot);
baseLen = blob_size(&filename);
for(i=0; i<m.nFile; i++){
int isExe;
blob_append(&filename, m.aFile[i].zName, -1);
isExe = m.aFile[i].zPerm && strstr(m.aFile[i].zPerm, "x");
file_setexe(blob_str(&filename), isExe);
blob_resize(&filename, baseLen);
}
blob_reset(&filename);
manifest_clear(&m);
}
/*
|
>
|
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
blob_appendf(&filename, "%s/", g.zLocalRoot);
baseLen = blob_size(&filename);
for(i=0; i<m.nFile; i++){
int isExe;
blob_append(&filename, m.aFile[i].zName, -1);
isExe = m.aFile[i].zPerm && strstr(m.aFile[i].zPerm, "x");
file_setexe(blob_str(&filename), isExe);
set_or_clear_isexe(m.aFile[i].zName, vid, isExe);
blob_resize(&filename, baseLen);
}
blob_reset(&filename);
manifest_clear(&m);
}
/*
|