Fossil

Diff
Login

Differences From Artifact [04e02d756d]:

To Artifact [896d002ca8]:


575
576
577
578
579
580
581
582

583
584
585
586
587
588
589
590
591
592
593
594
595
596


597
598
599
600
601
602
603
575
576
577
578
579
580
581

582
583
584
585
586
587
588
589
590
591
592
593
594


595
596
597
598
599
600
601
602
603







-
+












-
-
+
+







  *pJ = i-1;
  return 1;
}

/*
** Simplify a filename by
**
**  * Convert all \ into / on windows
**  * Convert all \ into / on windows and cygwin
**  * removing any trailing and duplicate /
**  * removing /./
**  * removing /A/../
**
** Changes are made in-place.  Return the new name length.
** If the slash parameter is non-zero, the trailing slash, if any,
** is retained.
*/
int file_simplify_name(char *z, int n, int slash){
  int i, j;
  if( n<0 ) n = strlen(z);

  /* On windows convert all \ characters to / */
#if defined(_WIN32)
  /* On windows/cygwin convert all \ characters to / */
#if defined(_WIN32) || defined(__CYGWIN__)
  for(i=0; i<n; i++){
    if( z[i]=='\\' ) z[i] = '/';
  }
#endif

  /* Removing trailing "/" characters */
  if( !slash ){
700
701
702
703
704
705
706
707



708
709
710
711
712
713
714
700
701
702
703
704
705
706

707
708
709
710
711
712
713
714
715
716







-
+
+
+








/*
** Return true if zPath is an absolute pathname.  Return false
** if it is relative.
*/
int file_is_absolute_path(const char *zPath){
  if( zPath[0]=='/'
#if defined(_WIN32)
#if defined(__CYGWIN__)
      || zPath[0]=='\\'
#elif defined(_WIN32)
      || zPath[0]=='\\'
      || (strlen(zPath)>3 && zPath[1]==':'
           && (zPath[2]=='\\' || zPath[2]=='/'))
#endif
  ){
    return 1;
  }else{