Fossil

Check-in [4290a801]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix the /dir webpages to that it treats folders whos names differ only in case as the same folder when case-sensitive is off.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 4290a801a095aa84e3bf07d81612511cc909eb5c
User & Date: drh 2012-04-13 22:42:33
Context
2012-04-17
20:37
If a user tries to add an attachment which is a valid control artifact, compress the attachment and append ".gz" to its names, to prevent it from being interpreted as a real control artifact. Also fix an unrelated comment typo. check-in: cd4e0880 user: drh tags: trunk
2012-04-16
15:53
Document some more options of fossil branch new: --nosign, --user-override and --date-override. Fix a typo in fossil branch ls docco. check-in: 7727eb12 user: martin.weber tags: msw-docco
2012-04-13
22:42
Fix the /dir webpages to that it treats folders whos names differ only in case as the same folder when case-sensitive is off. check-in: 4290a801 user: drh tags: trunk
2012-04-11
16:37
Sorry - failed to tap ctrl-x s before that last commit :/. check-in: ad162862 user: stephan tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/add.c.

371
372
373
374
375
376
377












378
379
380
381
382
383
384
**   ""                 (empty string) if filenames are case sensitive
**
**   "COLLATE nocase"   if filenames are not case sensitive.
*/
const char *filename_collation(void){
  return filenames_are_case_sensitive() ? "" : "COLLATE nocase";
}













/*
** COMMAND: addremove
**
** Usage: %fossil addremove ?OPTIONS?
**
** Do all necessary "add" and "rm" commands to synchronize the repository







>
>
>
>
>
>
>
>
>
>
>
>







371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
**   ""                 (empty string) if filenames are case sensitive
**
**   "COLLATE nocase"   if filenames are not case sensitive.
*/
const char *filename_collation(void){
  return filenames_are_case_sensitive() ? "" : "COLLATE nocase";
}

/*
** Do a strncmp() operation which is either case-sensitive or not
** depending on the setting of filenames_are_case_sensitive().
*/
int filenames_strncmp(const char *zA, const char *zB, int nByte){
  if( filenames_are_case_sensitive() ){
    return fossil_strncmp(zA,zB,nByte);
  }else{
    return fossil_strnicmp(zA,zB,nByte);
  }
}

/*
** COMMAND: addremove
**
** Usage: %fossil addremove ?OPTIONS?
**
** Do all necessary "add" and "rm" commands to synchronize the repository

Changes to src/browse.c.

210
211
212
213
214
215
216

217
218
219
220
221
222
223
224
225
226
227
228
229

    db_prepare(&ins,
       "INSERT OR IGNORE INTO localfiles VALUES(pathelement(:x,0), :u)"
    );
    manifest_file_rewind(pM);
    while( (pFile = manifest_file_next(pM,0))!=0 ){
      if( nD>0 

       && (memcmp(pFile->zName, zD, nD-1)!=0 || pFile->zName[nD-1]!='/')
      ){
        continue;
      }
      if( pPrev
       && memcmp(&pFile->zName[nD],&pPrev->zName[nD],nPrev)==0
       && (pFile->zName[nD+nPrev]==0 || pFile->zName[nD+nPrev]=='/')
      ){
        continue;
      }
      db_bind_text(&ins, ":x", &pFile->zName[nD]);
      db_bind_text(&ins, ":u", pFile->zUuid);
      db_step(&ins);







>
|




|







210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230

    db_prepare(&ins,
       "INSERT OR IGNORE INTO localfiles VALUES(pathelement(:x,0), :u)"
    );
    manifest_file_rewind(pM);
    while( (pFile = manifest_file_next(pM,0))!=0 ){
      if( nD>0 
       && (filenames_strncmp(pFile->zName, zD, nD-1)!=0
           || pFile->zName[nD-1]!='/')
      ){
        continue;
      }
      if( pPrev
       && filenames_strncmp(&pFile->zName[nD],&pPrev->zName[nD],nPrev)==0
       && (pFile->zName[nD+nPrev]==0 || pFile->zName[nD+nPrev]=='/')
      ){
        continue;
      }
      db_bind_text(&ins, ":x", &pFile->zName[nD]);
      db_bind_text(&ins, ":u", pFile->zUuid);
      db_step(&ins);

Changes to src/printf.c.

860
861
862
863
864
865
866

















867
868
869
870
871
872
873
    int a, b;
    do{ 
      a = *zA++;
      b = *zB++;
    }while( a==b && a!=0 );
    return ((unsigned char)a) - (unsigned char)b;
  }

















}

/*
** Case insensitive string comparison.
*/
int fossil_strnicmp(const char *zA, const char *zB, int nByte){
  if( zA==0 ){







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
    int a, b;
    do{ 
      a = *zA++;
      b = *zB++;
    }while( a==b && a!=0 );
    return ((unsigned char)a) - (unsigned char)b;
  }
}
int fossil_strncmp(const char *zA, const char *zB, int nByte){
  if( zA==0 ){
    if( zB==0 ) return 0;
    return -1;
  }else if( zB==0 ){
    return +1;
  }else if( nByte>0 ){
    int a, b;
    do{ 
      a = *zA++;
      b = *zB++;
    }while( a==b && a!=0 && (--nByte)>0 );
    return ((unsigned char)a) - (unsigned char)b;
  }else{
    return 0;
  }
}

/*
** Case insensitive string comparison.
*/
int fossil_strnicmp(const char *zA, const char *zB, int nByte){
  if( zA==0 ){