Fossil

Diff
Login

Diff

Differences From Artifact [a419ab6b05]:

To Artifact [901599a7e3]:


195
196
197
198
199
200
201

202
203


204
205
206
207
208


209
210
211

212
213
214
215
216
217
218
195
196
197
198
199
200
201
202


203
204
205
206
207


208
209
210
211

212
213
214
215
216
217
218
219







+
-
-
+
+



-
-
+
+


-
+







**     *  Does not contain any of these characters in the path: "\*[]?"
**     *  Does not end with "/".
**     *  Does not contain two or more "/" characters in a row.
**     *  Contains at least one character
*/
int file_is_simple_pathname(const char *z){
  int i;
  char c = z[0];
  if( *z=='/' || *z==0 ) return 0;
  if( *z=='.' ){
  if( c=='/' || c==0 ) return 0;
  if( c=='.' ){
    if( z[1]=='/' || z[1]==0 ) return 0;
    if( z[1]=='.' && (z[2]=='/' || z[2]==0) ) return 0;
  }
  for(i=0; z[i]; i++){
    if( z[i]=='\\' || z[i]=='*' || z[i]=='[' || z[i]==']' || z[i]=='?' ){
  for(i=0; (c=z[i])!=0; i++){
    if( c=='\\' || c=='*' || c=='[' || c==']' || c=='?' ){
      return 0;
    }
    if( z[i]=='/' ){
    if( c=='/' ){
      if( z[i+1]=='/' ) return 0;
      if( z[i+1]=='.' ){
        if( z[i+2]=='/' || z[i+2]==0 ) return 0;
        if( z[i+2]=='.' && (z[i+3]=='/' || z[i+3]==0) ) return 0;
      }
    }
  }