Hex Artifact Content
Not logged in

Artifact e7ca8f48677ef0fddb54498f7892315d75ab0302:


0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 62  #!/usr/bin/env b
0010: 61 73 68 0a 23 20 49 6e 69 74 69 61 6c 20 61 75  ash.# Initial au
0020: 74 68 6f 72 3a 20 4d 61 72 74 69 6e 2e 56 61 68  thor: Martin.Vah
0030: 69 40 73 6f 66 74 66 31 2e 63 6f 6d 0a 23 20 54  i@softf1.com.# T
0040: 68 69 73 20 66 69 6c 65 20 69 73 20 69 6e 20 74  his file is in t
0050: 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e  he public domain
0060: 2e 0a 23 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ..#=============
0070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0090: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
00a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 53 5f  =============.S_
00b0: 46 50 5f 44 49 52 3d 22 24 28 20 63 64 20 22 24  FP_DIR="$( cd "$
00c0: 28 20 64 69 72 6e 61 6d 65 20 22 24 7b 42 41 53  ( dirname "${BAS
00d0: 48 5f 53 4f 55 52 43 45 5b 30 5d 7d 22 20 29 22  H_SOURCE[0]}" )"
00e0: 20 26 26 20 70 77 64 20 29 22 0a 53 5f 46 50 5f   && pwd )".S_FP_
00f0: 4f 52 49 47 3d 22 60 70 77 64 60 22 0a 53 5f 54  ORIG="`pwd`".S_T
0100: 49 4d 45 53 54 41 4d 50 3d 22 60 64 61 74 65 20  IMESTAMP="`date 
0110: 2b 25 59 60 5f 60 64 61 74 65 20 2b 25 6d 60 5f  +%Y`_`date +%m`_
0120: 60 64 61 74 65 20 2b 25 64 60 5f 54 5f 60 64 61  `date +%d`_T_`da
0130: 74 65 20 2b 25 48 60 68 5f 60 64 61 74 65 20 2b  te +%H`h_`date +
0140: 25 4d 60 6d 69 6e 5f 60 64 61 74 65 20 2b 25 53  %M`min_`date +%S
0150: 60 73 22 0a 0a 0a 66 75 6e 63 5f 61 73 73 65 72  `s"...func_asser
0160: 74 5f 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68  t_exists_on_path
0170: 5f 74 32 20 28 29 20 7b 0a 20 20 20 20 6c 6f 63  _t2 () {.    loc
0180: 61 6c 20 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45  al S_NAME_OF_THE
0190: 5f 45 58 45 43 55 54 41 42 4c 45 5f 31 3d 22 24  _EXECUTABLE_1="$
01a0: 31 22 20 23 20 66 69 72 73 74 20 66 75 6e 63 74  1" # first funct
01b0: 69 6f 6e 20 61 72 67 75 6d 65 6e 74 0a 20 20 20  ion argument.   
01c0: 20 6c 6f 63 61 6c 20 53 5f 4e 41 4d 45 5f 4f 46   local S_NAME_OF
01d0: 5f 54 48 45 5f 45 58 45 43 55 54 41 42 4c 45 5f  _THE_EXECUTABLE_
01e0: 32 3d 22 24 32 22 20 23 20 6f 70 74 69 6f 6e 61  2="$2" # optiona
01f0: 6c 20 61 72 67 75 6d 65 6e 74 0a 20 20 20 20 6c  l argument.    l
0200: 6f 63 61 6c 20 53 5f 4e 41 4d 45 5f 4f 46 5f 54  ocal S_NAME_OF_T
0210: 48 45 5f 45 58 45 43 55 54 41 42 4c 45 5f 33 3d  HE_EXECUTABLE_3=
0220: 22 24 33 22 20 23 20 6f 70 74 69 6f 6e 61 6c 20  "$3" # optional 
0230: 61 72 67 75 6d 65 6e 74 0a 20 20 20 20 6c 6f 63  argument.    loc
0240: 61 6c 20 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45  al S_NAME_OF_THE
0250: 5f 45 58 45 43 55 54 41 42 4c 45 5f 34 3d 22 24  _EXECUTABLE_4="$
0260: 34 22 20 23 20 6f 70 74 69 6f 6e 61 6c 20 61 72  4" # optional ar
0270: 67 75 6d 65 6e 74 0a 20 20 20 20 23 2d 2d 2d 2d  gument.    #----
0280: 2d 2d 2d 2d 0a 20 20 20 20 23 20 46 75 6e 63 74  ----.    # Funct
0290: 69 6f 6e 20 63 61 6c 6c 73 20 6c 69 6b 65 0a 20  ion calls like. 
02a0: 20 20 20 23 0a 20 20 20 20 23 20 20 20 20 20 66     #.    #     f
02b0: 75 6e 63 5f 61 73 73 65 72 74 5f 65 78 69 73 74  unc_assert_exist
02c0: 73 5f 6f 6e 5f 70 61 74 68 5f 74 32 20 20 22 22  s_on_path_t2  ""
02d0: 20 20 20 20 22 22 20 20 22 6c 73 22 0a 20 20 20      ""  "ls".   
02e0: 20 23 20 20 20 20 20 66 75 6e 63 5f 61 73 73 65   #     func_asse
02f0: 72 74 5f 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74  rt_exists_on_pat
0300: 68 5f 74 32 20 20 22 6c 73 22 20 20 22 22 20 20  h_t2  "ls"  ""  
0310: 22 70 73 22 0a 20 20 20 20 23 0a 20 20 20 20 23  "ps".    #.    #
0320: 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64   are not allowed
0330: 20 62 79 20 74 68 65 20 73 70 65 63 20 6f 66 20   by the spec of 
0340: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2c 20 62  this function, b
0350: 75 74 20 69 74 27 73 20 4f 4b 20 74 6f 20 63 61  ut it's OK to ca
0360: 6c 6c 0a 20 20 20 20 23 0a 20 20 20 20 23 20 20  ll.    #.    #  
0370: 20 20 20 66 75 6e 63 5f 61 73 73 65 72 74 5f 65     func_assert_e
0380: 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f 74 32  xists_on_path_t2
0390: 20 20 22 6c 73 22 20 22 22 20 0a 20 20 20 20 23    "ls" "" .    #
03a0: 20 20 20 20 20 66 75 6e 63 5f 61 73 73 65 72 74       func_assert
03b0: 5f 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f  _exists_on_path_
03c0: 74 32 20 20 22 6c 73 22 20 22 70 73 22 20 22 22  t2  "ls" "ps" ""
03d0: 0a 20 20 20 20 23 20 20 20 20 20 66 75 6e 63 5f  .    #     func_
03e0: 61 73 73 65 72 74 5f 65 78 69 73 74 73 5f 6f 6e  assert_exists_on
03f0: 5f 70 61 74 68 5f 74 32 20 20 22 6c 73 22 20 22  _path_t2  "ls" "
0400: 22 20 20 20 22 22 20 22 22 0a 20 20 20 20 23 0a  "   "" "".    #.
0410: 20 20 20 20 23 0a 20 20 20 20 6c 6f 63 61 6c 20      #.    local 
0420: 53 42 5f 54 48 52 4f 57 3d 22 66 22 0a 20 20 20  SB_THROW="f".   
0430: 20 69 66 20 5b 20 22 24 53 5f 4e 41 4d 45 5f 4f   if [ "$S_NAME_O
0440: 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42 4c 45  F_THE_EXECUTABLE
0450: 5f 31 22 20 3d 3d 20 22 22 20 5d 20 3b 20 74 68  _1" == "" ] ; th
0460: 65 6e 0a 20 20 20 20 20 20 20 20 53 42 5f 54 48  en.        SB_TH
0470: 52 4f 57 3d 22 74 22 0a 20 20 20 20 65 6c 73 65  ROW="t".    else
0480: 0a 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24  .        if [ "$
0490: 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58  S_NAME_OF_THE_EX
04a0: 45 43 55 54 41 42 4c 45 5f 32 22 20 3d 3d 20 22  ECUTABLE_2" == "
04b0: 22 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20  " ] ; then.     
04c0: 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 5f         if [ "$S_
04d0: 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58 45 43  NAME_OF_THE_EXEC
04e0: 55 54 41 42 4c 45 5f 33 22 20 21 3d 20 22 22 20  UTABLE_3" != "" 
04f0: 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20  ] ; then.       
0500: 20 20 20 20 20 20 20 20 20 53 42 5f 54 48 52 4f           SB_THRO
0510: 57 3d 22 74 22 0a 20 20 20 20 20 20 20 20 20 20  W="t".          
0520: 20 20 66 69 0a 20 20 20 20 20 20 20 20 20 20 20    fi.           
0530: 20 69 66 20 5b 20 22 24 53 5f 4e 41 4d 45 5f 4f   if [ "$S_NAME_O
0540: 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42 4c 45  F_THE_EXECUTABLE
0550: 5f 34 22 20 21 3d 20 22 22 20 5d 20 3b 20 74 68  _4" != "" ] ; th
0560: 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  en.             
0570: 20 20 20 53 42 5f 54 48 52 4f 57 3d 22 74 22 0a     SB_THROW="t".
0580: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a 20              fi. 
0590: 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20         else.    
05a0: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53          if [ "$S
05b0: 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58 45  _NAME_OF_THE_EXE
05c0: 43 55 54 41 42 4c 45 5f 33 22 20 3d 3d 20 22 22  CUTABLE_3" == ""
05d0: 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20   ] ; then.      
05e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 5b 20 22            if [ "
05f0: 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45  $S_NAME_OF_THE_E
0600: 58 45 43 55 54 41 42 4c 45 5f 34 22 20 21 3d 20  XECUTABLE_4" != 
0610: 22 22 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20  "" ] ; then.    
0620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0630: 53 42 5f 54 48 52 4f 57 3d 22 74 22 0a 20 20 20  SB_THROW="t".   
0640: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a               fi.
0650: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a 20              fi. 
0660: 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 66 69         fi.    fi
0670: 0a 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 69  .    #----.    i
0680: 66 20 5b 20 22 24 53 42 5f 54 48 52 4f 57 22 20  f [ "$SB_THROW" 
0690: 3d 3d 20 22 74 22 20 5d 20 3b 20 74 68 65 6e 0a  == "t" ] ; then.
06a0: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
06b0: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 54 68          echo "Th
06c0: 65 20 42 61 73 68 20 66 75 6e 63 74 69 6f 6e 20  e Bash function 
06d0: 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
06e0: 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
06f0: 20 20 20 20 66 75 6e 63 5f 61 73 73 65 72 74 5f      func_assert_
0700: 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f 74  exists_on_path_t
0710: 32 20 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f  2 ".        echo
0720: 20 22 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f   "".        echo
0730: 20 22 69 73 20 6e 6f 74 20 64 65 73 69 67 6e 65   "is not designe
0740: 64 20 74 6f 20 68 61 6e 64 6c 65 20 73 65 72 69  d to handle seri
0750: 65 73 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 2c  es of arguments,
0760: 20 77 68 65 72 65 20 22 0a 20 20 20 20 20 20 20   where ".       
0770: 20 65 63 68 6f 20 22 65 6d 70 74 79 20 73 74 72   echo "empty str
0780: 69 6e 67 73 20 70 72 65 63 65 64 20 6e 6f 6e 2d  ings preced non-
0790: 65 6d 70 74 79 20 73 74 72 69 6e 67 73 2e 22 0a  empty strings.".
07a0: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 47 55          echo "GU
07b0: 49 44 3d 3d 27 34 64 62 30 63 64 38 33 2d 35 38  ID=='4db0cd83-58
07c0: 63 62 2d 34 34 37 64 2d 61 64 35 64 2d 33 31 35  cb-447d-ad5d-315
07d0: 32 36 30 63 31 35 31 65 37 27 22 0a 20 20 20 20  260c151e7'".    
07e0: 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
07f0: 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20      #----.      
0800: 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a    cd $S_FP_ORIG.
0810: 20 20 20 20 20 20 20 20 65 78 69 74 20 31 20 23          exit 1 #
0820: 20 65 78 69 74 20 77 69 74 68 20 65 72 72 6f 72   exit with error
0830: 0a 20 20 20 20 66 69 0a 20 20 20 20 69 66 20 5b  .    fi.    if [
0840: 20 22 24 35 22 20 21 3d 20 22 22 20 5d 20 3b 20   "$5" != "" ] ; 
0850: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 65 63 68  then.        ech
0860: 6f 20 22 22 0a 20 20 20 20 20 20 20 20 65 63 68  o "".        ech
0870: 6f 20 22 54 68 69 73 20 42 61 73 68 20 66 75 6e  o "This Bash fun
0880: 63 74 69 6f 6e 20 69 73 20 64 65 73 69 67 6e 65  ction is designe
0890: 64 20 74 6f 20 77 6f 72 6b 20 77 69 74 68 20 61  d to work with a
08a0: 74 20 6d 6f 73 74 20 34 20 69 6e 70 75 74 20 61  t most 4 input a
08b0: 72 67 75 6d 65 6e 74 73 22 0a 20 20 20 20 20 20  rguments".      
08c0: 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d 27 31    echo "GUID=='1
08d0: 30 63 37 37 31 66 31 2d 36 62 30 63 2d 34 34 64  0c771f1-6b0c-44d
08e0: 66 2d 38 36 35 64 2d 33 31 35 32 36 30 63 31 35  f-865d-315260c15
08f0: 31 65 37 27 22 0a 20 20 20 20 20 20 20 20 65 63  1e7'".        ec
0900: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 23 2d  ho "".        #-
0910: 2d 2d 2d 0a 20 20 20 20 20 20 20 20 63 64 20 24  ---.        cd $
0920: 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20 20 20 20  S_FP_ORIG.      
0930: 20 20 65 78 69 74 20 31 20 23 20 65 78 69 74 20    exit 1 # exit 
0940: 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20 20 66  with error.    f
0950: 69 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a  i.    #--------.
0960: 20 20 20 20 23 20 46 75 6e 63 74 69 6f 6e 20 63      # Function c
0970: 61 6c 6c 73 20 6c 69 6b 65 0a 20 20 20 20 23 0a  alls like.    #.
0980: 20 20 20 20 23 20 20 20 20 20 66 75 6e 63 5f 61      #     func_a
0990: 73 73 65 72 74 5f 65 78 69 73 74 73 5f 6f 6e 5f  ssert_exists_on_
09a0: 70 61 74 68 5f 74 32 20 22 20 22 0a 20 20 20 20  path_t2 " ".    
09b0: 23 20 20 20 20 20 66 75 6e 63 5f 61 73 73 65 72  #     func_asser
09c0: 74 5f 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68  t_exists_on_path
09d0: 5f 74 32 20 22 6c 73 20 70 73 22 20 23 20 63 6f  _t2 "ls ps" # co
09e0: 6e 74 61 69 6e 73 20 61 20 73 70 61 63 65 0a 20  ntains a space. 
09f0: 20 20 20 23 0a 20 20 20 20 23 20 61 72 65 20 6e     #.    # are n
0a00: 6f 74 20 61 6c 6c 6f 77 65 64 2e 0a 20 20 20 20  ot allowed..    
0a10: 53 42 5f 54 48 52 4f 57 3d 22 66 22 20 0a 20 20  SB_THROW="f" .  
0a20: 20 20 6c 6f 63 61 6c 20 53 5f 54 4d 50 5f 30 3d    local S_TMP_0=
0a30: 22 22 0a 20 20 20 20 6c 6f 63 61 6c 20 53 5f 54  "".    local S_T
0a40: 4d 50 5f 31 3d 22 22 0a 20 20 20 20 6c 6f 63 61  MP_1="".    loca
0a50: 6c 20 53 5f 54 4d 50 5f 32 3d 22 22 0a 20 20 20  l S_TMP_2="".   
0a60: 20 23 2d 2d 2d 2d 0a 20 20 20 20 69 66 20 5b 20   #----.    if [ 
0a70: 22 24 53 42 5f 54 48 52 4f 57 22 20 3d 3d 20 22  "$SB_THROW" == "
0a80: 66 22 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20  f" ] ; then.    
0a90: 20 20 20 20 53 5f 54 4d 50 5f 30 3d 22 60 70 72      S_TMP_0="`pr
0aa0: 69 6e 74 66 20 5c 22 24 53 5f 4e 41 4d 45 5f 4f  intf \"$S_NAME_O
0ab0: 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42 4c 45  F_THE_EXECUTABLE
0ac0: 5f 31 5c 22 20 7c 20 67 61 77 6b 20 27 7b 67 73  _1\" | gawk '{gs
0ad0: 75 62 28 2f 5c 73 2f 2c 22 22 29 3b 70 72 69 6e  ub(/\s/,"");prin
0ae0: 74 66 20 22 25 73 22 2c 20 24 31 20 7d 27 60 22  tf "%s", $1 }'`"
0af0: 0a 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24  .        if [ "$
0b00: 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58  S_NAME_OF_THE_EX
0b10: 45 43 55 54 41 42 4c 45 5f 31 22 20 21 3d 20 22  ECUTABLE_1" != "
0b20: 24 53 5f 54 4d 50 5f 30 22 20 5d 20 3b 20 74 68  $S_TMP_0" ] ; th
0b30: 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  en.            S
0b40: 42 5f 54 48 52 4f 57 3d 22 74 22 20 0a 20 20 20  B_THROW="t" .   
0b50: 20 20 20 20 20 20 20 20 20 53 5f 54 4d 50 5f 31           S_TMP_1
0b60: 3d 22 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45  ="$S_NAME_OF_THE
0b70: 5f 45 58 45 43 55 54 41 42 4c 45 5f 31 22 0a 20  _EXECUTABLE_1". 
0b80: 20 20 20 20 20 20 20 20 20 20 20 53 5f 54 4d 50             S_TMP
0b90: 5f 32 3d 22 47 55 49 44 3d 3d 27 38 31 32 66 39  _2="GUID=='812f9
0ba0: 62 36 37 2d 32 38 34 31 2d 34 62 33 37 2d 61 35  b67-2841-4b37-a5
0bb0: 33 64 2d 33 31 35 32 36 30 63 31 35 31 65 37 27  3d-315260c151e7'
0bc0: 22 0a 20 20 20 20 20 20 20 20 66 69 0a 20 20 20  ".        fi.   
0bd0: 20 66 69 0a 20 20 20 20 23 2d 2d 2d 2d 0a 20 20   fi.    #----.  
0be0: 20 20 69 66 20 5b 20 22 24 53 42 5f 54 48 52 4f    if [ "$SB_THRO
0bf0: 57 22 20 3d 3d 20 22 66 22 20 5d 20 3b 20 74 68  W" == "f" ] ; th
0c00: 65 6e 0a 20 20 20 20 20 20 20 20 53 5f 54 4d 50  en.        S_TMP
0c10: 5f 30 3d 22 60 70 72 69 6e 74 66 20 5c 22 24 53  _0="`printf \"$S
0c20: 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58 45  _NAME_OF_THE_EXE
0c30: 43 55 54 41 42 4c 45 5f 32 5c 22 20 7c 20 67 61  CUTABLE_2\" | ga
0c40: 77 6b 20 27 7b 67 73 75 62 28 2f 5c 73 2f 2c 22  wk '{gsub(/\s/,"
0c50: 22 29 3b 70 72 69 6e 74 66 20 22 25 73 22 2c 20  ");printf "%s", 
0c60: 24 31 20 7d 27 60 22 0a 20 20 20 20 20 20 20 20  $1 }'`".        
0c70: 69 66 20 5b 20 22 24 53 5f 4e 41 4d 45 5f 4f 46  if [ "$S_NAME_OF
0c80: 5f 54 48 45 5f 45 58 45 43 55 54 41 42 4c 45 5f  _THE_EXECUTABLE_
0c90: 32 22 20 21 3d 20 22 24 53 5f 54 4d 50 5f 30 22  2" != "$S_TMP_0"
0ca0: 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20   ] ; then.      
0cb0: 20 20 20 20 20 20 53 42 5f 54 48 52 4f 57 3d 22        SB_THROW="
0cc0: 74 22 20 0a 20 20 20 20 20 20 20 20 20 20 20 20  t" .            
0cd0: 53 5f 54 4d 50 5f 31 3d 22 24 53 5f 4e 41 4d 45  S_TMP_1="$S_NAME
0ce0: 5f 4f 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42  _OF_THE_EXECUTAB
0cf0: 4c 45 5f 32 22 0a 20 20 20 20 20 20 20 20 20 20  LE_2".          
0d00: 20 20 53 5f 54 4d 50 5f 32 3d 22 47 55 49 44 3d    S_TMP_2="GUID=
0d10: 3d 27 31 30 34 66 37 30 37 32 2d 38 61 37 66 2d  ='104f7072-8a7f-
0d20: 34 32 38 63 2d 39 62 35 63 2d 33 31 35 32 36 30  428c-9b5c-315260
0d30: 63 31 35 31 65 37 27 22 0a 20 20 20 20 20 20 20  c151e7'".       
0d40: 20 66 69 0a 20 20 20 20 66 69 0a 20 20 20 20 23   fi.    fi.    #
0d50: 2d 2d 2d 2d 0a 20 20 20 20 69 66 20 5b 20 22 24  ----.    if [ "$
0d60: 53 42 5f 54 48 52 4f 57 22 20 3d 3d 20 22 66 22  SB_THROW" == "f"
0d70: 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20   ] ; then.      
0d80: 20 20 53 5f 54 4d 50 5f 30 3d 22 60 70 72 69 6e    S_TMP_0="`prin
0d90: 74 66 20 5c 22 24 53 5f 4e 41 4d 45 5f 4f 46 5f  tf \"$S_NAME_OF_
0da0: 54 48 45 5f 45 58 45 43 55 54 41 42 4c 45 5f 33  THE_EXECUTABLE_3
0db0: 5c 22 20 7c 20 67 61 77 6b 20 27 7b 67 73 75 62  \" | gawk '{gsub
0dc0: 28 2f 5c 73 2f 2c 22 22 29 3b 70 72 69 6e 74 66  (/\s/,"");printf
0dd0: 20 22 25 73 22 2c 20 24 31 20 7d 27 60 22 0a 20   "%s", $1 }'`". 
0de0: 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 5f         if [ "$S_
0df0: 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58 45 43  NAME_OF_THE_EXEC
0e00: 55 54 41 42 4c 45 5f 33 22 20 21 3d 20 22 24 53  UTABLE_3" != "$S
0e10: 5f 54 4d 50 5f 30 22 20 5d 20 3b 20 74 68 65 6e  _TMP_0" ] ; then
0e20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 42 5f  .            SB_
0e30: 54 48 52 4f 57 3d 22 74 22 20 0a 20 20 20 20 20  THROW="t" .     
0e40: 20 20 20 20 20 20 20 53 5f 54 4d 50 5f 31 3d 22         S_TMP_1="
0e50: 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45  $S_NAME_OF_THE_E
0e60: 58 45 43 55 54 41 42 4c 45 5f 33 22 0a 20 20 20  XECUTABLE_3".   
0e70: 20 20 20 20 20 20 20 20 20 53 5f 54 4d 50 5f 32           S_TMP_2
0e80: 3d 22 47 55 49 44 3d 3d 27 34 35 63 63 32 31 38  ="GUID=='45cc218
0e90: 31 2d 66 35 31 64 2d 34 31 63 33 2d 39 36 31 63  1-f51d-41c3-961c
0ea0: 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22 0a  -315260c151e7'".
0eb0: 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 66          fi.    f
0ec0: 69 0a 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20  i.    #----.    
0ed0: 69 66 20 5b 20 22 24 53 42 5f 54 48 52 4f 57 22  if [ "$SB_THROW"
0ee0: 20 3d 3d 20 22 66 22 20 5d 20 3b 20 74 68 65 6e   == "f" ] ; then
0ef0: 0a 20 20 20 20 20 20 20 20 53 5f 54 4d 50 5f 30  .        S_TMP_0
0f00: 3d 22 60 70 72 69 6e 74 66 20 5c 22 24 53 5f 4e  ="`printf \"$S_N
0f10: 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58 45 43 55  AME_OF_THE_EXECU
0f20: 54 41 42 4c 45 5f 34 5c 22 20 7c 20 67 61 77 6b  TABLE_4\" | gawk
0f30: 20 27 7b 67 73 75 62 28 2f 5c 73 2f 2c 22 22 29   '{gsub(/\s/,"")
0f40: 3b 70 72 69 6e 74 66 20 22 25 73 22 2c 20 24 31  ;printf "%s", $1
0f50: 20 7d 27 60 22 0a 20 20 20 20 20 20 20 20 69 66   }'`".        if
0f60: 20 5b 20 22 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54   [ "$S_NAME_OF_T
0f70: 48 45 5f 45 58 45 43 55 54 41 42 4c 45 5f 34 22  HE_EXECUTABLE_4"
0f80: 20 21 3d 20 22 24 53 5f 54 4d 50 5f 30 22 20 5d   != "$S_TMP_0" ]
0f90: 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20   ; then.        
0fa0: 20 20 20 20 53 42 5f 54 48 52 4f 57 3d 22 74 22      SB_THROW="t"
0fb0: 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 5f   .            S_
0fc0: 54 4d 50 5f 31 3d 22 24 53 5f 4e 41 4d 45 5f 4f  TMP_1="$S_NAME_O
0fd0: 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42 4c 45  F_THE_EXECUTABLE
0fe0: 5f 34 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  _4".            
0ff0: 53 5f 54 4d 50 5f 32 3d 22 47 55 49 44 3d 3d 27  S_TMP_2="GUID=='
1000: 34 35 34 38 63 31 62 35 2d 33 62 37 30 2d 34 39  4548c1b5-3b70-49
1010: 32 64 2d 38 63 31 63 2d 33 31 35 32 36 30 63 31  2d-8c1c-315260c1
1020: 35 31 65 37 27 22 0a 20 20 20 20 20 20 20 20 66  51e7'".        f
1030: 69 0a 20 20 20 20 66 69 0a 20 20 20 20 23 2d 2d  i.    fi.    #--
1040: 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 69 66 20 5b 20  ------.    if [ 
1050: 22 24 53 42 5f 54 48 52 4f 57 22 20 3d 3d 20 22  "$SB_THROW" == "
1060: 74 22 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20  t" ] ; then.    
1070: 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
1080: 20 20 20 20 65 63 68 6f 20 22 54 68 65 20 42 61      echo "The Ba
1090: 73 68 20 66 75 6e 63 74 69 6f 6e 20 22 0a 20 20  sh function ".  
10a0: 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20        echo "".  
10b0: 20 20 20 20 20 20 65 63 68 6f 20 22 20 20 20 20        echo "    
10c0: 66 75 6e 63 5f 61 73 73 65 72 74 5f 65 78 69 73  func_assert_exis
10d0: 74 73 5f 6f 6e 5f 70 61 74 68 5f 74 32 20 22 0a  ts_on_path_t2 ".
10e0: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
10f0: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 69 73          echo "is
1100: 20 6e 6f 74 20 64 65 73 69 67 6e 65 64 20 74 6f   not designed to
1110: 20 68 61 6e 64 6c 65 20 61 6e 20 61 72 67 75 6d   handle an argum
1120: 65 6e 74 20 76 61 6c 75 65 20 74 68 61 74 20 63  ent value that c
1130: 6f 6e 74 61 69 6e 73 20 22 0a 20 20 20 20 20 20  ontains ".      
1140: 20 20 65 63 68 6f 20 22 73 70 61 63 65 73 20 6f    echo "spaces o
1150: 72 20 74 61 62 75 6c 61 74 69 6f 6e 20 63 68 61  r tabulation cha
1160: 72 61 63 74 65 72 73 2e 22 0a 20 20 20 20 20 20  racters.".      
1170: 20 20 65 63 68 6f 20 22 54 68 65 20 75 6e 61 63    echo "The unac
1180: 63 65 70 74 65 64 20 76 61 6c 75 65 20 69 6e 20  cepted value in 
1190: 70 61 72 65 6e 74 68 65 73 69 73 3a 28 24 53 5f  parenthesis:($S_
11a0: 54 4d 50 5f 31 29 2e 22 0a 20 20 20 20 20 20 20  TMP_1).".       
11b0: 20 65 63 68 6f 20 22 42 72 61 6e 63 68 20 24 53   echo "Branch $S
11c0: 5f 54 4d 50 5f 32 2e 22 0a 20 20 20 20 20 20 20  _TMP_2.".       
11d0: 20 65 63 68 6f 20 22 47 55 49 44 3d 3d 27 34 62   echo "GUID=='4b
11e0: 39 62 63 66 31 31 2d 39 65 62 62 2d 34 31 36 61  9bcf11-9ebb-416a
11f0: 2d 39 36 35 62 2d 33 31 35 32 36 30 63 31 35 31  -965b-315260c151
1200: 65 37 27 22 0a 20 20 20 20 20 20 20 20 65 63 68  e7'".        ech
1210: 6f 20 22 22 0a 20 20 20 20 20 20 20 20 23 2d 2d  o "".        #--
1220: 2d 2d 0a 20 20 20 20 20 20 20 20 63 64 20 24 53  --.        cd $S
1230: 5f 46 50 5f 4f 52 49 47 0a 20 20 20 20 20 20 20  _FP_ORIG.       
1240: 20 65 78 69 74 20 31 20 23 20 65 78 69 74 20 77   exit 1 # exit w
1250: 69 74 68 20 65 72 72 6f 72 0a 20 20 20 20 66 69  ith error.    fi
1260: 0a 20 20 20 20 53 42 5f 54 48 52 4f 57 3d 22 66  .    SB_THROW="f
1270: 22 20 23 20 4a 75 73 74 20 61 20 72 65 73 65 74  " # Just a reset
1280: 2c 20 73 68 6f 75 6c 64 20 49 20 66 6f 72 67 65  , should I forge
1290: 74 20 74 6f 20 72 65 73 65 74 20 69 74 20 6c 61  t to reset it la
12a0: 74 65 72 2e 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d  ter..    #------
12b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 53 5f  ---------.    S_
12c0: 54 4d 50 5f 30 3d 22 5c 60 77 68 69 63 68 20 24  TMP_0="\`which $
12d0: 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58  S_NAME_OF_THE_EX
12e0: 45 43 55 54 41 42 4c 45 5f 31 20 32 3e 2f 64 65  ECUTABLE_1 2>/de
12f0: 76 2f 6e 75 6c 6c 5c 60 22 0a 20 20 20 20 6c 6f  v/null\`".    lo
1300: 63 61 6c 20 53 5f 54 4d 50 5f 31 3d 22 22 0a 20  cal S_TMP_1="". 
1310: 20 20 20 6c 6f 63 61 6c 20 53 5f 54 4d 50 5f 32     local S_TMP_2
1320: 3d 22 53 5f 54 4d 50 5f 31 3d 24 53 5f 54 4d 50  ="S_TMP_1=$S_TMP
1330: 5f 30 22 0a 20 20 20 20 65 76 61 6c 20 24 7b 53  _0".    eval ${S
1340: 5f 54 4d 50 5f 32 7d 0a 20 20 20 20 23 2d 2d 2d  _TMP_2}.    #---
1350: 2d 0a 20 20 20 20 69 66 20 5b 20 22 24 53 5f 54  -.    if [ "$S_T
1360: 4d 50 5f 31 22 20 3d 3d 20 22 22 20 5d 20 3b 20  MP_1" == "" ] ; 
1370: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 69 66 20  then.        if 
1380: 5b 20 22 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48  [ "$S_NAME_OF_TH
1390: 45 5f 45 58 45 43 55 54 41 42 4c 45 5f 32 22 20  E_EXECUTABLE_2" 
13a0: 3d 3d 20 22 22 20 5d 20 3b 20 74 68 65 6e 0a 20  == "" ] ; then. 
13b0: 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 5f         if [ "$S_
13c0: 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58 45 43  NAME_OF_THE_EXEC
13d0: 55 54 41 42 4c 45 5f 33 22 20 3d 3d 20 22 22 20  UTABLE_3" == "" 
13e0: 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20  ] ; then.       
13f0: 20 69 66 20 5b 20 22 24 53 5f 4e 41 4d 45 5f 4f   if [ "$S_NAME_O
1400: 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42 4c 45  F_THE_EXECUTABLE
1410: 5f 34 22 20 3d 3d 20 22 22 20 5d 20 3b 20 74 68  _4" == "" ] ; th
1420: 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  en.            e
1430: 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20  cho "".         
1440: 20 20 20 65 63 68 6f 20 22 54 68 69 73 20 62 61     echo "This ba
1450: 73 68 20 73 63 72 69 70 74 20 72 65 71 75 69 72  sh script requir
1460: 65 73 20 74 68 65 20 5c 22 24 53 5f 4e 41 4d 45  es the \"$S_NAME
1470: 5f 4f 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42  _OF_THE_EXECUTAB
1480: 4c 45 5f 31 5c 22 20 74 6f 20 62 65 20 6f 6e 20  LE_1\" to be on 
1490: 74 68 65 20 50 41 54 48 2e 22 0a 20 20 20 20 20  the PATH.".     
14a0: 20 20 20 20 20 20 20 65 63 68 6f 20 22 47 55 49         echo "GUI
14b0: 44 3d 3d 27 31 32 30 30 38 38 30 65 2d 32 65 32  D=='1200880e-2e2
14c0: 62 2d 34 66 62 64 2d 39 31 34 62 2d 33 31 35 32  b-4fbd-914b-3152
14d0: 36 30 63 31 35 31 65 37 27 22 0a 20 20 20 20 20  60c151e7'".     
14e0: 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20         echo "". 
14f0: 20 20 20 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d             #----
1500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 64 20  .            cd 
1510: 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20 20 20  $S_FP_ORIG.     
1520: 20 20 20 20 20 20 20 65 78 69 74 20 31 20 23 20         exit 1 # 
1530: 65 78 69 74 20 77 69 74 68 20 65 72 72 6f 72 0a  exit with error.
1540: 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20          fi.     
1550: 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 66 69     fi.        fi
1560: 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20  .    else.      
1570: 20 20 72 65 74 75 72 6e 20 23 20 61 74 20 6c 65    return # at le
1580: 61 73 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 70  ast one of the p
1590: 72 6f 67 72 61 6d 73 20 77 61 73 20 61 76 61 69  rograms was avai
15a0: 6c 61 62 6c 65 20 61 74 20 74 68 65 20 50 41 54  lable at the PAT
15b0: 48 0a 20 20 20 20 66 69 0a 20 20 20 20 23 2d 2d  H.    fi.    #--
15c0: 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 53 5f 54 4d 50  ------.    S_TMP
15d0: 5f 30 3d 22 5c 60 77 68 69 63 68 20 24 53 5f 4e  _0="\`which $S_N
15e0: 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58 45 43 55  AME_OF_THE_EXECU
15f0: 54 41 42 4c 45 5f 32 20 32 3e 2f 64 65 76 2f 6e  TABLE_2 2>/dev/n
1600: 75 6c 6c 5c 60 22 0a 20 20 20 20 53 5f 54 4d 50  ull\`".    S_TMP
1610: 5f 31 3d 22 22 0a 20 20 20 20 53 5f 54 4d 50 5f  _1="".    S_TMP_
1620: 32 3d 22 53 5f 54 4d 50 5f 31 3d 24 53 5f 54 4d  2="S_TMP_1=$S_TM
1630: 50 5f 30 22 0a 20 20 20 20 65 76 61 6c 20 24 7b  P_0".    eval ${
1640: 53 5f 54 4d 50 5f 32 7d 0a 20 20 20 20 23 2d 2d  S_TMP_2}.    #--
1650: 2d 2d 0a 20 20 20 20 69 66 20 5b 20 22 24 53 5f  --.    if [ "$S_
1660: 54 4d 50 5f 31 22 20 3d 3d 20 22 22 20 5d 20 3b  TMP_1" == "" ] ;
1670: 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 69 66   then.        if
1680: 20 5b 20 22 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54   [ "$S_NAME_OF_T
1690: 48 45 5f 45 58 45 43 55 54 41 42 4c 45 5f 33 22  HE_EXECUTABLE_3"
16a0: 20 3d 3d 20 22 22 20 5d 20 3b 20 74 68 65 6e 0a   == "" ] ; then.
16b0: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53          if [ "$S
16c0: 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58 45  _NAME_OF_THE_EXE
16d0: 43 55 54 41 42 4c 45 5f 34 22 20 3d 3d 20 22 22  CUTABLE_4" == ""
16e0: 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20   ] ; then.      
16f0: 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20        echo "".  
1700: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
1710: 54 68 69 73 20 62 61 73 68 20 73 63 72 69 70 74  This bash script
1720: 20 72 65 71 75 69 72 65 73 20 74 68 61 74 20 65   requires that e
1730: 69 74 68 65 72 20 5c 22 24 53 5f 4e 41 4d 45 5f  ither \"$S_NAME_
1740: 4f 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42 4c  OF_THE_EXECUTABL
1750: 45 5f 31 5c 22 20 6f 72 20 22 0a 20 20 20 20 20  E_1\" or ".     
1760: 20 20 20 20 20 20 20 65 63 68 6f 20 22 20 5c 22         echo " \"
1770: 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45  $S_NAME_OF_THE_E
1780: 58 45 43 55 54 41 42 4c 45 5f 32 5c 22 20 69 73  XECUTABLE_2\" is
1790: 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 74 68   available on th
17a0: 65 20 50 41 54 48 2e 22 0a 20 20 20 20 20 20 20  e PATH.".       
17b0: 20 20 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d       echo "GUID=
17c0: 3d 27 33 35 36 63 33 63 63 34 2d 35 33 62 64 2d  ='356c3cc4-53bd-
17d0: 34 36 39 33 2d 38 38 35 62 2d 33 31 35 32 36 30  4693-885b-315260
17e0: 63 31 35 31 65 37 27 22 0a 20 20 20 20 20 20 20  c151e7'".       
17f0: 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
1800: 20 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20           #----. 
1810: 20 20 20 20 20 20 20 20 20 20 20 63 64 20 24 53             cd $S
1820: 5f 46 50 5f 4f 52 49 47 0a 20 20 20 20 20 20 20  _FP_ORIG.       
1830: 20 20 20 20 20 65 78 69 74 20 31 20 23 20 65 78       exit 1 # ex
1840: 69 74 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20  it with error.  
1850: 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20        fi.       
1860: 20 66 69 0a 20 20 20 20 65 6c 73 65 0a 20 20 20   fi.    else.   
1870: 20 20 20 20 20 72 65 74 75 72 6e 20 23 20 61 74       return # at
1880: 20 6c 65 61 73 74 20 6f 6e 65 20 6f 66 20 74 68   least one of th
1890: 65 20 70 72 6f 67 72 61 6d 73 20 77 61 73 20 61  e programs was a
18a0: 76 61 69 6c 61 62 6c 65 20 61 74 20 74 68 65 20  vailable at the 
18b0: 50 41 54 48 0a 20 20 20 20 66 69 0a 20 20 20 20  PATH.    fi.    
18c0: 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 53 5f  #--------.    S_
18d0: 54 4d 50 5f 30 3d 22 5c 60 77 68 69 63 68 20 24  TMP_0="\`which $
18e0: 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58  S_NAME_OF_THE_EX
18f0: 45 43 55 54 41 42 4c 45 5f 33 20 32 3e 2f 64 65  ECUTABLE_3 2>/de
1900: 76 2f 6e 75 6c 6c 5c 60 22 0a 20 20 20 20 53 5f  v/null\`".    S_
1910: 54 4d 50 5f 31 3d 22 22 0a 20 20 20 20 53 5f 54  TMP_1="".    S_T
1920: 4d 50 5f 32 3d 22 53 5f 54 4d 50 5f 31 3d 24 53  MP_2="S_TMP_1=$S
1930: 5f 54 4d 50 5f 30 22 0a 20 20 20 20 65 76 61 6c  _TMP_0".    eval
1940: 20 24 7b 53 5f 54 4d 50 5f 32 7d 0a 20 20 20 20   ${S_TMP_2}.    
1950: 23 2d 2d 2d 2d 0a 20 20 20 20 69 66 20 5b 20 22  #----.    if [ "
1960: 24 53 5f 54 4d 50 5f 31 22 20 3d 3d 20 22 22 20  $S_TMP_1" == "" 
1970: 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20  ] ; then.       
1980: 20 69 66 20 5b 20 22 24 53 5f 4e 41 4d 45 5f 4f   if [ "$S_NAME_O
1990: 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42 4c 45  F_THE_EXECUTABLE
19a0: 5f 34 22 20 3d 3d 20 22 22 20 5d 20 3b 20 74 68  _4" == "" ] ; th
19b0: 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  en.            e
19c0: 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20  cho "".         
19d0: 20 20 20 65 63 68 6f 20 22 54 68 69 73 20 62 61     echo "This ba
19e0: 73 68 20 73 63 72 69 70 74 20 72 65 71 75 69 72  sh script requir
19f0: 65 73 20 74 68 61 74 20 65 69 74 68 65 72 20 5c  es that either \
1a00: 22 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f  "$S_NAME_OF_THE_
1a10: 45 58 45 43 55 54 41 42 4c 45 5f 31 5c 22 20 6f  EXECUTABLE_1\" o
1a20: 72 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  r ".            
1a30: 65 63 68 6f 20 22 20 5c 22 24 53 5f 4e 41 4d 45  echo " \"$S_NAME
1a40: 5f 4f 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42  _OF_THE_EXECUTAB
1a50: 4c 45 5f 32 5c 22 20 6f 72 20 5c 22 24 53 5f 4e  LE_2\" or \"$S_N
1a60: 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58 45 43 55  AME_OF_THE_EXECU
1a70: 54 41 42 4c 45 5f 33 5c 22 20 22 0a 20 20 20 20  TABLE_3\" ".    
1a80: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 69 73          echo "is
1a90: 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 74 68   available on th
1aa0: 65 20 50 41 54 48 2e 22 0a 20 20 20 20 20 20 20  e PATH.".       
1ab0: 20 20 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d       echo "GUID=
1ac0: 3d 27 34 33 64 62 63 64 32 33 2d 33 37 32 37 2d  ='43dbcd23-3727-
1ad0: 34 35 32 63 2d 62 31 32 61 2d 33 31 35 32 36 30  452c-b12a-315260
1ae0: 63 31 35 31 65 37 27 22 0a 20 20 20 20 20 20 20  c151e7'".       
1af0: 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
1b00: 20 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20           #----. 
1b10: 20 20 20 20 20 20 20 20 20 20 20 63 64 20 24 53             cd $S
1b20: 5f 46 50 5f 4f 52 49 47 0a 20 20 20 20 20 20 20  _FP_ORIG.       
1b30: 20 20 20 20 20 65 78 69 74 20 31 20 23 20 65 78       exit 1 # ex
1b40: 69 74 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20  it with error.  
1b50: 20 20 20 20 20 20 66 69 0a 20 20 20 20 65 6c 73        fi.    els
1b60: 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  e.        return
1b70: 20 23 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20   # at least one 
1b80: 6f 66 20 74 68 65 20 70 72 6f 67 72 61 6d 73 20  of the programs 
1b90: 77 61 73 20 61 76 61 69 6c 61 62 6c 65 20 61 74  was available at
1ba0: 20 74 68 65 20 50 41 54 48 0a 20 20 20 20 66 69   the PATH.    fi
1bb0: 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20  .    #--------. 
1bc0: 20 20 20 53 5f 54 4d 50 5f 30 3d 22 5c 60 77 68     S_TMP_0="\`wh
1bd0: 69 63 68 20 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54  ich $S_NAME_OF_T
1be0: 48 45 5f 45 58 45 43 55 54 41 42 4c 45 5f 34 20  HE_EXECUTABLE_4 
1bf0: 32 3e 2f 64 65 76 2f 6e 75 6c 6c 5c 60 22 0a 20  2>/dev/null\`". 
1c00: 20 20 20 53 5f 54 4d 50 5f 31 3d 22 22 0a 20 20     S_TMP_1="".  
1c10: 20 20 53 5f 54 4d 50 5f 32 3d 22 53 5f 54 4d 50    S_TMP_2="S_TMP
1c20: 5f 31 3d 24 53 5f 54 4d 50 5f 30 22 0a 20 20 20  _1=$S_TMP_0".   
1c30: 20 65 76 61 6c 20 24 7b 53 5f 54 4d 50 5f 32 7d   eval ${S_TMP_2}
1c40: 0a 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 69  .    #----.    i
1c50: 66 20 5b 20 22 24 53 5f 54 4d 50 5f 31 22 20 3d  f [ "$S_TMP_1" =
1c60: 3d 20 22 22 20 5d 20 3b 20 74 68 65 6e 0a 20 20  = "" ] ; then.  
1c70: 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20        echo "".  
1c80: 20 20 20 20 20 20 65 63 68 6f 20 22 54 68 69 73        echo "This
1c90: 20 62 61 73 68 20 73 63 72 69 70 74 20 72 65 71   bash script req
1ca0: 75 69 72 65 73 20 74 68 61 74 20 65 69 74 68 65  uires that eithe
1cb0: 72 20 5c 22 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54  r \"$S_NAME_OF_T
1cc0: 48 45 5f 45 58 45 43 55 54 41 42 4c 45 5f 31 5c  HE_EXECUTABLE_1\
1cd0: 22 20 6f 72 20 22 0a 20 20 20 20 20 20 20 20 65  " or ".        e
1ce0: 63 68 6f 20 22 20 5c 22 24 53 5f 4e 41 4d 45 5f  cho " \"$S_NAME_
1cf0: 4f 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42 4c  OF_THE_EXECUTABL
1d00: 45 5f 32 5c 22 20 6f 72 20 5c 22 24 53 5f 4e 41  E_2\" or \"$S_NA
1d10: 4d 45 5f 4f 46 5f 54 48 45 5f 45 58 45 43 55 54  ME_OF_THE_EXECUT
1d20: 41 42 4c 45 5f 33 5c 22 20 6f 72 20 22 0a 20 20  ABLE_3\" or ".  
1d30: 20 20 20 20 20 20 65 63 68 6f 20 22 20 5c 22 24        echo " \"$
1d40: 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58  S_NAME_OF_THE_EX
1d50: 45 43 55 54 41 42 4c 45 5f 34 5c 22 20 69 73 20  ECUTABLE_4\" is 
1d60: 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 74 68 65  available on the
1d70: 20 50 41 54 48 2e 22 0a 20 20 20 20 20 20 20 20   PATH.".        
1d80: 65 63 68 6f 20 22 47 55 49 44 3d 3d 27 32 33 63  echo "GUID=='23c
1d90: 65 36 39 66 33 2d 38 37 32 38 2d 34 61 30 33 2d  e69f3-8728-4a03-
1da0: 39 66 34 61 2d 33 31 35 32 36 30 63 31 35 31 65  9f4a-315260c151e
1db0: 37 27 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f  7'".        echo
1dc0: 20 22 22 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d   "".        #---
1dd0: 2d 0a 20 20 20 20 20 20 20 20 63 64 20 24 53 5f  -.        cd $S_
1de0: 46 50 5f 4f 52 49 47 0a 20 20 20 20 20 20 20 20  FP_ORIG.        
1df0: 65 78 69 74 20 31 20 23 20 65 78 69 74 20 77 69  exit 1 # exit wi
1e00: 74 68 20 65 72 72 6f 72 0a 20 20 20 20 65 6c 73  th error.    els
1e10: 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  e.        return
1e20: 20 23 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20   # at least one 
1e30: 6f 66 20 74 68 65 20 70 72 6f 67 72 61 6d 73 20  of the programs 
1e40: 77 61 73 20 61 76 61 69 6c 61 62 6c 65 20 61 74  was available at
1e50: 20 74 68 65 20 50 41 54 48 0a 20 20 20 20 66 69   the PATH.    fi
1e60: 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 7d  .    #--------.}
1e70: 20 23 20 66 75 6e 63 5f 61 73 73 65 72 74 5f 65   # func_assert_e
1e80: 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f 74 32  xists_on_path_t2
1e90: 0a 0a 0a 66 75 6e 63 5f 61 73 73 65 72 74 5f 65  ...func_assert_e
1ea0: 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f 74 32  xists_on_path_t2
1eb0: 20 22 63 61 74 22 0a 66 75 6e 63 5f 61 73 73 65   "cat".func_asse
1ec0: 72 74 5f 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74  rt_exists_on_pat
1ed0: 68 5f 74 32 20 22 66 69 6c 65 22 20 20 20 20 20  h_t2 "file"     
1ee0: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 66 6f              # fo
1ef0: 72 20 63 68 65 63 6b 69 6e 67 20 4d 49 4d 45 20  r checking MIME 
1f00: 74 79 70 65 73 0a 66 75 6e 63 5f 61 73 73 65 72  types.func_asser
1f10: 74 5f 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68  t_exists_on_path
1f20: 5f 74 32 20 22 66 69 6e 64 22 20 20 20 20 20 20  _t2 "find"      
1f30: 20 20 20 20 20 20 20 20 20 20 20 23 20 66 6f 72             # for
1f40: 20 72 65 63 75 72 73 69 6e 67 0a 66 75 6e 63 5f   recursing.func_
1f50: 61 73 73 65 72 74 5f 65 78 69 73 74 73 5f 6f 6e  assert_exists_on
1f60: 5f 70 61 74 68 5f 74 32 20 22 66 6f 73 73 69 6c  _path_t2 "fossil
1f70: 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  "               
1f80: 23 20 74 65 73 74 65 64 20 77 69 74 68 20 76 31  # tested with v1
1f90: 2e 33 34 0a 66 75 6e 63 5f 61 73 73 65 72 74 5f  .34.func_assert_
1fa0: 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f 74  exists_on_path_t
1fb0: 32 20 22 67 61 77 6b 22 0a 66 75 6e 63 5f 61 73  2 "gawk".func_as
1fc0: 73 65 72 74 5f 65 78 69 73 74 73 5f 6f 6e 5f 70  sert_exists_on_p
1fd0: 61 74 68 5f 74 32 20 22 67 72 65 70 22 0a 66 75  ath_t2 "grep".fu
1fe0: 6e 63 5f 61 73 73 65 72 74 5f 65 78 69 73 74 73  nc_assert_exists
1ff0: 5f 6f 6e 5f 70 61 74 68 5f 74 32 20 22 6e 69 63  _on_path_t2 "nic
2000: 65 22 0a 66 75 6e 63 5f 61 73 73 65 72 74 5f 65  e".func_assert_e
2010: 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f 74 32  xists_on_path_t2
2020: 20 22 72 75 62 79 22 20 20 20 20 20 20 20 20 20   "ruby"         
2030: 20 20 20 20 20 20 20 20 23 20 61 6e 79 74 68 69          # anythi
2040: 6e 67 20 6f 76 65 72 2f 65 71 75 61 6c 20 76 2e  ng over/equal v.
2050: 32 2e 31 20 77 69 6c 6c 20 70 72 6f 62 61 62 6c  2.1 will probabl
2060: 79 20 64 6f 0a 66 75 6e 63 5f 61 73 73 65 72 74  y do.func_assert
2070: 5f 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f  _exists_on_path_
2080: 74 32 20 22 73 68 72 65 64 22 20 22 67 73 68 72  t2 "shred" "gshr
2090: 65 64 22 20 22 72 6d 22 20 20 23 20 66 6f 72 20  ed" "rm"  # for 
20a0: 73 68 72 65 64 64 69 6e 67 2c 20 69 66 20 70 6f  shredding, if po
20b0: 73 73 69 62 6c 65 0a 66 75 6e 63 5f 61 73 73 65  ssible.func_asse
20c0: 72 74 5f 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74  rt_exists_on_pat
20d0: 68 5f 74 32 20 22 75 6e 61 6d 65 22 20 20 20 20  h_t2 "uname"    
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 6f              # to
20f0: 20 63 68 65 63 6b 20 74 68 65 20 4f 53 20 74 79   check the OS ty
2100: 70 65 0a 66 75 6e 63 5f 61 73 73 65 72 74 5f 65  pe.func_assert_e
2110: 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f 74 32  xists_on_path_t2
2120: 20 22 75 75 69 64 67 65 6e 22 20 22 75 75 69 64   "uuidgen" "uuid
2130: 22 20 20 20 20 20 20 20 23 20 66 6f 72 20 67 65  "       # for ge
2140: 6e 65 72 61 74 69 6e 67 20 74 6d 70 20 66 69 6c  nerating tmp fil
2150: 65 20 6e 61 6d 65 73 0a 66 75 6e 63 5f 61 73 73  e names.func_ass
2160: 65 72 74 5f 65 78 69 73 74 73 5f 6f 6e 5f 70 61  ert_exists_on_pa
2170: 74 68 5f 74 32 20 22 78 61 72 67 73 22 20 20 20  th_t2 "xargs"   
2180: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 66               # f
2190: 69 6e 64 20 2e 20 2d 6e 61 6d 65 20 27 2a 27 20  ind . -name '*' 
21a0: 7c 20 78 61 72 67 73 20 62 6c 61 62 6c 61 0a 66  | xargs blabla.f
21b0: 75 6e 63 5f 61 73 73 65 72 74 5f 65 78 69 73 74  unc_assert_exist
21c0: 73 5f 6f 6e 5f 70 61 74 68 5f 74 32 20 22 77 63  s_on_path_t2 "wc
21d0: 22 20 20 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d  "  ...#---------
21e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
21f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2220: 2d 0a 0a 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f 4f  -..S_FUNC_MMMV_O
2230: 50 45 52 41 54 49 4e 47 5f 53 59 53 54 45 4d 5f  PERATING_SYSTEM_
2240: 54 59 50 45 5f 54 31 5f 52 45 53 55 4c 54 3d 22  TYPE_T1_RESULT="
2250: 22 0a 66 75 6e 63 5f 6d 6d 6d 76 5f 6f 70 65 72  ".func_mmmv_oper
2260: 61 74 69 6e 67 5f 73 79 73 74 65 6d 5f 74 79 70  ating_system_typ
2270: 65 5f 74 31 28 29 20 7b 0a 20 20 20 20 69 66 20  e_t1() {.    if 
2280: 5b 20 22 24 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f  [ "$S_FUNC_MMMV_
2290: 4f 50 45 52 41 54 49 4e 47 5f 53 59 53 54 45 4d  OPERATING_SYSTEM
22a0: 5f 54 59 50 45 5f 54 31 5f 52 45 53 55 4c 54 22  _TYPE_T1_RESULT"
22b0: 20 3d 3d 20 22 22 20 5d 3b 20 74 68 65 6e 0a 20   == "" ]; then. 
22c0: 20 20 20 20 20 20 20 53 5f 54 4d 50 5f 30 3d 22         S_TMP_0="
22d0: 60 75 6e 61 6d 65 20 2d 61 20 7c 20 67 72 65 70  `uname -a | grep
22e0: 20 2d 45 20 5b 4c 6c 5d 69 6e 75 78 60 22 0a 20   -E [Ll]inux`". 
22f0: 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 5f         if [ "$S_
2300: 54 4d 50 5f 30 22 20 21 3d 20 22 22 20 5d 3b 20  TMP_0" != "" ]; 
2310: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20  then.           
2320: 20 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f 4f 50 45   S_FUNC_MMMV_OPE
2330: 52 41 54 49 4e 47 5f 53 59 53 54 45 4d 5f 54 59  RATING_SYSTEM_TY
2340: 50 45 5f 54 31 5f 52 45 53 55 4c 54 3d 22 4c 69  PE_T1_RESULT="Li
2350: 6e 75 78 22 0a 20 20 20 20 20 20 20 20 65 6c 73  nux".        els
2360: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 5f  e.            S_
2370: 54 4d 50 5f 30 3d 22 60 75 6e 61 6d 65 20 2d 61  TMP_0="`uname -a
2380: 20 7c 20 67 72 65 70 20 42 53 44 20 60 22 0a 20   | grep BSD `". 
2390: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b 20             if [ 
23a0: 22 24 53 5f 54 4d 50 5f 30 22 20 21 3d 20 22 22  "$S_TMP_0" != ""
23b0: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
23c0: 20 20 20 20 20 20 20 20 20 53 5f 46 55 4e 43 5f           S_FUNC_
23d0: 4d 4d 4d 56 5f 4f 50 45 52 41 54 49 4e 47 5f 53  MMMV_OPERATING_S
23e0: 59 53 54 45 4d 5f 54 59 50 45 5f 54 31 5f 52 45  YSTEM_TYPE_T1_RE
23f0: 53 55 4c 54 3d 22 42 53 44 22 0a 20 20 20 20 20  SULT="BSD".     
2400: 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20         else.    
2410: 20 20 20 20 20 20 20 20 20 20 20 20 53 5f 46 55              S_FU
2420: 4e 43 5f 4d 4d 4d 56 5f 4f 50 45 52 41 54 49 4e  NC_MMMV_OPERATIN
2430: 47 5f 53 59 53 54 45 4d 5f 54 59 50 45 5f 54 31  G_SYSTEM_TYPE_T1
2440: 5f 52 45 53 55 4c 54 3d 22 75 6e 64 65 74 65 72  _RESULT="undeter
2450: 6d 69 6e 65 64 22 0a 20 20 20 20 20 20 20 20 20  mined".         
2460: 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 66 69     fi.        fi
2470: 0a 20 20 20 20 66 69 0a 7d 20 23 20 66 75 6e 63  .    fi.} # func
2480: 5f 6d 6d 6d 76 5f 6f 70 65 72 61 74 69 6e 67 5f  _mmmv_operating_
2490: 73 79 73 74 65 6d 5f 74 79 70 65 5f 74 31 0a 0a  system_type_t1..
24a0: 66 75 6e 63 5f 6d 6d 6d 76 5f 6f 70 65 72 61 74  func_mmmv_operat
24b0: 69 6e 67 5f 73 79 73 74 65 6d 5f 74 79 70 65 5f  ing_system_type_
24c0: 74 31 0a 0a 69 66 20 5b 20 22 24 53 5f 46 55 4e  t1..if [ "$S_FUN
24d0: 43 5f 4d 4d 4d 56 5f 4f 50 45 52 41 54 49 4e 47  C_MMMV_OPERATING
24e0: 5f 53 59 53 54 45 4d 5f 54 59 50 45 5f 54 31 5f  _SYSTEM_TYPE_T1_
24f0: 52 45 53 55 4c 54 22 20 21 3d 20 22 4c 69 6e 75  RESULT" != "Linu
2500: 78 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 69  x" ]; then.    i
2510: 66 20 5b 20 22 24 53 5f 46 55 4e 43 5f 4d 4d 4d  f [ "$S_FUNC_MMM
2520: 56 5f 4f 50 45 52 41 54 49 4e 47 5f 53 59 53 54  V_OPERATING_SYST
2530: 45 4d 5f 54 59 50 45 5f 54 31 5f 52 45 53 55 4c  EM_TYPE_T1_RESUL
2540: 54 22 20 21 3d 20 22 42 53 44 22 20 5d 3b 20 74  T" != "BSD" ]; t
2550: 68 65 6e 0a 20 20 20 20 20 20 20 20 65 63 68 6f  hen.        echo
2560: 20 22 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f   "".        echo
2570: 20 22 20 20 54 68 65 20 63 6c 61 73 73 69 63 61   "  The classica
2580: 6c 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 75  l command line u
2590: 74 69 6c 69 74 69 65 73 20 61 74 20 22 0a 20 20  tilities at ".  
25a0: 20 20 20 20 20 20 65 63 68 6f 20 22 20 20 64 69        echo "  di
25b0: 66 66 65 72 65 6e 74 20 6f 70 65 72 61 74 69 6e  fferent operatin
25c0: 67 20 73 79 73 74 65 6d 73 2c 20 66 6f 72 20 65  g systems, for e
25d0: 78 61 6d 70 6c 65 2c 20 4c 69 6e 75 78 20 61 6e  xample, Linux an
25e0: 64 20 42 53 44 2c 22 0a 20 20 20 20 20 20 20 20  d BSD,".        
25f0: 65 63 68 6f 20 22 20 20 64 69 66 66 65 72 2e 20  echo "  differ. 
2600: 54 68 69 73 20 73 63 72 69 70 74 20 69 73 20 64  This script is d
2610: 65 73 69 67 6e 65 64 20 74 6f 20 72 75 6e 20 6f  esigned to run o
2620: 6e 6c 79 20 6f 6e 20 22 0a 20 20 20 20 20 20 20  nly on ".       
2630: 20 65 63 68 6f 20 22 20 20 4c 69 6e 75 78 20 61   echo "  Linux a
2640: 6e 64 20 73 6f 6d 65 20 42 53 44 20 76 61 72 69  nd some BSD vari
2650: 61 6e 74 73 2e 22 0a 20 20 20 20 20 20 20 20 65  ants.".        e
2660: 63 68 6f 20 22 20 20 49 66 20 59 6f 75 20 61 72  cho "  If You ar
2670: 65 20 77 69 6c 6c 69 6e 67 20 74 6f 20 72 69 73  e willing to ris
2680: 6b 20 74 68 61 74 20 73 6f 6d 65 20 6f 66 20 59  k that some of Y
2690: 6f 75 72 20 64 61 74 61 20 22 0a 20 20 20 20 20  our data ".     
26a0: 20 20 20 65 63 68 6f 20 22 20 20 69 73 20 64 65     echo "  is de
26b0: 6c 65 74 65 64 20 61 6e 64 2f 6f 72 20 59 6f 75  leted and/or You
26c0: 72 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  r operating syst
26d0: 65 6d 20 69 6e 73 74 61 6e 63 65 22 0a 20 20 20  em instance".   
26e0: 20 20 20 20 20 65 63 68 6f 20 22 20 20 62 65 63       echo "  bec
26f0: 6f 6d 65 73 20 70 65 72 6d 61 6e 65 6e 74 6c 79  omes permanently
2700: 20 66 6c 61 77 65 64 2c 20 74 6f 20 74 68 65 20   flawed, to the 
2710: 70 6f 69 6e 74 20 74 68 61 74 20 22 0a 20 20 20  point that ".   
2720: 20 20 20 20 20 65 63 68 6f 20 22 20 20 69 74 20       echo "  it 
2730: 77 69 6c 6c 20 6e 6f 74 20 65 76 65 6e 20 62 6f  will not even bo
2740: 6f 74 2c 20 74 68 65 6e 20 59 6f 75 20 6d 61 79  ot, then You may
2750: 20 65 64 69 74 20 74 68 65 20 42 61 73 68 20 73   edit the Bash s
2760: 63 72 69 70 74 20 74 68 61 74 20 22 0a 20 20 20  cript that ".   
2770: 20 20 20 20 20 65 63 68 6f 20 22 20 20 64 69 73       echo "  dis
2780: 70 6c 61 79 73 20 74 68 69 73 20 65 72 72 6f 72  plays this error
2790: 20 6d 65 73 73 61 67 65 20 62 79 20 6d 6f 64 69   message by modi
27a0: 66 79 69 6e 67 20 74 68 65 20 74 65 73 74 20 74  fying the test t
27b0: 68 61 74 20 22 0a 20 20 20 20 20 20 20 20 65 63  hat ".        ec
27c0: 68 6f 20 22 20 20 63 68 65 63 6b 73 20 66 6f 72  ho "  checks for
27d0: 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73   the operating s
27e0: 79 73 74 65 6d 20 74 79 70 65 2e 22 0a 20 20 20  ystem type.".   
27f0: 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
2800: 20 20 20 20 20 65 63 68 6f 20 22 20 20 49 66 20       echo "  If 
2810: 59 6f 75 20 64 6f 20 64 65 63 69 64 65 20 74 6f  You do decide to
2820: 20 65 64 69 74 20 74 68 69 73 20 42 61 73 68 20   edit this Bash 
2830: 73 63 72 69 70 74 2c 20 74 68 65 6e 20 22 0a 20  script, then ". 
2840: 20 20 20 20 20 20 20 65 63 68 6f 20 22 20 20 61         echo "  a
2850: 20 72 65 63 6f 6d 6d 65 6e 64 61 74 69 6f 6e 20   recommendation 
2860: 69 73 20 74 6f 20 74 65 73 74 20 59 6f 75 72 20  is to test Your 
2870: 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 22 0a  modifications ".
2880: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 20 20          echo "  
2890: 77 69 74 68 69 6e 20 61 20 76 69 72 74 75 61 6c  within a virtual
28a0: 20 6d 61 63 68 69 6e 65 20 6f 72 2c 20 69 66 20   machine or, if 
28b0: 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 73  virtual machines
28c0: 20 61 72 65 20 6e 6f 74 22 0a 20 20 20 20 20 20   are not".      
28d0: 20 20 65 63 68 6f 20 22 20 20 61 6e 20 6f 70 74    echo "  an opt
28e0: 69 6f 6e 2c 20 61 73 20 73 6f 6d 65 20 6e 65 77  ion, as some new
28f0: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
2900: 6d 20 75 73 65 72 20 74 68 61 74 20 64 6f 65 73  m user that does
2910: 20 6e 6f 74 20 68 61 76 65 20 22 0a 20 20 20 20   not have ".    
2920: 20 20 20 20 65 63 68 6f 20 22 20 20 61 6e 79 20      echo "  any 
2930: 61 63 63 65 73 73 20 74 6f 20 74 68 65 20 76 69  access to the vi
2940: 74 61 6c 20 64 61 74 61 2f 66 69 6c 65 73 2e 22  tal data/files."
2950: 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 20  .        echo " 
2960: 20 47 55 49 44 3d 3d 27 32 35 37 64 65 32 61 35   GUID=='257de2a5
2970: 2d 32 37 63 33 2d 34 34 64 33 2d 38 39 65 61 2d  -27c3-44d3-89ea-
2980: 33 31 35 32 36 30 63 31 35 31 65 37 27 22 0a 20  315260c151e7'". 
2990: 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20         echo "". 
29a0: 20 20 20 20 20 20 20 65 63 68 6f 20 22 20 20 41         echo "  A
29b0: 62 6f 72 74 69 6e 67 20 73 63 72 69 70 74 20 77  borting script w
29c0: 69 74 68 6f 75 74 20 64 6f 69 6e 67 20 61 6e 79  ithout doing any
29d0: 74 68 69 6e 67 2e 22 0a 20 20 20 20 20 20 20 20  thing.".        
29e0: 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
29f0: 65 78 69 74 20 31 20 23 20 65 78 69 74 20 77 69  exit 1 # exit wi
2a00: 74 68 20 65 72 72 6f 72 0a 20 20 20 20 66 69 0a  th error.    fi.
2a10: 66 69 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  fi...#----------
2a20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2a30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2a40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2a50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2a60: 0a 0a 53 42 5f 45 58 49 53 54 53 5f 4f 4e 5f 50  ..SB_EXISTS_ON_P
2a70: 41 54 48 5f 54 31 5f 52 45 53 55 4c 54 3d 22 66  ATH_T1_RESULT="f
2a80: 22 0a 66 75 6e 63 5f 73 62 5f 65 78 69 73 74 73  ".func_sb_exists
2a90: 5f 6f 6e 5f 70 61 74 68 5f 74 31 20 28 29 20 7b  _on_path_t1 () {
2aa0: 0a 20 20 20 20 6c 6f 63 61 6c 20 53 5f 4e 41 4d  .    local S_NAM
2ab0: 45 5f 4f 46 5f 54 48 45 5f 45 58 45 43 55 54 41  E_OF_THE_EXECUTA
2ac0: 42 4c 45 5f 31 3d 22 24 31 22 20 23 20 66 69 72  BLE_1="$1" # fir
2ad0: 73 74 20 66 75 6e 63 74 69 6f 6e 20 61 72 67 75  st function argu
2ae0: 6d 65 6e 74 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d  ment.    #------
2af0: 2d 2d 0a 20 20 20 20 23 20 46 75 6e 63 74 69 6f  --.    # Functio
2b00: 6e 20 63 61 6c 6c 73 20 6c 69 6b 65 0a 20 20 20  n calls like.   
2b10: 20 23 0a 20 20 20 20 23 20 20 20 20 20 66 75 6e   #.    #     fun
2b20: 63 5f 73 62 5f 65 78 69 73 74 73 5f 6f 6e 5f 70  c_sb_exists_on_p
2b30: 61 74 68 5f 74 31 20 22 22 0a 20 20 20 20 23 20  ath_t1 "".    # 
2b40: 20 20 20 20 66 75 6e 63 5f 73 62 5f 65 78 69 73      func_sb_exis
2b50: 74 73 5f 6f 6e 5f 70 61 74 68 5f 74 31 20 22 20  ts_on_path_t1 " 
2b60: 22 0a 20 20 20 20 23 20 20 20 20 20 66 75 6e 63  ".    #     func
2b70: 5f 73 62 5f 65 78 69 73 74 73 5f 6f 6e 5f 70 61  _sb_exists_on_pa
2b80: 74 68 5f 74 31 20 22 6c 73 20 70 73 22 20 23 20  th_t1 "ls ps" # 
2b90: 63 6f 6e 74 61 69 6e 73 20 61 20 73 70 61 63 65  contains a space
2ba0: 0a 20 20 20 20 23 0a 20 20 20 20 23 20 61 72 65  .    #.    # are
2bb0: 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e 0a 20 20   not allowed..  
2bc0: 20 20 69 66 20 5b 20 22 24 53 5f 4e 41 4d 45 5f    if [ "$S_NAME_
2bd0: 4f 46 5f 54 48 45 5f 45 58 45 43 55 54 41 42 4c  OF_THE_EXECUTABL
2be0: 45 5f 31 22 20 3d 3d 20 22 22 20 5d 20 3b 20 74  E_1" == "" ] ; t
2bf0: 68 65 6e 0a 20 20 20 20 20 20 20 20 65 63 68 6f  hen.        echo
2c00: 20 22 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f   "".        echo
2c10: 20 22 54 68 65 20 42 61 73 68 20 66 75 6e 63 74   "The Bash funct
2c20: 69 6f 6e 20 22 0a 20 20 20 20 20 20 20 20 65 63  ion ".        ec
2c30: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 65 63  ho "".        ec
2c40: 68 6f 20 22 20 20 20 20 66 75 6e 63 5f 73 62 5f  ho "    func_sb_
2c50: 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f 74  exists_on_path_t
2c60: 31 20 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f  1 ".        echo
2c70: 20 22 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f   "".        echo
2c80: 20 22 69 73 20 6e 6f 74 20 64 65 73 69 67 6e 65   "is not designe
2c90: 64 20 74 6f 20 68 61 6e 64 6c 65 20 61 6e 20 61  d to handle an a
2ca0: 72 67 75 6d 65 6e 74 20 74 68 61 74 20 22 0a 20  rgument that ". 
2cb0: 20 20 20 20 20 20 20 65 63 68 6f 20 22 65 71 75         echo "equ
2cc0: 61 6c 73 20 77 69 74 68 20 61 6e 20 65 6d 70 74  als with an empt
2cd0: 79 20 73 74 72 69 6e 67 2e 22 0a 20 20 20 20 20  y string.".     
2ce0: 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d 27     echo "GUID=='
2cf0: 35 33 63 32 61 61 30 34 2d 30 61 30 61 2d 34 35  53c2aa04-0a0a-45
2d00: 34 65 2d 39 36 31 39 2d 33 31 35 32 36 30 63 31  4e-9619-315260c1
2d10: 35 31 65 37 27 22 0a 20 20 20 20 20 20 20 20 65  51e7'".        e
2d20: 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 23  cho "".        #
2d30: 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 63 64 20  ----.        cd 
2d40: 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20 20 20  $S_FP_ORIG.     
2d50: 20 20 20 65 78 69 74 20 31 20 23 20 65 78 69 74     exit 1 # exit
2d60: 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20 20   with error.    
2d70: 66 69 0a 20 20 20 20 6c 6f 63 61 6c 20 53 5f 54  fi.    local S_T
2d80: 4d 50 5f 30 3d 22 60 70 72 69 6e 74 66 20 5c 22  MP_0="`printf \"
2d90: 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45  $S_NAME_OF_THE_E
2da0: 58 45 43 55 54 41 42 4c 45 5f 31 5c 22 20 7c 20  XECUTABLE_1\" | 
2db0: 67 61 77 6b 20 27 7b 67 73 75 62 28 2f 5c 73 2f  gawk '{gsub(/\s/
2dc0: 2c 22 22 29 3b 70 72 69 6e 74 66 20 22 25 73 22  ,"");printf "%s"
2dd0: 2c 20 24 31 20 7d 27 60 22 0a 20 20 20 20 69 66  , $1 }'`".    if
2de0: 20 5b 20 22 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54   [ "$S_NAME_OF_T
2df0: 48 45 5f 45 58 45 43 55 54 41 42 4c 45 5f 31 22  HE_EXECUTABLE_1"
2e00: 20 21 3d 20 22 24 53 5f 54 4d 50 5f 30 22 20 5d   != "$S_TMP_0" ]
2e10: 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20   ; then.        
2e20: 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
2e30: 65 63 68 6f 20 22 54 68 65 20 42 61 73 68 20 66  echo "The Bash f
2e40: 75 6e 63 74 69 6f 6e 20 22 0a 20 20 20 20 20 20  unction ".      
2e50: 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20    echo "".      
2e60: 20 20 65 63 68 6f 20 22 20 20 20 20 66 75 6e 63    echo "    func
2e70: 5f 73 62 5f 65 78 69 73 74 73 5f 6f 6e 5f 70 61  _sb_exists_on_pa
2e80: 74 68 5f 74 31 20 22 0a 20 20 20 20 20 20 20 20  th_t1 ".        
2e90: 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
2ea0: 65 63 68 6f 20 22 69 73 20 6e 6f 74 20 64 65 73  echo "is not des
2eb0: 69 67 6e 65 64 20 74 6f 20 68 61 6e 64 6c 65 20  igned to handle 
2ec0: 61 6e 20 61 72 67 75 6d 65 6e 74 20 76 61 6c 75  an argument valu
2ed0: 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20  e that contains 
2ee0: 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
2ef0: 73 70 61 63 65 73 20 6f 72 20 74 61 62 75 6c 61  spaces or tabula
2f00: 74 69 6f 6e 20 63 68 61 72 61 63 74 65 72 73 2e  tion characters.
2f10: 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
2f20: 54 68 65 20 72 65 63 65 69 76 65 64 20 76 61 6c  The received val
2f30: 75 65 20 69 6e 20 70 61 72 65 6e 74 68 65 73 69  ue in parenthesi
2f40: 73 3a 28 24 53 5f 4e 41 4d 45 5f 4f 46 5f 54 48  s:($S_NAME_OF_TH
2f50: 45 5f 45 58 45 43 55 54 41 42 4c 45 5f 31 29 2e  E_EXECUTABLE_1).
2f60: 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
2f70: 47 55 49 44 3d 3d 27 35 35 61 36 37 64 31 33 2d  GUID=='55a67d13-
2f80: 32 63 63 30 2d 34 31 66 63 2d 62 62 35 39 2d 33  2cc0-41fc-bb59-3
2f90: 31 35 32 36 30 63 31 35 31 65 37 27 22 0a 20 20  15260c151e7'".  
2fa0: 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20        echo "".  
2fb0: 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20        #----.    
2fc0: 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49      cd $S_FP_ORI
2fd0: 47 0a 20 20 20 20 20 20 20 20 65 78 69 74 20 31  G.        exit 1
2fe0: 20 23 20 65 78 69 74 20 77 69 74 68 20 65 72 72   # exit with err
2ff0: 6f 72 0a 20 20 20 20 66 69 0a 20 20 20 20 23 2d  or.    fi.    #-
3000: 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 53 5f 54 4d  -------.    S_TM
3010: 50 5f 30 3d 22 5c 60 77 68 69 63 68 20 24 53 5f  P_0="\`which $S_
3020: 4e 41 4d 45 5f 4f 46 5f 54 48 45 5f 45 58 45 43  NAME_OF_THE_EXEC
3030: 55 54 41 42 4c 45 5f 31 20 32 3e 2f 64 65 76 2f  UTABLE_1 2>/dev/
3040: 6e 75 6c 6c 5c 60 22 0a 20 20 20 20 6c 6f 63 61  null\`".    loca
3050: 6c 20 53 5f 54 4d 50 5f 31 3d 22 22 0a 20 20 20  l S_TMP_1="".   
3060: 20 6c 6f 63 61 6c 20 53 5f 54 4d 50 5f 32 3d 22   local S_TMP_2="
3070: 53 5f 54 4d 50 5f 31 3d 24 53 5f 54 4d 50 5f 30  S_TMP_1=$S_TMP_0
3080: 22 0a 20 20 20 20 65 76 61 6c 20 24 7b 53 5f 54  ".    eval ${S_T
3090: 4d 50 5f 32 7d 0a 20 20 20 20 23 2d 2d 2d 2d 0a  MP_2}.    #----.
30a0: 20 20 20 20 69 66 20 5b 20 22 24 53 5f 54 4d 50      if [ "$S_TMP
30b0: 5f 31 22 20 3d 3d 20 22 22 20 5d 20 3b 20 74 68  _1" == "" ] ; th
30c0: 65 6e 0a 20 20 20 20 20 20 20 20 53 42 5f 45 58  en.        SB_EX
30d0: 49 53 54 53 5f 4f 4e 5f 50 41 54 48 5f 54 31 5f  ISTS_ON_PATH_T1_
30e0: 52 45 53 55 4c 54 3d 22 66 22 0a 20 20 20 20 65  RESULT="f".    e
30f0: 6c 73 65 0a 20 20 20 20 20 20 20 20 53 42 5f 45  lse.        SB_E
3100: 58 49 53 54 53 5f 4f 4e 5f 50 41 54 48 5f 54 31  XISTS_ON_PATH_T1
3110: 5f 52 45 53 55 4c 54 3d 22 74 22 0a 20 20 20 20  _RESULT="t".    
3120: 66 69 0a 7d 20 23 20 66 75 6e 63 5f 73 62 5f 65  fi.} # func_sb_e
3130: 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f 74 31  xists_on_path_t1
3140: 20 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ...#-----------
3150: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3170: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3180: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
3190: 0a 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f 47 55 49  .S_FUNC_MMMV_GUI
31a0: 44 5f 54 31 5f 52 45 53 55 4c 54 3d 22 6e 6f 74  D_T1_RESULT="not
31b0: 5f 79 65 74 5f 73 65 74 22 0a 53 5f 46 55 4e 43  _yet_set".S_FUNC
31c0: 5f 4d 4d 4d 56 5f 47 55 49 44 5f 54 31 5f 4d 4f  _MMMV_GUID_T1_MO
31d0: 44 45 3d 22 22 20 23 20 6f 70 74 69 6d 2e 20 74  DE="" # optim. t
31e0: 6f 20 73 6b 69 70 20 72 65 70 65 61 74 69 6e 67  o skip repeating
31f0: 20 63 6f 6e 73 6f 6c 65 20 74 6f 6f 6c 20 73 65   console tool se
3200: 6c 65 63 74 69 6f 6e 0a 66 75 6e 63 5f 6d 6d 6d  lection.func_mmm
3210: 76 5f 47 55 49 44 5f 74 31 28 29 20 7b 0a 20 20  v_GUID_t1() {.  
3220: 20 20 23 20 44 6f 65 73 20 6e 6f 74 20 74 61 6b    # Does not tak
3230: 65 20 61 6e 79 20 61 72 67 75 6d 65 6e 74 73 2e  e any arguments.
3240: 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20  .    #--------. 
3250: 20 20 20 23 66 75 6e 63 5f 6d 6d 6d 76 5f 65 78     #func_mmmv_ex
3260: 63 5f 68 61 73 68 5f 66 75 6e 63 74 69 6f 6e 5f  c_hash_function_
3270: 69 6e 70 75 74 5f 76 65 72 69 66 69 63 61 74 69  input_verificati
3280: 6f 6e 5f 74 31 20 22 66 75 6e 63 5f 6d 6d 6d 76  on_t1 "func_mmmv
3290: 5f 47 55 49 44 5f 74 31 22 20 22 24 31 22 0a 20  _GUID_t1" "$1". 
32a0: 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d     #------------
32b0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 6c 6f 63  --------.    loc
32c0: 61 6c 20 53 5f 54 4d 50 5f 30 3d 22 22 20 23 20  al S_TMP_0="" # 
32d0: 64 65 63 6c 61 72 61 74 69 6f 6e 0a 20 20 20 20  declaration.    
32e0: 6c 6f 63 61 6c 20 53 5f 54 4d 50 5f 31 3d 22 22  local S_TMP_1=""
32f0: 20 23 20 64 65 63 6c 61 72 61 74 69 6f 6e 0a 20   # declaration. 
3300: 20 20 20 23 20 4d 6f 64 65 20 73 65 6c 65 63 74     # Mode select
3310: 69 6f 6e 3a 0a 20 20 20 20 69 66 20 5b 20 22 24  ion:.    if [ "$
3320: 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f 47 55 49 44  S_FUNC_MMMV_GUID
3330: 5f 54 31 5f 4d 4f 44 45 22 20 3d 3d 20 22 22 20  _T1_MODE" == "" 
3340: 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20  ] ; then.       
3350: 20 53 42 5f 45 58 49 53 54 53 5f 4f 4e 5f 50 41   SB_EXISTS_ON_PA
3360: 54 48 5f 54 31 5f 52 45 53 55 4c 54 3d 22 66 22  TH_T1_RESULT="f"
3370: 20 20 23 20 69 66 2d 62 6c 6f 63 6b 20 69 6e 69    # if-block ini
3380: 74 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a  t.        #----.
3390: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53          if [ "$S
33a0: 42 5f 45 58 49 53 54 53 5f 4f 4e 5f 50 41 54 48  B_EXISTS_ON_PATH
33b0: 5f 54 31 5f 52 45 53 55 4c 54 22 20 3d 3d 20 22  _T1_RESULT" == "
33c0: 66 22 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20  f" ] ; then.    
33d0: 20 20 20 20 20 20 20 20 53 5f 54 4d 50 5f 30 3d          S_TMP_0=
33e0: 22 75 75 69 64 67 65 6e 22 20 23 20 4c 69 6e 75  "uuidgen" # Linu
33f0: 78 20 76 65 72 73 69 6f 6e 0a 20 20 20 20 20 20  x version.      
3400: 20 20 20 20 20 20 66 75 6e 63 5f 73 62 5f 65 78        func_sb_ex
3410: 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f 74 31 20  ists_on_path_t1 
3420: 22 24 53 5f 54 4d 50 5f 30 22 20 0a 20 20 20 20  "$S_TMP_0" .    
3430: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53          if [ "$S
3440: 42 5f 45 58 49 53 54 53 5f 4f 4e 5f 50 41 54 48  B_EXISTS_ON_PATH
3450: 5f 54 31 5f 52 45 53 55 4c 54 22 20 3d 3d 20 22  _T1_RESULT" == "
3460: 74 22 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20  t" ] ; then.    
3470: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 5f 46               S_F
3480: 55 4e 43 5f 4d 4d 4d 56 5f 47 55 49 44 5f 54 31  UNC_MMMV_GUID_T1
3490: 5f 4d 4f 44 45 3d 22 24 53 5f 54 4d 50 5f 30 22  _MODE="$S_TMP_0"
34a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a  .            fi.
34b0: 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20          fi.     
34c0: 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20     #----.       
34d0: 20 69 66 20 5b 20 22 24 53 42 5f 45 58 49 53 54   if [ "$SB_EXIST
34e0: 53 5f 4f 4e 5f 50 41 54 48 5f 54 31 5f 52 45 53  S_ON_PATH_T1_RES
34f0: 55 4c 54 22 20 3d 3d 20 22 66 22 20 5d 20 3b 20  ULT" == "f" ] ; 
3500: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20  then.           
3510: 20 53 5f 54 4d 50 5f 30 3d 22 75 75 69 64 22 20   S_TMP_0="uuid" 
3520: 20 20 20 23 20 42 53 44 20 76 65 72 73 69 6f 6e     # BSD version
3530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e  .            fun
3540: 63 5f 73 62 5f 65 78 69 73 74 73 5f 6f 6e 5f 70  c_sb_exists_on_p
3550: 61 74 68 5f 74 31 20 22 24 53 5f 54 4d 50 5f 30  ath_t1 "$S_TMP_0
3560: 22 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  " .            i
3570: 66 20 5b 20 22 24 53 42 5f 45 58 49 53 54 53 5f  f [ "$SB_EXISTS_
3580: 4f 4e 5f 50 41 54 48 5f 54 31 5f 52 45 53 55 4c  ON_PATH_T1_RESUL
3590: 54 22 20 3d 3d 20 22 74 22 20 5d 20 3b 20 74 68  T" == "t" ] ; th
35a0: 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  en.             
35b0: 20 20 20 20 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f      S_FUNC_MMMV_
35c0: 47 55 49 44 5f 54 31 5f 4d 4f 44 45 3d 22 24 53  GUID_T1_MODE="$S
35d0: 5f 54 4d 50 5f 30 22 0a 20 20 20 20 20 20 20 20  _TMP_0".        
35e0: 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 66      fi.        f
35f0: 69 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 2d  i.        #-----
3600: 2d 2d 2d 0a 20 20 20 20 20 20 20 20 69 66 20 5b  ---.        if [
3610: 20 22 24 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f 47   "$S_FUNC_MMMV_G
3620: 55 49 44 5f 54 31 5f 4d 4f 44 45 22 20 3d 3d 20  UID_T1_MODE" == 
3630: 22 22 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20  "" ] ; then.    
3640: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
3650: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
3660: 20 22 41 6c 6c 20 6f 66 20 74 68 65 20 47 55 49   "All of the GUI
3670: 44 20 67 65 6e 65 72 61 74 69 6f 6e 20 69 6d 70  D generation imp
3680: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 74 68 61  lementations tha
3690: 74 20 74 68 69 73 20 73 63 72 69 70 74 20 22 20  t this script " 
36a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68  .            ech
36b0: 6f 20 22 69 73 20 63 61 70 61 62 6c 65 20 6f 66  o "is capable of
36c0: 20 75 73 69 6e 67 20 28 75 75 69 64 67 65 6e 2c   using (uuidgen,
36d0: 20 75 75 69 64 29 20 22 0a 20 20 20 20 20 20 20   uuid) ".       
36e0: 20 20 20 20 20 65 63 68 6f 20 22 61 72 65 20 6d       echo "are m
36f0: 69 73 73 69 6e 67 20 66 72 6f 6d 20 74 68 65 20  issing from the 
3700: 50 41 54 48 2e 22 0a 20 20 20 20 20 20 20 20 20  PATH.".         
3710: 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d 27     echo "GUID=='
3720: 31 62 30 62 65 61 37 35 2d 31 65 61 37 2d 34 35  1b0bea75-1ea7-45
3730: 34 61 2d 62 66 31 39 2d 33 31 35 32 36 30 63 31  4a-bf19-315260c1
3740: 35 31 65 37 27 22 0a 20 20 20 20 20 20 20 20 20  51e7'".         
3750: 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20     echo "".     
3760: 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20         #----.   
3770: 20 20 20 20 20 20 20 20 20 63 64 20 24 53 5f 46           cd $S_F
3780: 50 5f 4f 52 49 47 0a 20 20 20 20 20 20 20 20 20  P_ORIG.         
3790: 20 20 20 65 78 69 74 20 31 20 23 20 65 78 69 74     exit 1 # exit
37a0: 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20 20   with error.    
37b0: 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 23      fi.        #
37c0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20  --------.       
37d0: 20 69 66 20 5b 20 22 24 3f 22 20 21 3d 20 22 30   if [ "$?" != "0
37e0: 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20  " ]; then.      
37f0: 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20        echo "".  
3800: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
3810: 54 68 69 73 20 73 63 72 69 70 74 20 69 73 20 66  This script is f
3820: 6c 61 77 65 64 2e 22 0a 20 20 20 20 20 20 20 20  lawed.".        
3830: 20 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d      echo "GUID==
3840: 27 31 35 34 30 65 34 36 32 2d 32 37 33 35 2d 34  '1540e462-2735-4
3850: 37 62 39 2d 38 31 35 38 2d 33 31 35 32 36 30 63  7b9-8158-315260c
3860: 31 35 31 65 37 27 22 0a 20 20 20 20 20 20 20 20  151e7'".        
3870: 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
3880: 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20          #----.  
3890: 20 20 20 20 20 20 20 20 20 20 63 64 20 24 53 5f            cd $S_
38a0: 46 50 5f 4f 52 49 47 0a 20 20 20 20 20 20 20 20  FP_ORIG.        
38b0: 20 20 20 20 65 78 69 74 20 31 20 23 20 65 78 69      exit 1 # exi
38c0: 74 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20  t with error.   
38d0: 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20       fi.        
38e0: 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 66 69  #--------.    fi
38f0: 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .    #----------
3900: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 53  ----------.    S
3910: 5f 46 55 4e 43 5f 4d 4d 4d 56 5f 47 55 49 44 5f  _FUNC_MMMV_GUID_
3920: 54 31 5f 52 45 53 55 4c 54 3d 22 22 0a 20 20 20  T1_RESULT="".   
3930: 20 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   #--------------
3940: 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 69 66 20 5b 20  ------.    if [ 
3950: 22 24 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f 47 55  "$S_FUNC_MMMV_GU
3960: 49 44 5f 54 31 5f 4d 4f 44 45 22 20 3d 3d 20 22  ID_T1_MODE" == "
3970: 75 75 69 64 67 65 6e 22 20 5d 3b 20 74 68 65 6e  uuidgen" ]; then
3980: 0a 20 20 20 20 20 20 20 20 53 5f 54 4d 50 5f 30  .        S_TMP_0
3990: 3d 22 60 75 75 69 64 67 65 6e 60 22 0a 20 20 20  ="`uuidgen`".   
39a0: 20 20 20 20 20 69 66 20 5b 20 22 24 3f 22 20 21       if [ "$?" !
39b0: 3d 20 22 30 22 20 5d 3b 20 74 68 65 6e 0a 20 20  = "0" ]; then.  
39c0: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
39d0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63  ".            ec
39e0: 68 6f 20 22 54 68 65 20 63 6f 6e 73 6f 6c 65 20  ho "The console 
39f0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 5c 22 75 75  application \"uu
3a00: 69 64 67 65 6e 5c 22 20 22 0a 20 20 20 20 20 20  idgen\" ".      
3a10: 20 20 20 20 20 20 65 63 68 6f 20 22 65 78 69 74        echo "exit
3a20: 65 64 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72  ed with an error
3a30: 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  .".            e
3a40: 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20  cho "".         
3a50: 20 20 20 65 63 68 6f 20 22 2d 2d 2d 2d 63 6f 6e     echo "----con
3a60: 73 6f 6c 65 2d 2d 6f 75 74 70 75 74 2d 2d 63 69  sole--output--ci
3a70: 74 61 74 69 6f 6e 2d 2d 73 74 61 72 74 2d 2d 2d  tation--start---
3a80: 2d 2d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  --".            
3a90: 65 63 68 6f 20 22 60 75 75 69 64 67 65 6e 60 22  echo "`uuidgen`"
3aa0: 20 23 20 73 74 64 6f 75 74 20 61 6e 64 20 73 74   # stdout and st
3ab0: 64 65 72 72 0a 20 20 20 20 20 20 20 20 20 20 20  derr.           
3ac0: 20 65 63 68 6f 20 22 2d 2d 2d 2d 63 6f 6e 73 6f   echo "----conso
3ad0: 6c 65 2d 2d 6f 75 74 70 75 74 2d 2d 63 69 74 61  le--output--cita
3ae0: 74 69 6f 6e 2d 2d 65 6e 64 2d 2d 2d 2d 2d 2d 2d  tion--end-------
3af0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63  ".            ec
3b00: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  ho "".          
3b10: 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d 27 32    echo "GUID=='2
3b20: 35 38 30 66 36 65 35 2d 32 30 63 66 2d 34 36 32  580f6e5-20cf-462
3b30: 38 2d 39 35 34 38 2d 33 31 35 32 36 30 63 31 35  8-9548-315260c15
3b40: 31 65 37 27 22 0a 20 20 20 20 20 20 20 20 20 20  1e7'".          
3b50: 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20    echo "".      
3b60: 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20        #----.    
3b70: 20 20 20 20 20 20 20 20 63 64 20 24 53 5f 46 50          cd $S_FP
3b80: 5f 4f 52 49 47 0a 20 20 20 20 20 20 20 20 20 20  _ORIG.          
3b90: 20 20 65 78 69 74 20 31 20 23 20 65 78 69 74 20    exit 1 # exit 
3ba0: 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20 20 20  with error.     
3bb0: 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 23 2d     fi.        #-
3bc0: 2d 2d 2d 20 0a 20 20 20 20 20 20 20 20 53 5f 46  --- .        S_F
3bd0: 55 4e 43 5f 4d 4d 4d 56 5f 47 55 49 44 5f 54 31  UNC_MMMV_GUID_T1
3be0: 5f 52 45 53 55 4c 54 3d 22 24 53 5f 54 4d 50 5f  _RESULT="$S_TMP_
3bf0: 30 22 0a 20 20 20 20 66 69 0a 20 20 20 20 23 2d  0".    fi.    #-
3c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3c10: 2d 2d 2d 0a 20 20 20 20 69 66 20 5b 20 22 24 53  ---.    if [ "$S
3c20: 5f 46 55 4e 43 5f 4d 4d 4d 56 5f 47 55 49 44 5f  _FUNC_MMMV_GUID_
3c30: 54 31 5f 4d 4f 44 45 22 20 3d 3d 20 22 75 75 69  T1_MODE" == "uui
3c40: 64 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20  d" ]; then.     
3c50: 20 20 20 53 5f 54 4d 50 5f 30 3d 22 60 75 75 69     S_TMP_0="`uui
3c60: 64 60 22 0a 20 20 20 20 20 20 20 20 69 66 20 5b  d`".        if [
3c70: 20 22 24 3f 22 20 21 3d 20 22 30 22 20 5d 3b 20   "$?" != "0" ]; 
3c80: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20  then.           
3c90: 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20   echo "".       
3ca0: 20 20 20 20 20 65 63 68 6f 20 22 54 68 65 20 63       echo "The c
3cb0: 6f 6e 73 6f 6c 65 20 61 70 70 6c 69 63 61 74 69  onsole applicati
3cc0: 6f 6e 20 5c 22 75 75 69 64 5c 22 20 22 0a 20 20  on \"uuid\" ".  
3cd0: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
3ce0: 65 78 69 74 65 64 20 77 69 74 68 20 61 6e 20 65  exited with an e
3cf0: 72 72 6f 72 2e 22 0a 20 20 20 20 20 20 20 20 20  rror.".         
3d00: 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20     echo "".     
3d10: 20 20 20 20 20 20 20 65 63 68 6f 20 22 2d 2d 2d         echo "---
3d20: 2d 63 6f 6e 73 6f 6c 65 2d 2d 6f 75 74 70 75 74  -console--output
3d30: 2d 2d 63 69 74 61 74 69 6f 6e 2d 2d 73 74 61 72  --citation--star
3d40: 74 2d 2d 2d 2d 2d 22 0a 20 20 20 20 20 20 20 20  t-----".        
3d50: 20 20 20 20 65 63 68 6f 20 22 60 75 75 69 64 60      echo "`uuid`
3d60: 22 20 23 20 73 74 64 6f 75 74 20 61 6e 64 20 73  " # stdout and s
3d70: 74 64 65 72 72 0a 20 20 20 20 20 20 20 20 20 20  tderr.          
3d80: 20 20 65 63 68 6f 20 22 2d 2d 2d 2d 63 6f 6e 73    echo "----cons
3d90: 6f 6c 65 2d 2d 6f 75 74 70 75 74 2d 2d 63 69 74  ole--output--cit
3da0: 61 74 69 6f 6e 2d 2d 65 6e 64 2d 2d 2d 2d 2d 2d  ation--end------
3db0: 2d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  -".            e
3dc0: 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20  cho "".         
3dd0: 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d 27     echo "GUID=='
3de0: 37 31 65 66 35 38 33 36 2d 34 38 66 32 2d 34 36  71ef5836-48f2-46
3df0: 63 32 2d 39 62 35 38 2d 33 31 35 32 36 30 63 31  c2-9b58-315260c1
3e00: 35 31 65 37 27 22 0a 20 20 20 20 20 20 20 20 20  51e7'".         
3e10: 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20     echo "".     
3e20: 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20         #----.   
3e30: 20 20 20 20 20 20 20 20 20 63 64 20 24 53 5f 46           cd $S_F
3e40: 50 5f 4f 52 49 47 0a 20 20 20 20 20 20 20 20 20  P_ORIG.         
3e50: 20 20 20 65 78 69 74 20 31 20 23 20 65 78 69 74     exit 1 # exit
3e60: 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20 20   with error.    
3e70: 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 23      fi.        #
3e80: 2d 2d 2d 2d 20 0a 20 20 20 20 20 20 20 20 53 5f  ---- .        S_
3e90: 46 55 4e 43 5f 4d 4d 4d 56 5f 47 55 49 44 5f 54  FUNC_MMMV_GUID_T
3ea0: 31 5f 52 45 53 55 4c 54 3d 22 24 53 5f 54 4d 50  1_RESULT="$S_TMP
3eb0: 5f 30 22 0a 20 20 20 20 66 69 0a 20 20 20 20 23  _0".    fi.    #
3ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3ed0: 2d 2d 2d 2d 0a 20 20 20 20 53 5f 54 4d 50 5f 30  ----.    S_TMP_0
3ee0: 3d 22 60 70 72 69 6e 74 66 20 5c 22 24 53 5f 46  ="`printf \"$S_F
3ef0: 55 4e 43 5f 4d 4d 4d 56 5f 47 55 49 44 5f 54 31  UNC_MMMV_GUID_T1
3f00: 5f 52 45 53 55 4c 54 5c 22 20 7c 20 77 63 20 2d  _RESULT\" | wc -
3f10: 6d 20 7c 20 67 61 77 6b 20 27 7b 67 73 75 62 28  m | gawk '{gsub(
3f20: 2f 5c 73 2f 2c 22 22 29 3b 70 72 69 6e 74 66 20  /\s/,"");printf 
3f30: 22 25 73 22 2c 20 24 31 20 7d 27 60 22 0a 20 20  "%s", $1 }'`".  
3f40: 20 20 53 5f 54 4d 50 5f 31 3d 22 33 36 22 0a 20    S_TMP_1="36". 
3f50: 20 20 20 69 66 20 5b 20 22 24 53 5f 54 4d 50 5f     if [ "$S_TMP_
3f60: 30 22 20 21 3d 20 22 24 53 5f 54 4d 50 5f 31 22  0" != "$S_TMP_1"
3f70: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
3f80: 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20   echo "".       
3f90: 20 65 63 68 6f 20 22 41 63 63 6f 72 64 69 6e 67   echo "According
3fa0: 20 74 6f 20 74 68 65 20 47 55 49 44 20 73 70 65   to the GUID spe
3fb0: 63 69 66 69 63 61 74 69 6f 6e 2c 20 49 45 54 46  cification, IETF
3fc0: 20 52 46 43 20 34 31 32 32 2c 20 20 22 0a 20 20   RFC 4122,  ".  
3fd0: 20 20 20 20 20 20 65 63 68 6f 20 22 74 68 65 20        echo "the 
3fe0: 6c 65 6e 67 68 74 20 6f 66 20 74 68 65 20 47 55  lenght of the GU
3ff0: 49 44 20 69 73 20 22 0a 20 20 20 20 20 20 20 20  ID is ".        
4000: 65 63 68 6f 20 22 24 53 5f 54 4d 50 5f 31 20 63  echo "$S_TMP_1 c
4010: 68 61 72 61 63 74 65 72 73 2c 20 62 75 74 20 74  haracters, but t
4020: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65  he result of the
4030: 20 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20   ".        echo 
4040: 22 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20  "".        echo 
4050: 22 20 20 20 20 66 75 6e 63 5f 6d 6d 6d 76 5f 47  "    func_mmmv_G
4060: 55 49 44 5f 74 31 22 0a 20 20 20 20 20 20 20 20  UID_t1".        
4070: 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
4080: 65 63 68 6f 20 22 69 73 20 73 6f 6d 65 74 68 69  echo "is somethi
4090: 6e 67 20 65 6c 73 65 2e 20 54 68 65 20 66 6c 61  ng else. The fla
40a0: 77 65 64 20 47 55 49 44 20 63 61 6e 64 69 64 61  wed GUID candida
40b0: 74 65 20 69 6e 20 70 61 72 65 6e 74 68 65 73 69  te in parenthesi
40c0: 73 3a 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f  s:".        echo
40d0: 20 22 28 24 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f   "($S_FUNC_MMMV_
40e0: 47 55 49 44 5f 54 31 5f 52 45 53 55 4c 54 29 22  GUID_T1_RESULT)"
40f0: 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22  .        echo ""
4100: 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 54  .        echo "T
4110: 68 65 20 6c 65 6e 67 68 74 20 63 61 6e 64 69 64  he lenght candid
4120: 61 74 65 20 6f 66 20 74 68 65 20 66 6c 61 77 65  ate of the flawe
4130: 64 20 47 55 49 44 20 63 61 6e 64 69 64 61 74 65  d GUID candidate
4140: 20 69 6e 20 70 61 72 65 6e 74 68 65 73 69 73 3a   in parenthesis:
4150: 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
4160: 28 24 53 5f 54 4d 50 5f 30 29 2e 22 0a 20 20 20  ($S_TMP_0).".   
4170: 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
4180: 20 20 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d       echo "GUID=
4190: 3d 27 31 65 66 65 32 38 38 33 2d 35 31 35 35 2d  ='1efe2883-5155-
41a0: 34 32 30 35 2d 38 39 31 38 2d 33 31 35 32 36 30  4205-8918-315260
41b0: 63 31 35 31 65 37 27 22 0a 20 20 20 20 20 20 20  c151e7'".       
41c0: 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20   echo "".       
41d0: 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 63   #----.        c
41e0: 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20  d $S_FP_ORIG.   
41f0: 20 20 20 20 20 65 78 69 74 20 31 20 23 20 65 78       exit 1 # ex
4200: 69 74 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20  it with error.  
4210: 20 20 66 69 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d    fi.    #------
4220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 7d  --------------.}
4230: 20 23 20 66 75 6e 63 5f 6d 6d 6d 76 5f 47 55 49   # func_mmmv_GUI
4240: 44 5f 74 31 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d  D_t1...#--------
4250: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4290: 2d 2d 0a 0a 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f  --..S_FUNC_MMMV_
42a0: 53 48 52 45 44 5f 54 31 5f 4d 4f 44 45 3d 22 22  SHRED_T1_MODE=""
42b0: 20 23 20 6f 70 74 69 6d 2e 20 74 6f 20 73 6b 69   # optim. to ski
42c0: 70 20 72 65 70 65 61 74 69 6e 67 20 63 6f 6e 73  p repeating cons
42d0: 6f 6c 65 20 74 6f 6f 6c 20 73 65 6c 65 63 74 69  ole tool selecti
42e0: 6f 6e 0a 66 75 6e 63 5f 6d 6d 6d 76 5f 73 68 72  on.func_mmmv_shr
42f0: 65 64 5f 74 31 28 29 20 7b 0a 20 20 20 20 6c 6f  ed_t1() {.    lo
4300: 63 61 6c 20 53 5f 46 50 5f 49 4e 3d 22 24 31 22  cal S_FP_IN="$1"
4310: 20 23 20 70 61 74 68 20 74 6f 20 74 68 65 20 66   # path to the f
4320: 69 6c 65 20 6f 72 20 66 6f 6c 64 65 72 20 74 6f  ile or folder to
4330: 20 62 65 20 73 68 72 65 64 64 65 64 0a 20 20 20   be shredded.   
4340: 20 23 20 54 68 65 20 6e 65 78 74 20 69 6e 70 75   # The next inpu
4350: 74 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61  t parameter is a
4360: 20 73 68 6f 64 64 79 20 63 6f 6d 70 72 6f 6d 69   shoddy compromi
4370: 73 65 2c 0a 20 20 20 20 23 20 66 6f 72 20 74 68  se,.    # for th
4380: 65 20 63 61 73 65 2c 20 77 68 65 72 65 20 73 68  e case, where sh
4390: 72 65 64 2f 67 73 68 72 65 64 20 69 73 20 6e 6f  red/gshred is no
43a0: 74 20 69 6e 73 74 61 6c 6c 65 64 3a 0a 20 20 20  t installed:.   
43b0: 20 6c 6f 63 61 6c 20 53 42 5f 4f 4b 5f 54 4f 5f   local SB_OK_TO_
43c0: 55 53 45 5f 52 4d 5f 49 46 5f 53 48 52 45 44 44  USE_RM_IF_SHREDD
43d0: 49 4e 47 5f 41 50 50 53 5f 4e 4f 54 5f 41 56 41  ING_APPS_NOT_AVA
43e0: 49 4c 41 42 4c 45 3d 22 24 32 22 20 20 23 20 64  ILABLE="$2"  # d
43f0: 6f 6d 61 69 6e 3a 20 7b 22 22 2c 22 66 22 2c 22  omain: {"","f","
4400: 74 22 7d 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d  t"}.    #-------
4410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20  -------------.  
4420: 20 20 69 66 20 5b 20 22 24 53 42 5f 4f 4b 5f 54    if [ "$SB_OK_T
4430: 4f 5f 55 53 45 5f 52 4d 5f 49 46 5f 53 48 52 45  O_USE_RM_IF_SHRE
4440: 44 44 49 4e 47 5f 41 50 50 53 5f 4e 4f 54 5f 41  DDING_APPS_NOT_A
4450: 56 41 49 4c 41 42 4c 45 22 20 21 3d 20 22 22 20  VAILABLE" != "" 
4460: 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20  ] ; then.       
4470: 20 69 66 20 5b 20 22 24 53 42 5f 4f 4b 5f 54 4f   if [ "$SB_OK_TO
4480: 5f 55 53 45 5f 52 4d 5f 49 46 5f 53 48 52 45 44  _USE_RM_IF_SHRED
4490: 44 49 4e 47 5f 41 50 50 53 5f 4e 4f 54 5f 41 56  DING_APPS_NOT_AV
44a0: 41 49 4c 41 42 4c 45 22 20 21 3d 20 22 74 22 20  AILABLE" != "t" 
44b0: 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20  ] ; then.       
44c0: 20 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f 4f       if [ "$SB_O
44d0: 4b 5f 54 4f 5f 55 53 45 5f 52 4d 5f 49 46 5f 53  K_TO_USE_RM_IF_S
44e0: 48 52 45 44 44 49 4e 47 5f 41 50 50 53 5f 4e 4f  HREDDING_APPS_NO
44f0: 54 5f 41 56 41 49 4c 41 42 4c 45 22 20 21 3d 20  T_AVAILABLE" != 
4500: 22 66 22 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20  "f" ] ; then.   
4510: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68               ech
4520: 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20  o "".           
4530: 20 20 20 20 20 65 63 68 6f 20 22 54 68 65 20 73       echo "The s
4540: 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
4550: 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  of this function
4560: 2c 20 74 68 65 20 22 0a 20 20 20 20 20 20 20 20  , the ".        
4570: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
4580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4590: 65 63 68 6f 20 22 20 20 20 20 53 42 5f 4f 4b 5f  echo "    SB_OK_
45a0: 54 4f 5f 55 53 45 5f 52 4d 5f 49 46 5f 53 48 52  TO_USE_RM_IF_SHR
45b0: 45 44 44 49 4e 47 5f 41 50 50 53 5f 4e 4f 54 5f  EDDING_APPS_NOT_
45c0: 41 56 41 49 4c 41 42 4c 45 28 3d 3d 24 53 42 5f  AVAILABLE(==$SB_
45d0: 4f 4b 5f 54 4f 5f 55 53 45 5f 52 4d 5f 49 46 5f  OK_TO_USE_RM_IF_
45e0: 53 48 52 45 44 44 49 4e 47 5f 41 50 50 53 5f 4e  SHREDDING_APPS_N
45f0: 4f 54 5f 41 56 41 49 4c 41 42 4c 45 29 22 0a 20  OT_AVAILABLE)". 
4600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
4610: 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20  cho "".         
4620: 20 20 20 20 20 20 20 65 63 68 6f 20 22 69 73 20         echo "is 
4630: 6f 70 74 69 6f 6e 61 6c 2c 20 62 75 74 20 69 74  optional, but it
4640: 73 20 72 61 6e 67 65 20 69 73 20 7b 5c 22 5c 22  s range is {\"\"
4650: 2c 5c 22 66 5c 22 2c 5c 22 74 5c 22 7d 2c 22 0a  ,\"f\",\"t\"},".
4660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4670: 65 63 68 6f 20 22 77 69 74 68 6f 75 74 20 74 68  echo "without th
4680: 65 20 71 75 6f 74 61 74 69 6f 6e 20 6d 61 72 6b  e quotation mark
4690: 73 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  s.".            
46a0: 20 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d      echo "GUID==
46b0: 27 31 64 64 39 31 38 62 34 2d 33 33 66 64 2d 34  '1dd918b4-33fd-4
46c0: 34 31 36 2d 38 32 34 38 2d 33 31 35 32 36 30 63  416-8248-315260c
46d0: 31 35 31 65 37 27 22 0a 20 20 20 20 20 20 20 20  151e7'".        
46e0: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
46f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4700: 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20  #----.          
4710: 20 20 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f        cd $S_FP_O
4720: 52 49 47 0a 20 20 20 20 20 20 20 20 20 20 20 20  RIG.            
4730: 20 20 20 20 65 78 69 74 20 31 20 23 20 65 78 69      exit 1 # exi
4740: 74 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20  t with error.   
4750: 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20           fi.    
4760: 20 20 20 20 66 69 0a 20 20 20 20 65 6c 73 65 20      fi.    else 
4770: 23 20 24 53 42 5f 4f 4b 5f 54 4f 5f 55 53 45 5f  # $SB_OK_TO_USE_
4780: 52 4d 5f 49 46 5f 53 48 52 45 44 44 49 4e 47 5f  RM_IF_SHREDDING_
4790: 41 50 50 53 5f 4e 4f 54 5f 41 56 41 49 4c 41 42  APPS_NOT_AVAILAB
47a0: 4c 45 20 3d 3d 20 22 22 0a 20 20 20 20 20 20 20  LE == "".       
47b0: 20 53 42 5f 4f 4b 5f 54 4f 5f 55 53 45 5f 52 4d   SB_OK_TO_USE_RM
47c0: 5f 49 46 5f 53 48 52 45 44 44 49 4e 47 5f 41 50  _IF_SHREDDING_AP
47d0: 50 53 5f 4e 4f 54 5f 41 56 41 49 4c 41 42 4c 45  PS_NOT_AVAILABLE
47e0: 3d 22 66 22 0a 20 20 20 20 66 69 0a 20 20 20 20  ="f".    fi.    
47f0: 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  #---------------
4800: 2d 2d 2d 2d 2d 0a 20 20 20 20 23 20 44 65 63 6c  -----.    # Decl
4810: 61 72 61 74 69 6f 6e 73 3a 0a 20 20 20 20 6c 6f  arations:.    lo
4820: 63 61 6c 20 53 42 5f 54 48 52 4f 57 3d 22 22 0a  cal SB_THROW="".
4830: 20 20 20 20 6c 6f 63 61 6c 20 53 42 5f 55 53 45      local SB_USE
4840: 5f 52 55 42 59 3d 22 22 0a 20 20 20 20 6c 6f 63  _RUBY="".    loc
4850: 61 6c 20 53 5f 43 4d 44 3d 22 22 0a 20 20 20 20  al S_CMD="".    
4860: 6c 6f 63 61 6c 20 53 5f 47 55 49 44 3d 22 22 0a  local S_GUID="".
4870: 20 20 20 20 6c 6f 63 61 6c 20 53 5f 54 4d 50 5f      local S_TMP_
4880: 30 3d 22 22 0a 20 20 20 20 6c 6f 63 61 6c 20 53  0="".    local S
4890: 5f 54 4d 50 5f 31 3d 22 22 0a 20 20 20 20 6c 6f  _TMP_1="".    lo
48a0: 63 61 6c 20 53 5f 54 4d 50 5f 32 3d 22 22 0a 20  cal S_TMP_2="". 
48b0: 20 20 20 6c 6f 63 61 6c 20 53 49 5f 30 3d 22 2d     local SI_0="-
48c0: 39 39 39 39 22 0a 20 20 20 20 6c 6f 63 61 6c 20  9999".    local 
48d0: 53 49 5f 31 3d 22 2d 39 39 39 39 22 0a 20 20 20  SI_1="-9999".   
48e0: 20 6c 6f 63 61 6c 20 53 5f 53 48 52 45 44 44 45   local S_SHREDDE
48f0: 52 5f 41 50 50 4c 49 43 41 54 49 4f 4e 5f 4e 41  R_APPLICATION_NA
4900: 4d 45 3d 22 22 0a 20 20 20 20 6c 6f 63 61 6c 20  ME="".    local 
4910: 53 5f 46 50 5f 50 57 44 5f 42 45 46 4f 52 45 5f  S_FP_PWD_BEFORE_
4920: 53 48 52 45 44 44 49 4e 47 3d 22 22 0a 20 20 20  SHREDDING="".   
4930: 20 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   #--------------
4940: 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 23 20 4d 6f 64  ------.    # Mod
4950: 65 20 73 65 6c 65 63 74 69 6f 6e 3a 0a 20 20 20  e selection:.   
4960: 20 69 66 20 5b 20 22 24 53 5f 46 55 4e 43 5f 4d   if [ "$S_FUNC_M
4970: 4d 4d 56 5f 53 48 52 45 44 5f 54 31 5f 4d 4f 44  MMV_SHRED_T1_MOD
4980: 45 22 20 3d 3d 20 22 22 20 5d 20 3b 20 74 68 65  E" == "" ] ; the
4990: 6e 0a 20 20 20 20 20 20 20 20 53 42 5f 45 58 49  n.        SB_EXI
49a0: 53 54 53 5f 4f 4e 5f 50 41 54 48 5f 54 31 5f 52  STS_ON_PATH_T1_R
49b0: 45 53 55 4c 54 3d 22 66 22 20 20 23 20 69 66 2d  ESULT="f"  # if-
49c0: 62 6c 6f 63 6b 20 69 6e 69 74 0a 20 20 20 20 20  block init.     
49d0: 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20     #----.       
49e0: 20 69 66 20 5b 20 22 24 53 42 5f 45 58 49 53 54   if [ "$SB_EXIST
49f0: 53 5f 4f 4e 5f 50 41 54 48 5f 54 31 5f 52 45 53  S_ON_PATH_T1_RES
4a00: 55 4c 54 22 20 3d 3d 20 22 66 22 20 5d 20 3b 20  ULT" == "f" ] ; 
4a10: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20  then.           
4a20: 20 53 5f 54 4d 50 5f 30 3d 22 73 68 72 65 64 22   S_TMP_0="shred"
4a30: 20 23 20 4c 69 6e 75 78 20 76 65 72 73 69 6f 6e   # Linux version
4a40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e  .            fun
4a50: 63 5f 73 62 5f 65 78 69 73 74 73 5f 6f 6e 5f 70  c_sb_exists_on_p
4a60: 61 74 68 5f 74 31 20 22 24 53 5f 54 4d 50 5f 30  ath_t1 "$S_TMP_0
4a70: 22 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  " .            i
4a80: 66 20 5b 20 22 24 53 42 5f 45 58 49 53 54 53 5f  f [ "$SB_EXISTS_
4a90: 4f 4e 5f 50 41 54 48 5f 54 31 5f 52 45 53 55 4c  ON_PATH_T1_RESUL
4aa0: 54 22 20 3d 3d 20 22 74 22 20 5d 20 3b 20 74 68  T" == "t" ] ; th
4ab0: 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  en.             
4ac0: 20 20 20 20 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f      S_FUNC_MMMV_
4ad0: 53 48 52 45 44 5f 54 31 5f 4d 4f 44 45 3d 22 24  SHRED_T1_MODE="$
4ae0: 53 5f 54 4d 50 5f 30 22 0a 20 20 20 20 20 20 20  S_TMP_0".       
4af0: 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20       fi.        
4b00: 66 69 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d  fi.        #----
4b10: 0a 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24  .        if [ "$
4b20: 53 42 5f 45 58 49 53 54 53 5f 4f 4e 5f 50 41 54  SB_EXISTS_ON_PAT
4b30: 48 5f 54 31 5f 52 45 53 55 4c 54 22 20 3d 3d 20  H_T1_RESULT" == 
4b40: 22 66 22 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20  "f" ] ; then.   
4b50: 20 20 20 20 20 20 20 20 20 53 5f 54 4d 50 5f 30           S_TMP_0
4b60: 3d 22 67 73 68 72 65 64 22 20 23 20 42 53 44 20  ="gshred" # BSD 
4b70: 76 65 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20  version.        
4b80: 20 20 20 20 66 75 6e 63 5f 73 62 5f 65 78 69 73      func_sb_exis
4b90: 74 73 5f 6f 6e 5f 70 61 74 68 5f 74 31 20 22 24  ts_on_path_t1 "$
4ba0: 53 5f 54 4d 50 5f 30 22 20 0a 20 20 20 20 20 20  S_TMP_0" .      
4bb0: 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f        if [ "$SB_
4bc0: 45 58 49 53 54 53 5f 4f 4e 5f 50 41 54 48 5f 54  EXISTS_ON_PATH_T
4bd0: 31 5f 52 45 53 55 4c 54 22 20 3d 3d 20 22 74 22  1_RESULT" == "t"
4be0: 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20   ] ; then.      
4bf0: 20 20 20 20 20 20 20 20 20 20 20 53 5f 46 55 4e             S_FUN
4c00: 43 5f 4d 4d 4d 56 5f 53 48 52 45 44 5f 54 31 5f  C_MMMV_SHRED_T1_
4c10: 4d 4f 44 45 3d 22 24 53 5f 54 4d 50 5f 30 22 0a  MODE="$S_TMP_0".
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a 20              fi. 
4c30: 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20         fi.      
4c40: 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20    #----.        
4c50: 69 66 20 5b 20 22 24 53 42 5f 45 58 49 53 54 53  if [ "$SB_EXISTS
4c60: 5f 4f 4e 5f 50 41 54 48 5f 54 31 5f 52 45 53 55  _ON_PATH_T1_RESU
4c70: 4c 54 22 20 3d 3d 20 22 66 22 20 5d 20 3b 20 74  LT" == "f" ] ; t
4c80: 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  hen.            
4c90: 69 66 20 5b 20 22 24 53 42 5f 4f 4b 5f 54 4f 5f  if [ "$SB_OK_TO_
4ca0: 55 53 45 5f 52 4d 5f 49 46 5f 53 48 52 45 44 44  USE_RM_IF_SHREDD
4cb0: 49 4e 47 5f 41 50 50 53 5f 4e 4f 54 5f 41 56 41  ING_APPS_NOT_AVA
4cc0: 49 4c 41 42 4c 45 22 20 3d 3d 20 22 74 22 20 5d  ILABLE" == "t" ]
4cd0: 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20   ; then.        
4ce0: 20 20 20 20 20 20 20 20 53 5f 54 4d 50 5f 30 3d          S_TMP_0=
4cf0: 22 72 6d 22 20 23 20 61 20 73 68 6f 64 64 79 20  "rm" # a shoddy 
4d00: 63 6f 6d 70 72 6f 6d 69 73 65 20 76 65 72 73 69  compromise versi
4d10: 6f 6e 20 66 6f 72 20 65 78 65 70 74 69 6f 6e 61  on for exeptiona
4d20: 6c 20 63 61 73 65 73 0a 20 20 20 20 20 20 20 20  l cases.        
4d30: 20 20 20 20 20 20 20 20 66 75 6e 63 5f 73 62 5f          func_sb_
4d40: 65 78 69 73 74 73 5f 6f 6e 5f 70 61 74 68 5f 74  exists_on_path_t
4d50: 31 20 22 24 53 5f 54 4d 50 5f 30 22 20 0a 20 20  1 "$S_TMP_0" .  
4d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
4d70: 20 5b 20 22 24 53 42 5f 45 58 49 53 54 53 5f 4f   [ "$SB_EXISTS_O
4d80: 4e 5f 50 41 54 48 5f 54 31 5f 52 45 53 55 4c 54  N_PATH_T1_RESULT
4d90: 22 20 3d 3d 20 22 74 22 20 5d 20 3b 20 74 68 65  " == "t" ] ; the
4da0: 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n.              
4db0: 20 20 20 20 20 20 66 75 6e 63 5f 6d 6d 6d 76 5f        func_mmmv_
4dc0: 6f 70 65 72 61 74 69 6e 67 5f 73 79 73 74 65 6d  operating_system
4dd0: 5f 74 79 70 65 5f 74 31 0a 20 20 20 20 20 20 20  _type_t1.       
4de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
4df0: 5b 20 22 24 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f  [ "$S_FUNC_MMMV_
4e00: 4f 50 45 52 41 54 49 4e 47 5f 53 59 53 54 45 4d  OPERATING_SYSTEM
4e10: 5f 54 59 50 45 5f 54 31 5f 52 45 53 55 4c 54 22  _TYPE_T1_RESULT"
4e20: 20 21 3d 20 22 42 53 44 22 20 5d 3b 20 74 68 65   != "BSD" ]; the
4e30: 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n.              
4e40: 20 20 20 20 20 20 20 20 20 20 20 53 5f 46 55 4e             S_FUN
4e50: 43 5f 4d 4d 4d 56 5f 53 48 52 45 44 5f 54 31 5f  C_MMMV_SHRED_T1_
4e60: 4d 4f 44 45 3d 22 72 6d 5f 42 53 44 22 0a 20 20  MODE="rm_BSD".  
4e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e80: 20 20 65 6c 73 65 20 23 20 4c 69 6e 75 78 20 61    else # Linux a
4e90: 6e 64 20 61 6c 6c 20 74 68 65 20 72 65 73 74 0a  nd all the rest.
4ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4eb0: 20 20 20 20 20 20 20 20 20 53 5f 46 55 4e 43 5f           S_FUNC_
4ec0: 4d 4d 4d 56 5f 53 48 52 45 44 5f 54 31 5f 4d 4f  MMMV_SHRED_T1_MO
4ed0: 44 45 3d 22 72 6d 5f 70 6c 61 69 6e 22 0a 20 20  DE="rm_plain".  
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ef0: 20 20 66 69 0a 20 20 20 20 20 20 20 20 20 20 20    fi.           
4f00: 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20       else.      
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
4f20: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  ho "".          
4f30: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
4f40: 53 6f 6d 65 74 68 69 6e 67 20 69 73 20 77 72 6f  Something is wro
4f50: 6e 67 20 61 74 20 74 68 65 20 6f 70 65 72 61 74  ng at the operat
4f60: 69 6e 67 20 73 79 73 74 65 6d 20 22 0a 20 20 20  ing system ".   
4f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f80: 20 65 63 68 6f 20 22 65 6e 76 69 72 6f 6e 6d 65   echo "environme
4f90: 6e 74 20 73 65 74 75 70 2e 20 41 6c 6c 20 55 4e  nt setup. All UN
4fa0: 49 58 2d 6c 69 6b 65 20 6f 70 65 72 61 74 69 6e  IX-like operatin
4fb0: 67 20 73 79 73 74 65 6d 73 20 22 0a 20 20 20 20  g systems ".    
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4fd0: 65 63 68 6f 20 22 61 6e 64 20 74 68 65 69 72 20  echo "and their 
4fe0: 65 6d 75 6c 61 74 6f 72 73 20 22 0a 20 20 20 20  emulators ".    
4ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5000: 65 63 68 6f 20 22 61 72 65 20 65 78 70 65 63 74  echo "are expect
5010: 65 64 20 74 6f 20 68 61 76 65 20 74 68 65 20 5c  ed to have the \
5020: 22 72 6d 5c 22 20 63 6f 6d 6d 61 6e 64 2e 22 0a  "rm\" command.".
5030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5040: 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
5050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5060: 65 63 68 6f 20 22 20 20 20 20 5c 24 28 77 68 69  echo "    \$(whi
5070: 63 68 20 72 6d 29 3d 3d 5c 22 60 77 68 69 63 68  ch rm)==\"`which
5080: 20 72 6d 60 5c 22 22 0a 20 20 20 20 20 20 20 20   rm`\"".        
5090: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
50a0: 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20   "".            
50b0: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 20 20          echo "  
50c0: 20 20 50 41 54 48 3d 24 50 41 54 48 22 20 23 20    PATH=$PATH" # 
50d0: 77 69 6c 6c 20 62 65 20 61 20 68 75 67 65 20 73  will be a huge s
50e0: 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20  tring.          
50f0: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
5100: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
5110: 20 20 20 20 20 20 65 63 68 6f 20 22 47 55 49 44        echo "GUID
5120: 3d 3d 27 35 31 37 37 31 32 35 33 2d 61 37 34 63  =='51771253-a74c
5130: 2d 34 63 38 30 2d 39 62 32 37 2d 33 31 35 32 36  -4c80-9b27-31526
5140: 30 63 31 35 31 65 37 27 22 0a 20 20 20 20 20 20  0c151e7'".      
5150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
5160: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  ho "".          
5170: 20 20 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a            #----.
5180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5190: 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49      cd $S_FP_ORI
51a0: 47 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  G.              
51b0: 20 20 20 20 20 20 65 78 69 74 20 31 20 23 20 65        exit 1 # e
51c0: 78 69 74 20 77 69 74 68 20 65 72 72 6f 72 0a 20  xit with error. 
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
51e0: 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  i.            fi
51f0: 0a 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20  .        fi.    
5200: 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20      #--------.  
5210: 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 5f 46        if [ "$S_F
5220: 55 4e 43 5f 4d 4d 4d 56 5f 53 48 52 45 44 5f 54  UNC_MMMV_SHRED_T
5230: 31 5f 4d 4f 44 45 22 20 3d 3d 20 22 22 20 5d 20  1_MODE" == "" ] 
5240: 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20  ; then.         
5250: 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20     echo "".     
5260: 20 20 20 20 20 20 20 65 63 68 6f 20 22 41 6c 6c         echo "All
5270: 20 6f 66 20 74 68 65 20 66 69 6c 65 20 73 68 72   of the file shr
5280: 65 64 64 69 6e 67 20 69 6d 70 6c 65 6d 65 6e 74  edding implement
5290: 61 74 69 6f 6e 73 20 74 68 61 74 20 74 68 69 73  ations that this
52a0: 20 73 63 72 69 70 74 20 22 20 0a 20 20 20 20 20   script " .     
52b0: 20 20 20 20 20 20 20 65 63 68 6f 20 22 69 73 20         echo "is 
52c0: 63 61 70 61 62 6c 65 20 6f 66 20 75 73 69 6e 67  capable of using
52d0: 20 28 73 68 72 65 64 2c 20 67 73 68 72 65 64 29   (shred, gshred)
52e0: 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65   ".            e
52f0: 63 68 6f 20 22 61 72 65 20 6d 69 73 73 69 6e 67  cho "are missing
5300: 20 66 72 6f 6d 20 74 68 65 20 50 41 54 48 2e 22   from the PATH."
5310: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68  .            ech
5320: 6f 20 22 47 55 49 44 3d 3d 27 32 36 37 33 38 34  o "GUID=='267384
5330: 35 32 2d 39 61 66 63 2d 34 64 35 64 2d 61 63 35  52-9afc-4d5d-ac5
5340: 37 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22  7-315260c151e7'"
5350: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68  .            ech
5360: 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20  o "".           
5370: 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20   #----.         
5380: 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49 47     cd $S_FP_ORIG
5390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 69  .            exi
53a0: 74 20 31 20 23 20 65 78 69 74 20 77 69 74 68 20  t 1 # exit with 
53b0: 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 66 69  error.        fi
53c0: 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 2d 2d  .        #------
53d0: 2d 2d 0a 20 20 20 20 20 20 20 20 69 66 20 5b 20  --.        if [ 
53e0: 22 24 3f 22 20 21 3d 20 22 30 22 20 5d 3b 20 74  "$?" != "0" ]; t
53f0: 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  hen.            
5400: 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
5410: 20 20 20 20 65 63 68 6f 20 22 54 68 69 73 20 73      echo "This s
5420: 63 72 69 70 74 20 69 73 20 66 6c 61 77 65 64 2e  cript is flawed.
5430: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63  ".            ec
5440: 68 6f 20 22 47 55 49 44 3d 3d 27 33 39 35 31 30  ho "GUID=='39510
5450: 32 37 31 2d 64 38 37 63 2d 34 66 30 66 2d 61 32  271-d87c-4f0f-a2
5460: 31 37 2d 33 31 35 32 36 30 63 31 35 31 65 37 27  17-315260c151e7'
5470: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63  ".            ec
5480: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  ho "".          
5490: 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20    #----.        
54a0: 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49      cd $S_FP_ORI
54b0: 47 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78  G.            ex
54c0: 69 74 20 31 20 23 20 65 78 69 74 20 77 69 74 68  it 1 # exit with
54d0: 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 66   error.        f
54e0: 69 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 2d  i.        #-----
54f0: 2d 2d 2d 0a 20 20 20 20 66 69 0a 20 20 20 20 23  ---.    fi.    #
5500: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5510: 2d 2d 2d 2d 0a 20 20 20 20 53 5f 54 4d 50 5f 30  ----.    S_TMP_0
5520: 3d 24 28 65 63 68 6f 20 24 53 5f 46 50 5f 49 4e  =$(echo $S_FP_IN
5530: 20 7c 20 67 61 77 6b 20 27 7b 67 73 75 62 28 2f   | gawk '{gsub(/
5540: 5e 5b 5c 2f 5d 2f 2c 22 22 29 3b 20 70 72 69 6e  ^[\/]/,""); prin
5550: 74 66 20 22 25 73 22 2c 24 31 20 7d 27 29 0a 20  tf "%s",$1 }'). 
5560: 20 20 20 69 66 20 5b 20 22 24 53 5f 54 4d 50 5f     if [ "$S_TMP_
5570: 30 22 20 3d 3d 20 22 24 53 5f 46 50 5f 49 4e 22  0" == "$S_FP_IN"
5580: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
5590: 20 65 63 68 6f 20 22 22 20 0a 20 20 20 20 20 20   echo "" .      
55a0: 20 20 65 63 68 6f 20 22 54 68 65 20 70 61 74 68    echo "The path
55b0: 20 69 73 20 65 78 70 65 63 74 65 64 20 74 6f 20   is expected to 
55c0: 62 65 20 61 6e 20 61 62 73 6f 6c 75 74 65 20 70  be an absolute p
55d0: 61 74 68 2c 20 22 0a 20 20 20 20 20 20 20 20 65  ath, ".        e
55e0: 63 68 6f 20 22 62 75 74 20 63 75 72 72 65 6e 74  cho "but current
55f0: 6c 79 20 69 74 20 69 73 20 6e 6f 74 2e 22 0a 20  ly it is not.". 
5600: 20 20 20 20 20 20 20 65 63 68 6f 20 22 20 20 20         echo "   
5610: 20 53 5f 46 50 5f 49 4e 3d 3d 24 53 5f 46 50 5f   S_FP_IN==$S_FP_
5620: 49 4e 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f  IN".        echo
5630: 20 22 47 55 49 44 3d 3d 27 35 30 38 30 65 65 31   "GUID=='5080ee1
5640: 34 2d 38 36 35 30 2d 34 38 66 39 2d 39 63 31 37  4-8650-48f9-9c17
5650: 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22 0a  -315260c151e7'".
5660: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
5670: 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20          #----.  
5680: 20 20 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f        cd $S_FP_O
5690: 52 49 47 0a 20 20 20 20 20 20 20 20 65 78 69 74  RIG.        exit
56a0: 20 31 20 23 20 65 78 69 74 20 77 69 74 68 20 61   1 # exit with a
56b0: 6e 20 65 72 72 6f 72 0a 20 20 20 20 66 69 0a 20  n error.    fi. 
56c0: 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20     #--------.   
56d0: 20 69 66 20 5b 20 2d 68 20 24 53 5f 46 50 5f 49   if [ -h $S_FP_I
56e0: 4e 20 5d 3b 20 74 68 65 6e 20 0a 20 20 20 20 20  N ]; then .     
56f0: 20 20 20 23 20 54 68 65 20 63 6f 6e 74 72 6f 6c     # The control
5700: 20 66 6c 6f 77 20 69 73 20 69 6e 20 68 65 72 65   flow is in here
5710: 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 0a 20   regardless of. 
5720: 20 20 20 20 20 20 20 23 20 77 68 65 74 68 65 72         # whether
5730: 20 74 68 65 20 73 79 6d 62 6f 6c 69 63 20 6c 69   the symbolic li
5740: 6e 6b 20 69 73 20 62 72 6f 6b 65 6e 20 6f 72 20  nk is broken or 
5750: 6e 6f 74 2e 0a 20 20 20 20 20 20 20 20 23 20 49  not..        # I
5760: 66 20 74 68 65 20 70 61 74 68 20 69 73 20 74 6f  f the path is to
5770: 20 61 20 6e 6f 6e 2d 65 78 69 73 74 69 6e 67 20   a non-existing 
5780: 66 69 6c 65 2f 6c 69 6e 6b 2f 66 6f 6c 64 65 72  file/link/folder
5790: 2c 0a 20 20 20 20 20 20 20 20 23 20 74 68 65 6e  ,.        # then
57a0: 20 74 68 65 20 63 6f 6e 74 72 6f 6c 20 66 6c 6f   the control flo
57b0: 77 20 77 69 6c 6c 20 6e 6f 74 20 65 6e 74 65 72  w will not enter
57c0: 20 74 68 69 73 20 62 72 61 6e 63 68 2e 0a 20 20   this branch..  
57d0: 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20        echo "".  
57e0: 20 20 20 20 20 20 65 63 68 6f 20 22 54 68 65 20        echo "The 
57f0: 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
5800: 20 20 20 20 53 5f 46 50 5f 49 4e 3d 24 53 5f 46      S_FP_IN=$S_F
5810: 50 5f 49 4e 22 0a 20 20 20 20 20 20 20 20 65 63  P_IN".        ec
5820: 68 6f 20 22 69 73 20 61 20 73 79 6d 62 6f 6c 69  ho "is a symboli
5830: 63 20 6c 69 6e 6b 2c 20 62 75 74 20 69 74 20 69  c link, but it i
5840: 73 20 65 78 70 65 63 74 65 64 20 74 6f 20 22 0a  s expected to ".
5850: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 62 65          echo "be
5860: 20 61 20 66 69 6c 65 20 6f 72 20 61 20 66 6f 6c   a file or a fol
5870: 64 65 72 2e 22 0a 20 20 20 20 20 20 20 20 65 63  der.".        ec
5880: 68 6f 20 22 47 55 49 44 3d 3d 27 61 33 65 65 65  ho "GUID=='a3eee
5890: 31 30 61 2d 33 37 65 36 2d 34 35 64 66 2d 62 35  10a-37e6-45df-b5
58a0: 33 37 2d 33 31 35 32 36 30 63 31 35 31 65 37 27  37-315260c151e7'
58b0: 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
58c0: 22 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a  ".        #----.
58d0: 20 20 20 20 20 20 20 20 63 64 20 24 53 5f 46 50          cd $S_FP
58e0: 5f 4f 52 49 47 0a 20 20 20 20 20 20 20 20 65 78  _ORIG.        ex
58f0: 69 74 20 31 20 23 20 65 78 69 74 20 77 69 74 68  it 1 # exit with
5900: 20 65 72 72 6f 72 0a 20 20 20 20 66 69 0a 20 20   error.    fi.  
5910: 20 20 69 66 20 5b 20 21 20 2d 65 20 24 53 5f 46    if [ ! -e $S_F
5920: 50 5f 49 4e 20 5d 3b 20 74 68 65 6e 0a 20 20 20  P_IN ]; then.   
5930: 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
5940: 20 20 20 20 20 65 63 68 6f 20 22 54 68 65 20 22       echo "The "
5950: 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 20  .        echo " 
5960: 20 20 20 53 5f 46 50 5f 49 4e 3d 24 53 5f 46 50     S_FP_IN=$S_FP
5970: 5f 49 4e 22 0a 20 20 20 20 20 20 20 20 65 63 68  _IN".        ech
5980: 6f 20 22 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  o "does not exis
5990: 74 2e 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f  t.".        echo
59a0: 20 22 47 55 49 44 3d 3d 27 33 62 61 37 39 31 36   "GUID=='3ba7916
59b0: 34 2d 65 39 34 32 2d 34 38 35 30 2d 62 34 32 37  4-e942-4850-b427
59c0: 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22 0a  -315260c151e7'".
59d0: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
59e0: 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20          #----.  
59f0: 20 20 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f        cd $S_FP_O
5a00: 52 49 47 0a 20 20 20 20 20 20 20 20 65 78 69 74  RIG.        exit
5a10: 20 31 20 23 20 65 78 69 74 20 77 69 74 68 20 65   1 # exit with e
5a20: 72 72 6f 72 0a 20 20 20 20 66 69 0a 20 20 20 20  rror.    fi.    
5a30: 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 69 66  #--------.    if
5a40: 20 5b 20 2d 64 20 24 53 5f 46 50 5f 49 4e 20 5d   [ -d $S_FP_IN ]
5a50: 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 23  ; then.        #
5a60: 2d 2d 2d 2d 2d 2d 2d 2d 73 74 61 72 74 2d 2d 6f  --------start--o
5a70: 66 2d 2d 73 75 62 2d 70 61 74 68 2d 2d 63 68 65  f--sub-path--che
5a80: 63 6b 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 23  ck----.        #
5a90: 20 49 66 20 74 68 65 20 24 53 5f 46 50 5f 49 4e   If the $S_FP_IN
5aa0: 20 69 73 20 61 20 66 6f 6c 64 65 72 2c 20 74 68   is a folder, th
5ab0: 65 6e 20 74 68 65 20 60 70 77 64 60 20 0a 20 20  en the `pwd` .  
5ac0: 20 20 20 20 20 20 23 20 73 68 6f 75 6c 64 20 6e        # should n
5ad0: 6f 74 20 62 65 20 61 20 73 75 62 2d 70 61 74 68  ot be a sub-path
5ae0: 20 6f 72 20 61 20 70 61 74 68 20 6f 66 20 74 68   or a path of th
5af0: 65 20 0a 20 20 20 20 20 20 20 20 23 20 66 6f 6c  e .        # fol
5b00: 64 65 72 20 74 68 61 74 20 69 73 20 62 65 69 6e  der that is bein
5b10: 67 20 64 65 6c 65 74 65 64 2e 0a 20 20 20 20 20  g deleted..     
5b20: 20 20 20 53 5f 54 4d 50 5f 30 3d 22 60 63 64 20     S_TMP_0="`cd 
5b30: 24 53 5f 46 50 5f 49 4e 3b 70 77 64 60 2f 22 20  $S_FP_IN;pwd`/" 
5b40: 20 0a 20 20 20 20 20 20 20 20 53 5f 54 4d 50 5f   .        S_TMP_
5b50: 31 3d 22 60 70 77 64 60 2f 22 0a 20 20 20 20 20  1="`pwd`/".     
5b60: 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20     #----.       
5b70: 20 69 66 20 5b 20 22 24 53 5f 54 4d 50 5f 30 22   if [ "$S_TMP_0"
5b80: 20 3d 3d 20 22 24 53 5f 54 4d 50 5f 31 22 20 5d   == "$S_TMP_1" ]
5b90: 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20  ; then.         
5ba0: 20 20 20 69 66 20 5b 20 21 20 2d 64 20 24 53 5f     if [ ! -d $S_
5bb0: 46 50 5f 49 4e 20 5d 3b 20 74 68 65 6e 0a 20 20  FP_IN ]; then.  
5bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
5bd0: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  ho "".          
5be0: 20 20 20 20 20 20 65 63 68 6f 20 22 54 68 69 73        echo "This
5bf0: 20 42 61 73 68 20 73 63 72 69 70 74 20 69 73 20   Bash script is 
5c00: 66 6c 61 77 65 64 2e 20 22 0a 20 20 20 20 20 20  flawed. ".      
5c10: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
5c20: 20 20 20 20 53 5f 46 50 5f 49 4e 3d 24 53 5f 46      S_FP_IN=$S_F
5c30: 50 5f 49 4e 22 0a 20 20 20 20 20 20 20 20 20 20  P_IN".          
5c40: 20 20 20 20 20 20 65 63 68 6f 20 22 47 55 49 44        echo "GUID
5c50: 3d 3d 27 32 31 33 37 35 39 33 37 2d 39 63 61 37  =='21375937-9ca7
5c60: 2d 34 33 33 39 2d 38 37 32 36 2d 33 31 35 32 36  -4339-8726-31526
5c70: 30 63 31 35 31 65 37 27 22 0a 20 20 20 20 20 20  0c151e7'".      
5c80: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
5c90: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
5ca0: 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20    #----.        
5cb0: 20 20 20 20 20 20 20 20 63 64 20 24 53 5f 46 50          cd $S_FP
5cc0: 5f 4f 52 49 47 0a 20 20 20 20 20 20 20 20 20 20  _ORIG.          
5cd0: 20 20 20 20 20 20 65 78 69 74 20 31 0a 20 20 20        exit 1.   
5ce0: 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20           fi.    
5cf0: 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20          #----.  
5d00: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
5d10: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63  ".            ec
5d20: 68 6f 20 22 54 68 65 20 77 6f 72 6b 69 6e 67 20  ho "The working 
5d30: 64 69 72 65 63 74 6f 72 79 2c 20 22 0a 20 20 20  directory, ".   
5d40: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22           echo ""
5d50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68  .            ech
5d60: 6f 20 22 20 20 20 20 50 57 44 3d 24 50 57 44 22  o "    PWD=$PWD"
5d70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68  .            ech
5d80: 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20  o "".           
5d90: 20 65 63 68 6f 20 22 65 71 75 61 6c 73 20 77 69   echo "equals wi
5da0: 74 68 20 74 68 65 20 66 6f 6c 64 65 72 20 74 68  th the folder th
5db0: 61 74 20 69 73 20 62 65 69 6e 67 20 64 65 6c 65  at is being dele
5dc0: 74 65 64 2e 22 0a 20 20 20 20 20 20 20 20 20 20  ted.".          
5dd0: 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20    echo "".      
5de0: 20 20 20 20 20 20 65 63 68 6f 20 22 20 20 20 20        echo "    
5df0: 53 5f 54 4d 50 5f 30 3d 24 53 5f 54 4d 50 5f 30  S_TMP_0=$S_TMP_0
5e00: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63  ".            ec
5e10: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  ho "".          
5e20: 20 20 65 63 68 6f 20 22 20 20 20 20 53 5f 46 50    echo "    S_FP
5e30: 5f 49 4e 3d 24 53 5f 46 50 5f 49 4e 22 0a 20 20  _IN=$S_FP_IN".  
5e40: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
5e50: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63  ".            ec
5e60: 68 6f 20 22 47 55 49 44 3d 3d 27 33 64 63 32 34  ho "GUID=='3dc24
5e70: 37 38 33 2d 63 65 32 33 2d 34 65 66 65 2d 61 63  783-ce23-4efe-ac
5e80: 35 36 2d 33 31 35 32 36 30 63 31 35 31 65 37 27  56-315260c151e7'
5e90: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63  ".            ec
5ea0: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  ho "".          
5eb0: 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20    #----.        
5ec0: 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49      cd $S_FP_ORI
5ed0: 47 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78  G.            ex
5ee0: 69 74 20 31 20 23 20 65 78 69 74 20 77 69 74 68  it 1 # exit with
5ef0: 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 66   error.        f
5f00: 69 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a  i.        #----.
5f10: 20 20 20 20 20 20 20 20 23 20 49 66 20 74 68 65          # If the
5f20: 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 24 53 5f 46   normalized $S_F
5f30: 50 5f 49 4e 20 69 73 20 61 20 66 6f 6c 64 65 72  P_IN is a folder
5f40: 20 61 6e 64 20 0a 20 20 20 20 20 20 20 20 23 20   and .        # 
5f50: 74 68 65 20 22 60 70 77 64 60 2f 22 20 69 73 20  the "`pwd`/" is 
5f60: 73 68 6f 72 74 65 72 20 74 68 61 6e 20 74 68 65  shorter than the
5f70: 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 24 53 5f 46   normalized $S_F
5f80: 50 5f 49 4e 2c 20 74 68 65 6e 2c 0a 20 20 20 20  P_IN, then,.    
5f90: 20 20 20 20 23 20 77 69 74 68 20 74 68 65 20 65      # with the e
5fa0: 78 63 65 70 74 69 6f 6e 73 20 6f 66 20 73 6f 6d  xceptions of som
5fb0: 65 20 73 79 6d 62 6f 6c 69 63 20 6c 69 6e 6b 73  e symbolic links
5fc0: 2c 20 0a 20 20 20 20 20 20 20 20 23 20 74 68 65  , .        # the
5fd0: 20 22 60 70 77 64 60 2f 22 20 63 61 6e 20 6e 6f   "`pwd`/" can no
5fe0: 74 20 62 65 20 65 71 75 61 6c 20 74 6f 20 74 68  t be equal to th
5ff0: 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 24 53 5f  e normalized $S_
6000: 46 50 5f 49 4e 2c 20 0a 20 20 20 20 20 20 20 20  FP_IN, .        
6010: 23 20 6e 6f 72 20 63 61 6e 20 74 68 65 20 22 60  # nor can the "`
6020: 70 77 64 60 2f 22 20 62 65 20 61 20 66 6f 6c 64  pwd`/" be a fold
6030: 65 72 20 74 68 61 74 20 69 73 20 61 20 73 75 62  er that is a sub
6040: 2d 66 6f 6c 64 65 72 20 0a 20 20 20 20 20 20 20  -folder .       
6050: 20 23 20 6f 66 20 74 68 65 20 24 53 5f 46 50 5f   # of the $S_FP_
6060: 49 4e 2e 0a 20 20 20 20 20 20 20 20 23 20 0a 20  IN..        # . 
6070: 20 20 20 20 20 20 20 23 20 54 68 65 20 70 61 68         # The pah
6080: 74 20 6c 65 6e 67 68 74 20 63 6f 64 65 20 69 73  t lenght code is
6090: 3a 0a 20 20 20 20 20 20 20 20 23 20 0a 20 20 20  :.        # .   
60a0: 20 20 20 20 20 23 20 20 20 20 20 53 49 5f 30 3d       #     SI_0=
60b0: 22 60 20 65 63 68 6f 20 5c 22 24 53 5f 54 4d 50  "` echo \"$S_TMP
60c0: 5f 30 5c 22 20 7c 20 67 61 77 6b 20 27 7b 69 3d  _0\" | gawk '{i=
60d0: 6c 65 6e 67 74 68 3b 70 72 69 6e 74 66 20 22 25  length;printf "%
60e0: 73 22 2c 20 69 20 7d 27 20 60 22 20 23 20 53 5f  s", i }' `" # S_
60f0: 46 50 5f 49 4e 0a 20 20 20 20 20 20 20 20 23 20  FP_IN.        # 
6100: 20 20 20 20 53 49 5f 31 3d 22 60 20 65 63 68 6f      SI_1="` echo
6110: 20 5c 22 24 53 5f 54 4d 50 5f 31 5c 22 20 7c 20   \"$S_TMP_1\" | 
6120: 67 61 77 6b 20 27 7b 69 3d 6c 65 6e 67 74 68 3b  gawk '{i=length;
6130: 70 72 69 6e 74 66 20 22 25 73 22 2c 20 69 20 7d  printf "%s", i }
6140: 27 20 60 22 20 23 20 70 77 64 0a 20 20 20 20 20  ' `" # pwd.     
6150: 20 20 20 23 20 20 20 20 20 69 66 20 5b 20 22 24     #     if [ "$
6160: 53 49 5f 30 22 20 2d 6c 74 20 22 24 53 49 5f 31  SI_0" -lt "$SI_1
6170: 22 20 5d 3b 20 74 68 65 6e 20 20 23 20 24 53 49  " ]; then  # $SI
6180: 5f 30 20 3c 20 24 53 49 5f 31 0a 20 20 20 20 20  _0 < $SI_1.     
6190: 20 20 20 23 20 20 20 20 20 20 20 20 23 65 63 68     #        #ech
61a0: 6f 20 22 24 53 49 5f 30 20 3c 20 24 53 49 5f 31  o "$SI_0 < $SI_1
61b0: 22 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ".        #     
61c0: 20 20 20 23 0a 20 20 20 20 20 20 20 20 23 20 20     #.        #  
61d0: 20 20 20 20 20 20 23 20 49 6e 20 68 65 72 65 20        # In here 
61e0: 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68  the length of th
61f0: 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 66 6f 72  e normalized for
6200: 6d 20 6f 66 20 74 68 65 20 24 53 5f 46 50 5f 49  m of the $S_FP_I
6210: 4e 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  N.        #     
6220: 20 20 20 23 20 69 73 20 73 68 6f 72 74 65 72 20     # is shorter 
6230: 74 68 61 6e 20 74 68 65 20 22 60 70 77 64 60 2f  than the "`pwd`/
6240: 22 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 20  " and therefore 
6250: 74 68 65 20 77 6f 72 6b 69 6e 67 20 64 69 72 65  the working dire
6260: 63 74 6f 72 79 0a 20 20 20 20 20 20 20 20 23 20  ctory.        # 
6270: 20 20 20 20 20 20 20 23 20 68 61 73 20 61 20 67         # has a g
6280: 72 65 61 74 65 72 20 70 72 6f 62 61 62 69 6c 69  reater probabili
6290: 74 79 20 74 6f 20 62 65 20 61 74 20 61 20 73 75  ty to be at a su
62a0: 62 2d 70 61 74 68 20 6f 66 20 74 68 65 20 24 53  b-path of the $S
62b0: 5f 46 50 5f 49 4e 2e 0a 20 20 20 20 20 20 20 20  _FP_IN..        
62c0: 23 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20  #        .      
62d0: 20 20 23 20 20 20 20 20 20 20 20 3c 0a 20 20 20    #        <.   
62e0: 20 20 20 20 20 23 20 20 20 20 20 20 20 20 20 41       #         A
62f0: 20 6c 6f 74 20 6f 66 20 52 75 62 79 20 63 6f 64   lot of Ruby cod
6300: 65 2c 20 62 65 63 61 75 73 65 20 0a 20 20 20 20  e, because .    
6310: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 74 68      #         th
6320: 65 20 67 61 77 6b 20 63 6f 64 65 20 77 69 6c 6c  e gawk code will
6330: 20 68 61 76 65 20 74 72 6f 75 62 6c 65 20 77 69   have trouble wi
6340: 74 68 20 66 6f 6c 64 65 72 73 20 74 68 61 74 20  th folders that 
6350: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
6360: 20 20 20 63 6f 6e 74 61 69 6e 20 73 70 61 63 65     contain space
6370: 73 20 61 6e 64 20 6f 74 68 65 72 20 73 70 65 63  s and other spec
6380: 69 61 6c 20 63 68 61 72 61 63 74 65 72 73 0a 20  ial characters. 
6390: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 20         #        
63a0: 20 3e 0a 20 20 20 20 20 20 20 20 23 20 20 20 20   >.        #    
63b0: 66 69 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20  fi.        #.   
63c0: 20 20 20 20 20 23 20 62 75 74 20 75 6e 66 6f 72       # but unfor
63d0: 74 75 6e 61 74 65 6c 79 20 74 68 65 20 52 75 62  tunately the Rub
63e0: 79 20 63 6f 64 65 20 74 68 61 74 20 75 73 65 73  y code that uses
63f0: 20 0a 20 20 20 20 20 20 20 20 23 20 74 65 6d 70   .        # temp
6400: 6f 72 61 72 79 20 66 69 6c 65 73 20 61 6e 64 20  orary files and 
6410: 74 68 65 20 53 74 72 69 6e 67 2e 69 6e 64 65 78  the String.index
6420: 20 77 6f 75 6c 64 20 62 65 20 0a 20 20 20 20 20   would be .     
6430: 20 20 20 23 20 75 6e 73 74 61 62 6c 65 20 64 75     # unstable du
6440: 65 20 74 6f 20 74 68 65 20 0a 20 20 20 20 20 20  e to the .      
6450: 20 20 23 0a 20 20 20 20 20 20 20 20 23 20 20 20    #.        #   
6460: 20 20 68 74 74 70 73 3a 2f 2f 62 75 67 73 2e 72    https://bugs.r
6470: 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 2f 69 73 73  uby-lang.org/iss
6480: 75 65 73 2f 31 32 37 31 30 0a 20 20 20 20 20 20  ues/12710.      
6490: 20 20 23 20 20 20 20 20 68 74 74 70 73 3a 2f 2f    #     https://
64a0: 61 72 63 68 69 76 65 2e 69 73 2f 41 4a 70 67 4c  archive.is/AJpgL
64b0: 0a 20 20 20 20 20 20 20 20 23 20 0a 20 20 20 20  .        # .    
64c0: 20 20 20 20 23 20 41 64 64 20 74 6f 20 74 68 61      # Add to tha
64d0: 74 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20  t the fact that 
64e0: 74 68 69 73 20 42 61 73 68 20 66 75 6e 63 74 69  this Bash functi
64f0: 6f 6e 0a 20 20 20 20 20 20 20 20 23 20 77 6f 75  on.        # wou
6500: 6c 64 20 62 65 20 6d 75 63 68 20 6d 6f 72 65 20  ld be much more 
6510: 61 70 70 65 61 6c 69 6e 67 2c 20 69 66 20 69 74  appealing, if it
6520: 20 64 69 64 20 6e 6f 74 20 6c 61 75 6e 63 68 0a   did not launch.
6530: 20 20 20 20 20 20 20 20 23 20 61 6e 79 20 34 30          # any 40
6540: 42 69 42 20 73 69 7a 65 64 20 69 6e 74 65 72 70  BiB sized interp
6550: 72 65 74 65 72 73 20 6c 69 6b 65 20 74 68 65 20  reters like the 
6560: 52 75 62 79 20 69 6e 74 65 72 70 72 65 74 65 72  Ruby interpreter
6570: 20 28 69 6e 20 32 30 31 36 29 0a 20 20 20 20 20   (in 2016).     
6580: 20 20 20 23 20 61 6e 64 20 74 68 65 20 74 65 6d     # and the tem
6590: 70 74 61 74 69 6f 6e 20 74 6f 20 6a 75 73 74 20  ptation to just 
65a0: 73 6b 69 70 20 74 65 73 74 69 6e 67 2c 20 77 68  skip testing, wh
65b0: 65 74 68 65 72 20 74 68 65 20 0a 20 20 20 20 20  ether the .     
65c0: 20 20 20 23 20 77 6f 72 6b 69 6e 67 20 64 69 72     # working dir
65d0: 65 63 74 6f 72 79 20 28 60 70 77 64 60 29 20 72  ectory (`pwd`) r
65e0: 65 73 69 64 65 73 20 61 74 20 61 20 64 69 72 65  esides at a dire
65f0: 63 74 6f 72 79 20 74 68 61 74 0a 20 20 20 20 20  ctory that.     
6600: 20 20 20 23 20 69 73 20 61 20 73 75 62 2d 70 61     # is a sub-pa
6610: 74 68 20 6f 66 20 74 68 65 20 24 53 5f 46 50 5f  th of the $S_FP_
6620: 49 4e 2c 20 67 72 6f 77 73 20 65 76 65 6e 20 68  IN, grows even h
6630: 69 67 68 65 72 2e 0a 20 20 20 20 20 20 20 20 23  igher..        #
6640: 20 53 6f 2c 20 66 6f 72 20 74 68 65 20 74 69 6d   So, for the tim
6650: 65 20 62 65 69 6e 67 20 74 68 61 74 20 63 68 65  e being that che
6660: 63 6b 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72  ck is omitted fr
6670: 6f 6d 20 68 65 72 65 2e 20 0a 20 20 20 20 20 20  om here. .      
6680: 20 20 23 0a 20 20 20 20 20 20 20 20 23 20 54 4f    #.        # TO
6690: 44 4f 3a 20 49 66 20 74 68 65 20 79 65 61 72 20  DO: If the year 
66a0: 69 73 20 61 74 20 6c 65 61 73 74 20 32 30 32 30  is at least 2020
66b0: 2c 20 74 68 65 6e 20 74 72 79 20 74 6f 20 66 69  , then try to fi
66c0: 6e 64 20 6f 75 74 2c 20 0a 20 20 20 20 20 20 20  nd out, .       
66d0: 20 23 20 20 20 20 20 20 20 77 68 65 74 68 65 72   #       whether
66e0: 20 74 68 65 72 65 27 73 20 73 6f 6d 65 20 65 6c   there's some el
66f0: 65 67 61 6e 74 20 77 61 79 20 74 6f 20 69 6d 70  egant way to imp
6700: 6c 65 6d 65 6e 74 20 74 68 61 74 20 63 68 65 63  lement that chec
6710: 6b 2e 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20  k..        #.   
6720: 20 20 20 20 20 23 20 41 20 63 6f 64 65 20 66 72       # A code fr
6730: 61 67 6d 65 6e 74 20 66 6f 72 20 6c 61 74 65 72  agment for later
6740: 20 63 6f 6e 73 69 64 65 72 61 74 69 6f 6e 3a 0a   consideration:.
6750: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 53 5f          #     S_
6760: 54 4d 50 5f 32 3d 22 60 65 63 68 6f 20 5c 22 24  TMP_2="`echo \"$
6770: 53 5f 54 4d 50 5f 30 5c 22 20 7c 20 67 61 77 6b  S_TMP_0\" | gawk
6780: 20 27 7b 67 73 75 62 28 2f 5c 73 2f 2c 5c 22 4e   '{gsub(/\s/,\"N
6790: 6f 74 41 53 70 61 63 65 5c 22 29 3b 70 72 69 6e  otASpace\");prin
67a0: 74 66 20 5c 22 25 73 5c 22 2c 20 5c 24 31 20 7d  tf \"%s\", \$1 }
67b0: 27 20 60 22 0a 20 20 20 20 20 20 20 20 23 20 20  ' `".        #  
67c0: 20 20 20 69 66 20 5b 20 22 24 53 5f 54 4d 50 5f     if [ "$S_TMP_
67d0: 32 22 20 21 3d 20 22 24 53 5f 54 4d 50 5f 30 22  2" != "$S_TMP_0"
67e0: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
67f0: 20 23 20 20 20 20 20 20 20 20 20 23 20 53 5f 54   #         # S_T
6800: 4d 50 5f 30 20 63 6f 6e 74 61 69 6e 73 20 73 74  MP_0 contains st
6810: 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 23 20  rings.        # 
6820: 20 20 20 20 20 20 20 20 53 42 5f 55 53 45 5f 52          SB_USE_R
6830: 55 42 59 3d 22 74 22 0a 20 20 20 20 20 20 20 20  UBY="t".        
6840: 23 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20  #     fi.       
6850: 20 23 2d 2d 2d 2d 2d 2d 2d 2d 65 6e 64 2d 2d 6f   #--------end--o
6860: 66 2d 2d 73 75 62 2d 70 61 74 68 2d 2d 63 68 65  f--sub-path--che
6870: 63 6b 2d 2d 2d 2d 0a 20 20 20 20 66 69 0a 20 20  ck----.    fi.  
6880: 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    #-------------
6890: 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 53 5f 46 50  -------.    S_FP
68a0: 5f 50 57 44 5f 42 45 46 4f 52 45 5f 53 48 52 45  _PWD_BEFORE_SHRE
68b0: 44 44 49 4e 47 3d 22 60 70 77 64 60 22 0a 20 20  DDING="`pwd`".  
68c0: 20 20 53 5f 43 4d 44 3d 22 22 20 23 20 74 6f 20    S_CMD="" # to 
68d0: 62 65 20 73 75 72 65 0a 20 20 20 20 23 2d 2d 2d  be sure.    #---
68e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
68f0: 2d 0a 20 20 20 20 53 5f 54 4d 50 5f 30 3d 22 63  -.    S_TMP_0="c
6900: 64 20 24 53 5f 46 50 5f 49 4e 20 3b 20 6e 69 63  d $S_FP_IN ; nic
6910: 65 20 2d 6e 31 30 20 66 69 6e 64 20 2e 20 2d 6e  e -n10 find . -n
6920: 61 6d 65 20 27 2a 27 20 7c 20 6e 69 63 65 20 2d  ame '*' | nice -
6930: 6e 31 30 20 78 61 72 67 73 20 22 0a 20 20 20 20  n10 xargs ".    
6940: 23 20 54 68 65 20 73 70 61 63 65 20 61 66 74 65  # The space afte
6950: 72 20 74 68 65 20 22 63 64 20 24 53 5f 46 50 5f  r the "cd $S_FP_
6960: 49 4e 22 20 61 6e 64 20 62 65 66 6f 72 65 20 74  IN" and before t
6970: 68 65 20 22 3b 22 20 69 73 20 63 6f 6d 70 75 6c  he ";" is compul
6980: 73 6f 72 79 2e 0a 20 20 20 20 23 2d 2d 2d 2d 0a  sory..    #----.
6990: 20 20 20 20 23 20 54 68 65 20 22 32 3e 2f 64 65      # The "2>/de
69a0: 76 2f 6e 75 6c 6c 22 20 61 66 74 65 72 20 74 68  v/null" after th
69b0: 65 20 73 68 72 65 64 64 69 6e 67 2f 64 65 6c 65  e shredding/dele
69c0: 74 69 6f 6e 20 63 6f 6d 6d 61 6e 64 0a 20 20 20  tion command.   
69d0: 20 23 20 69 73 20 74 6f 20 68 69 64 65 20 74 68   # is to hide th
69e0: 65 20 66 69 6c 65 20 70 65 72 6d 69 73 73 69 6f  e file permissio
69f0: 6e 73 20 72 65 6c 61 74 65 64 20 65 72 72 6f 72  ns related error
6a00: 20 6d 65 73 73 61 67 65 73 2e 0a 20 20 20 20 23   messages..    #
6a10: 20 54 68 65 20 66 61 69 6c 75 72 65 20 69 73 20   The failure is 
6a20: 64 65 74 65 63 74 65 64 20 62 79 20 73 74 75 64  detected by stud
6a30: 79 69 6e 67 20 66 69 6c 65 20 65 78 69 73 74 65  ying file existe
6a40: 6e 63 65 2e 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d  nce..    #------
6a50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20  --------------. 
6a60: 20 20 20 69 66 20 5b 20 22 24 53 5f 46 55 4e 43     if [ "$S_FUNC
6a70: 5f 4d 4d 4d 56 5f 53 48 52 45 44 5f 54 31 5f 4d  _MMMV_SHRED_T1_M
6a80: 4f 44 45 22 20 3d 3d 20 22 73 68 72 65 64 22 20  ODE" == "shred" 
6a90: 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20  ]; then.        
6aa0: 53 5f 53 48 52 45 44 44 45 52 5f 41 50 50 4c 49  S_SHREDDER_APPLI
6ab0: 43 41 54 49 4f 4e 5f 4e 41 4d 45 3d 22 73 68 72  CATION_NAME="shr
6ac0: 65 64 22 0a 20 20 20 20 20 20 20 20 69 66 20 5b  ed".        if [
6ad0: 20 2d 64 20 24 53 5f 46 50 5f 49 4e 20 5d 3b 20   -d $S_FP_IN ]; 
6ae0: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20  then.           
6af0: 20 53 5f 43 4d 44 3d 22 24 53 5f 54 4d 50 5f 30   S_CMD="$S_TMP_0
6b00: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   \.             
6b10: 20 20 20 20 20 20 24 53 5f 53 48 52 45 44 44 45        $S_SHREDDE
6b20: 52 5f 41 50 50 4c 49 43 41 54 49 4f 4e 5f 4e 41  R_APPLICATION_NA
6b30: 4d 45 20 2d 66 20 2d 2d 72 65 6d 6f 76 65 20 32  ME -f --remove 2
6b40: 3e 2f 64 65 76 2f 6e 75 6c 6c 20 22 0a 20 20 20  >/dev/null ".   
6b50: 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20       else.      
6b60: 20 20 20 20 20 20 53 5f 43 4d 44 3d 22 6e 69 63        S_CMD="nic
6b70: 65 20 2d 6e 31 30 20 24 53 5f 53 48 52 45 44 44  e -n10 $S_SHREDD
6b80: 45 52 5f 41 50 50 4c 49 43 41 54 49 4f 4e 5f 4e  ER_APPLICATION_N
6b90: 41 4d 45 20 2d 66 20 2d 2d 72 65 6d 6f 76 65 20  AME -f --remove 
6ba0: 24 53 5f 46 50 5f 49 4e 20 32 3e 2f 64 65 76 2f  $S_FP_IN 2>/dev/
6bb0: 6e 75 6c 6c 20 22 0a 20 20 20 20 20 20 20 20 66  null ".        f
6bc0: 69 0a 20 20 20 20 66 69 0a 20 20 20 20 23 2d 2d  i.    fi.    #--
6bd0: 2d 2d 0a 20 20 20 20 69 66 20 5b 20 22 24 53 5f  --.    if [ "$S_
6be0: 46 55 4e 43 5f 4d 4d 4d 56 5f 53 48 52 45 44 5f  FUNC_MMMV_SHRED_
6bf0: 54 31 5f 4d 4f 44 45 22 20 3d 3d 20 22 67 73 68  T1_MODE" == "gsh
6c00: 72 65 64 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20  red" ]; then.   
6c10: 20 20 20 20 20 53 5f 53 48 52 45 44 44 45 52 5f       S_SHREDDER_
6c20: 41 50 50 4c 49 43 41 54 49 4f 4e 5f 4e 41 4d 45  APPLICATION_NAME
6c30: 3d 22 67 73 68 72 65 64 22 0a 20 20 20 20 20 20  ="gshred".      
6c40: 20 20 69 66 20 5b 20 2d 64 20 24 53 5f 46 50 5f    if [ -d $S_FP_
6c50: 49 4e 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20  IN ]; then.     
6c60: 20 20 20 20 20 20 20 53 5f 43 4d 44 3d 22 24 53         S_CMD="$S
6c70: 5f 54 4d 50 5f 30 20 5c 0a 20 20 20 20 20 20 20  _TMP_0 \.       
6c80: 20 20 20 20 20 20 20 20 20 20 20 20 24 53 5f 53              $S_S
6c90: 48 52 45 44 44 45 52 5f 41 50 50 4c 49 43 41 54  HREDDER_APPLICAT
6ca0: 49 4f 4e 5f 4e 41 4d 45 20 2d 2d 66 6f 72 63 65  ION_NAME --force
6cb0: 20 2d 2d 69 74 65 72 61 74 69 6f 6e 73 3d 32 20   --iterations=2 
6cc0: 2d 2d 72 65 6d 6f 76 65 20 2d 7a 20 32 3e 2f 64  --remove -z 2>/d
6cd0: 65 76 2f 6e 75 6c 6c 20 22 0a 20 20 20 20 20 20  ev/null ".      
6ce0: 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20    else.         
6cf0: 20 20 20 53 5f 43 4d 44 3d 22 6e 69 63 65 20 2d     S_CMD="nice -
6d00: 6e 31 30 20 5c 0a 20 20 20 20 20 20 20 20 20 20  n10 \.          
6d10: 20 20 20 20 20 20 20 20 20 24 53 5f 53 48 52 45           $S_SHRE
6d20: 44 44 45 52 5f 41 50 50 4c 49 43 41 54 49 4f 4e  DDER_APPLICATION
6d30: 5f 4e 41 4d 45 20 2d 2d 66 6f 72 63 65 20 2d 2d  _NAME --force --
6d40: 69 74 65 72 61 74 69 6f 6e 73 3d 32 20 2d 2d 72  iterations=2 --r
6d50: 65 6d 6f 76 65 20 2d 7a 20 24 53 5f 46 50 5f 49  emove -z $S_FP_I
6d60: 4e 20 32 3e 2f 64 65 76 2f 6e 75 6c 6c 20 22 0a  N 2>/dev/null ".
6d70: 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 66          fi.    f
6d80: 69 0a 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20  i.    #----.    
6d90: 23 20 54 68 65 20 22 72 6d 22 20 6f 6e 20 4c 69  # The "rm" on Li
6da0: 6e 75 78 20 61 6e 64 20 42 53 44 20 64 69 66 66  nux and BSD diff
6db0: 65 72 2c 20 0a 20 20 20 20 23 20 61 20 62 69 74  er, .    # a bit
6dc0: 20 6c 69 6b 65 20 74 68 65 20 22 70 73 22 20 23   like the "ps" #
6dd0: 20 6f 6e 20 4c 69 6e 75 78 20 61 6e 64 20 42 53   on Linux and BS
6de0: 44 20 64 69 66 66 65 72 2e 0a 20 20 20 20 23 20  D differ..    # 
6df0: 54 68 65 20 22 72 6d 20 2d 66 20 2d 50 20 66 6f  The "rm -f -P fo
6e00: 6f 22 20 6f 76 65 72 77 72 69 74 65 73 20 74 68  o" overwrites th
6e10: 65 20 66 69 6c 65 20 77 69 74 68 20 4e 4f 4e 2d  e file with NON-
6e20: 72 61 6e 64 6f 6d 20 0a 20 20 20 20 23 20 76 61  random .    # va
6e30: 6c 75 65 73 20 62 65 66 6f 72 65 20 64 65 6c 65  lues before dele
6e40: 74 69 6e 67 2e 0a 20 20 20 20 23 20 54 68 65 20  ting..    # The 
6e50: 22 72 6d 20 2d 66 20 20 20 20 66 6f 6f 22 20 77  "rm -f    foo" w
6e60: 6f 72 6b 73 2c 20 77 68 65 6e 65 76 65 72 20 74  orks, whenever t
6e70: 68 65 20 22 72 6d 22 20 69 73 20 63 61 6c 6c 65  he "rm" is calle
6e80: 64 20 62 79 20 74 68 65 20 66 69 6c 65 20 6f 77  d by the file ow
6e90: 6e 65 72 2e 0a 20 20 20 20 23 20 54 68 65 20 22  ner..    # The "
6ea0: 72 6d 20 2d 66 20 2d 50 20 66 6f 6f 22 20 72 65  rm -f -P foo" re
6eb0: 71 75 69 72 65 73 20 77 72 69 74 65 20 70 65 72  quires write per
6ec0: 6d 69 73 73 69 6f 6e 73 20 65 76 65 6e 2c 20 0a  missions even, .
6ed0: 20 20 20 20 23 20 69 66 20 74 68 65 20 22 72 6d      # if the "rm
6ee0: 22 20 69 73 20 63 61 6c 6c 65 64 20 62 79 20 74  " is called by t
6ef0: 68 65 20 66 69 6c 65 20 6f 77 6e 65 72 2e 0a 20  he file owner.. 
6f00: 20 20 20 69 66 20 5b 20 22 24 53 5f 46 55 4e 43     if [ "$S_FUNC
6f10: 5f 4d 4d 4d 56 5f 53 48 52 45 44 5f 54 31 5f 4d  _MMMV_SHRED_T1_M
6f20: 4f 44 45 22 20 3d 3d 20 22 72 6d 5f 42 53 44 22  ODE" == "rm_BSD"
6f30: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
6f40: 20 53 5f 53 48 52 45 44 44 45 52 5f 41 50 50 4c   S_SHREDDER_APPL
6f50: 49 43 41 54 49 4f 4e 5f 4e 41 4d 45 3d 22 72 6d  ICATION_NAME="rm
6f60: 22 0a 20 20 20 20 20 20 20 20 69 66 20 5b 20 2d  ".        if [ -
6f70: 64 20 24 53 5f 46 50 5f 49 4e 20 5d 3b 20 74 68  d $S_FP_IN ]; th
6f80: 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  en.            S
6f90: 5f 43 4d 44 3d 22 24 53 5f 54 4d 50 5f 30 20 5c  _CMD="$S_TMP_0 \
6fa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 53 5f  .            $S_
6fb0: 53 48 52 45 44 44 45 52 5f 41 50 50 4c 49 43 41  SHREDDER_APPLICA
6fc0: 54 49 4f 4e 5f 4e 41 4d 45 20 2d 66 20 2d 50 20  TION_NAME -f -P 
6fd0: 24 53 5f 46 50 5f 49 4e 20 32 3e 2f 64 65 76 2f  $S_FP_IN 2>/dev/
6fe0: 6e 75 6c 6c 20 22 0a 20 20 20 20 20 20 20 20 65  null ".        e
6ff0: 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  lse.            
7000: 53 5f 43 4d 44 3d 22 6e 69 63 65 20 2d 6e 31 30  S_CMD="nice -n10
7010: 20 24 53 5f 53 48 52 45 44 44 45 52 5f 41 50 50   $S_SHREDDER_APP
7020: 4c 49 43 41 54 49 4f 4e 5f 4e 41 4d 45 20 2d 66  LICATION_NAME -f
7030: 20 2d 50 20 24 53 5f 46 50 5f 49 4e 20 32 3e 2f   -P $S_FP_IN 2>/
7040: 64 65 76 2f 6e 75 6c 6c 20 22 0a 20 20 20 20 20  dev/null ".     
7050: 20 20 20 66 69 0a 20 20 20 20 66 69 0a 20 20 20     fi.    fi.   
7060: 20 69 66 20 5b 20 22 24 53 5f 46 55 4e 43 5f 4d   if [ "$S_FUNC_M
7070: 4d 4d 56 5f 53 48 52 45 44 5f 54 31 5f 4d 4f 44  MMV_SHRED_T1_MOD
7080: 45 22 20 3d 3d 20 22 72 6d 5f 70 6c 61 69 6e 22  E" == "rm_plain"
7090: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
70a0: 20 23 20 54 68 65 20 22 72 6d 20 2d 66 20 20 20   # The "rm -f   
70b0: 20 66 6f 6f 22 20 73 65 65 6d 73 20 74 6f 20 62   foo" seems to b
70c0: 65 20 75 6e 69 76 65 72 73 61 6c 6c 79 20 61 76  e universally av
70d0: 61 69 6c 61 62 6c 65 0a 20 20 20 20 20 20 20 20  ailable.        
70e0: 23 20 61 74 20 61 6c 6c 20 55 4e 49 58 2d 6c 69  # at all UNIX-li
70f0: 6b 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 73 2e  ke environments.
7100: 0a 20 20 20 20 20 20 20 20 53 5f 53 48 52 45 44  .        S_SHRED
7110: 44 45 52 5f 41 50 50 4c 49 43 41 54 49 4f 4e 5f  DER_APPLICATION_
7120: 4e 41 4d 45 3d 22 72 6d 22 0a 20 20 20 20 20 20  NAME="rm".      
7130: 20 20 69 66 20 5b 20 2d 64 20 24 53 5f 46 50 5f    if [ -d $S_FP_
7140: 49 4e 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20  IN ]; then.     
7150: 20 20 20 20 20 20 20 53 5f 43 4d 44 3d 22 24 53         S_CMD="$S
7160: 5f 54 4d 50 5f 30 20 5c 0a 20 20 20 20 20 20 20  _TMP_0 \.       
7170: 20 20 20 20 20 24 53 5f 53 48 52 45 44 44 45 52       $S_SHREDDER
7180: 5f 41 50 50 4c 49 43 41 54 49 4f 4e 5f 4e 41 4d  _APPLICATION_NAM
7190: 45 20 2d 66 20 24 53 5f 46 50 5f 49 4e 20 32 3e  E -f $S_FP_IN 2>
71a0: 2f 64 65 76 2f 6e 75 6c 6c 20 22 0a 20 20 20 20  /dev/null ".    
71b0: 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20      else.       
71c0: 20 20 20 20 20 53 5f 43 4d 44 3d 22 6e 69 63 65       S_CMD="nice
71d0: 20 2d 6e 31 30 20 24 53 5f 53 48 52 45 44 44 45   -n10 $S_SHREDDE
71e0: 52 5f 41 50 50 4c 49 43 41 54 49 4f 4e 5f 4e 41  R_APPLICATION_NA
71f0: 4d 45 20 2d 66 20 24 53 5f 46 50 5f 49 4e 20 32  ME -f $S_FP_IN 2
7200: 3e 2f 64 65 76 2f 6e 75 6c 6c 20 22 0a 20 20 20  >/dev/null ".   
7210: 20 20 20 20 20 66 69 0a 20 20 20 20 66 69 0a 20       fi.    fi. 
7220: 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d     #------------
7230: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 65 76 61  --------.    eva
7240: 6c 20 22 24 53 5f 43 4d 44 22 20 23 20 74 68 65  l "$S_CMD" # the
7250: 20 22 65 76 61 6c 22 20 69 73 20 72 65 71 75 69   "eval" is requi
7260: 72 65 64 20 64 75 65 20 74 6f 20 74 68 65 20 63  red due to the c
7270: 6f 6d 6d 61 6e 64 20 22 66 69 6e 64 22 0a 20 20  ommand "find".  
7280: 20 20 63 64 20 24 53 5f 46 50 5f 50 57 44 5f 42    cd $S_FP_PWD_B
7290: 45 46 4f 52 45 5f 53 48 52 45 44 44 49 4e 47 20  EFORE_SHREDDING 
72a0: 23 20 72 65 71 75 69 72 65 64 20 69 66 20 74 68  # required if th
72b0: 65 20 24 53 5f 46 50 5f 49 4e 20 20 77 61 73 20  e $S_FP_IN  was 
72c0: 61 20 66 6f 6c 64 65 72 0a 20 20 20 20 69 66 20  a folder.    if 
72d0: 5b 20 2d 65 20 24 53 5f 46 50 5f 49 4e 20 5d 3b  [ -e $S_FP_IN ];
72e0: 20 74 68 65 6e 20 0a 20 20 20 20 20 20 20 20 23   then .        #
72f0: 20 49 66 20 74 68 65 20 63 6f 6e 74 72 6f 6c 20   If the control 
7300: 66 6c 6f 77 20 69 73 20 68 65 72 65 2c 20 74 68  flow is here, th
7310: 65 6e 20 74 68 65 20 24 53 5f 46 50 5f 49 4e 20  en the $S_FP_IN 
7320: 77 61 73 20 0a 20 20 20 20 20 20 20 20 23 20 61  was .        # a
7330: 20 66 6f 6c 64 65 72 20 6f 72 20 74 68 65 20 64   folder or the d
7340: 65 6c 65 74 69 6f 6e 20 66 61 69 6c 65 64 20 6f  eletion failed o
7350: 72 20 62 6f 74 68 2e 0a 20 20 20 20 20 20 20 20  r both..        
7360: 63 68 6d 6f 64 20 2d 66 20 2d 52 20 30 37 30 30  chmod -f -R 0700
7370: 20 24 53 5f 46 50 5f 49 4e 20 20 23 20 63 68 6d   $S_FP_IN  # chm
7380: 6f 64 20 30 37 37 37 20 77 6f 75 6c 64 20 69 6e  od 0777 would in
7390: 74 72 6f 64 75 63 65 20 73 20 73 65 63 75 72 69  troduce s securi
73a0: 74 79 20 66 6c 61 77 0a 20 20 20 20 20 20 20 20  ty flaw.        
73b0: 65 76 61 6c 20 22 24 53 5f 43 4d 44 22 20 23 20  eval "$S_CMD" # 
73c0: 74 68 65 20 22 65 76 61 6c 22 20 69 73 20 72 65  the "eval" is re
73d0: 71 75 69 72 65 64 20 64 75 65 20 74 6f 20 74 68  quired due to th
73e0: 65 20 63 6f 6d 6d 61 6e 64 20 22 66 69 6e 64 22  e command "find"
73f0: 0a 20 20 20 20 20 20 20 20 63 64 20 24 53 5f 46  .        cd $S_F
7400: 50 5f 50 57 44 5f 42 45 46 4f 52 45 5f 53 48 52  P_PWD_BEFORE_SHR
7410: 45 44 44 49 4e 47 0a 20 20 20 20 20 20 20 20 23  EDDING.        #
7420: 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 53 42 5f  ----.        SB_
7430: 54 48 52 4f 57 3d 22 66 22 0a 20 20 20 20 20 20  THROW="f".      
7440: 20 20 69 66 20 5b 20 2d 64 20 24 53 5f 46 50 5f    if [ -d $S_FP_
7450: 49 4e 20 5d 3b 20 74 68 65 6e 20 0a 20 20 20 20  IN ]; then .    
7460: 20 20 20 20 20 20 20 20 53 5f 54 4d 50 5f 30 3d          S_TMP_0=
7470: 22 60 63 64 20 24 53 5f 46 50 5f 49 4e 3b 20 70  "`cd $S_FP_IN; p
7480: 77 64 60 22 20 23 20 22 2e 2f 68 6f 6d 65 2f 2f  wd`" # "./home//
7490: 2f 66 6f 6f 22 20 2d 3e 20 22 2f 68 6f 6d 65 2f  /foo" -> "/home/
74a0: 66 6f 6f 22 0a 20 20 20 20 20 20 20 20 20 20 20  foo".           
74b0: 20 23 20 43 68 65 63 6b 73 20 61 72 65 20 69 6e   # Checks are in
74c0: 74 65 6e 74 69 6f 6e 61 6c 6c 79 20 6d 69 73 73  tentionally miss
74d0: 69 6e 67 20 74 6f 20 0a 20 20 20 20 20 20 20 20  ing to .        
74e0: 20 20 20 20 23 20 61 6c 6c 6f 77 20 74 68 69 73      # allow this
74f0: 20 42 61 73 68 20 66 75 6e 63 74 69 6f 6e 20 74   Bash function t
7500: 6f 20 62 65 20 75 6e 69 76 65 72 73 61 6c 2c 20  o be universal, 
7510: 77 69 74 68 6f 75 74 20 65 78 63 65 70 74 69 6f  without exceptio
7520: 6e 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20  ns..            
7530: 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20  #----.          
7540: 20 20 63 64 20 24 53 5f 54 4d 50 5f 30 0a 20 20    cd $S_TMP_0.  
7550: 20 20 20 20 20 20 20 20 20 20 53 5f 54 4d 50 5f            S_TMP_
7560: 31 3d 22 60 66 69 6e 64 20 2e 20 2d 6e 61 6d 65  1="`find . -name
7570: 20 27 2a 27 20 7c 20 5c 0a 20 20 20 20 20 20 20   '*' | \.       
7580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
7590: 61 72 67 73 20 66 69 6c 65 20 2d 2d 6d 69 6d 65  args file --mime
75a0: 2d 74 79 70 65 20 7c 20 5c 0a 20 20 20 20 20 20  -type | \.      
75b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75c0: 67 72 65 70 20 2d 76 20 64 69 72 65 63 74 6f 72  grep -v director
75d0: 79 20 7c 20 67 72 65 70 20 2d 76 20 66 6f 6c 64  y | grep -v fold
75e0: 65 72 20 60 22 0a 20 20 20 20 20 20 20 20 20 20  er `".          
75f0: 20 20 20 20 20 20 20 20 20 20 23 20 54 68 65 20            # The 
7600: 20 20 66 69 6c 65 20 2d 2d 6d 69 6d 65 2d 74 79    file --mime-ty
7610: 70 65 20 66 6f 6f 0a 20 20 20 20 20 20 20 20 20  pe foo.         
7620: 20 20 20 20 20 20 20 20 20 20 20 23 20 77 6f 72             # wor
7630: 6b 73 20 6f 6e 20 62 6f 74 68 2c 20 4c 69 6e 75  ks on both, Linu
7640: 78 20 61 6e 64 20 42 53 44 2e 20 0a 20 20 20 20  x and BSD. .    
7650: 20 20 20 20 20 20 20 20 63 64 20 24 53 5f 46 50          cd $S_FP
7660: 5f 50 57 44 5f 42 45 46 4f 52 45 5f 53 48 52 45  _PWD_BEFORE_SHRE
7670: 44 44 49 4e 47 0a 20 20 20 20 20 20 20 20 20 20  DDING.          
7680: 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20    #----.        
7690: 20 20 20 20 69 66 20 5b 20 22 24 53 5f 54 4d 50      if [ "$S_TMP
76a0: 5f 31 22 20 3d 3d 20 22 22 20 5d 3b 20 74 68 65  _1" == "" ]; the
76b0: 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n.              
76c0: 20 20 72 6d 20 2d 66 72 20 24 53 5f 54 4d 50 5f    rm -fr $S_TMP_
76d0: 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  0.            el
76e0: 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  se.             
76f0: 20 20 20 53 42 5f 54 48 52 4f 57 3d 22 74 22 0a     SB_THROW="t".
7700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7710: 53 5f 47 55 49 44 3d 22 27 31 34 38 37 64 64 64  S_GUID="'1487ddd
7720: 31 2d 61 38 34 63 2d 34 63 37 37 2d 39 65 33 36  1-a84c-4c77-9e36
7730: 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22 0a  -315260c151e7'".
7740: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a 20              fi. 
7750: 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20         fi.      
7760: 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20    #----.        
7770: 69 66 20 5b 20 22 24 53 42 5f 54 48 52 4f 57 22  if [ "$SB_THROW"
7780: 20 3d 3d 20 22 66 22 20 5d 3b 20 74 68 65 6e 20   == "f" ]; then 
7790: 23 20 74 6f 20 61 76 6f 69 64 20 6f 76 65 72 77  # to avoid overw
77a0: 72 69 74 69 6e 67 20 74 68 65 20 53 5f 47 55 49  riting the S_GUI
77b0: 44 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  D.            if
77c0: 20 5b 20 2d 65 20 24 53 5f 46 50 5f 49 4e 20 5d   [ -e $S_FP_IN ]
77d0: 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20  ; then.         
77e0: 20 20 20 20 20 20 20 53 42 5f 54 48 52 4f 57 3d         SB_THROW=
77f0: 22 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  "t".            
7800: 20 20 20 20 53 5f 47 55 49 44 3d 22 27 33 31 62      S_GUID="'31b
7810: 32 38 62 39 37 2d 32 38 61 63 2d 34 31 63 32 2d  28b97-28ac-41c2-
7820: 38 63 31 36 2d 33 31 35 32 36 30 63 31 35 31 65  8c16-315260c151e
7830: 37 27 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  7'".            
7840: 66 69 20 0a 20 20 20 20 20 20 20 20 66 69 20 0a  fi .        fi .
7850: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53          if [ "$S
7860: 42 5f 54 48 52 4f 57 22 20 3d 3d 20 22 74 22 20  B_THROW" == "t" 
7870: 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20  ]; then.        
7880: 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
7890: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 54 68          echo "Th
78a0: 65 20 64 65 6c 65 74 69 6f 6e 20 66 61 69 6c 65  e deletion faile
78b0: 64 20 65 76 65 6e 20 61 66 74 65 72 20 74 68 65  d even after the
78c0: 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65   ".            e
78d0: 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20  cho "".         
78e0: 20 20 20 65 63 68 6f 20 22 20 20 20 20 63 68 6d     echo "    chm
78f0: 6f 64 20 2d 66 20 2d 52 20 30 37 30 30 20 24 53  od -f -R 0700 $S
7900: 5f 46 50 5f 49 4e 20 22 0a 20 20 20 20 20 20 20  _FP_IN ".       
7910: 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
7920: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 54           echo "T
7930: 68 65 20 22 0a 20 20 20 20 20 20 20 20 20 20 20  he ".           
7940: 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20   echo "".       
7950: 20 20 20 20 20 65 63 68 6f 20 22 20 20 20 20 63       echo "    c
7960: 68 6d 6f 64 20 30 37 37 37 20 22 0a 20 20 20 20  hmod 0777 ".    
7970: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
7980: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
7990: 20 22 69 73 20 6e 6f 74 20 64 6f 6e 65 20 61 75   "is not done au
79a0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 20 74  tomatically in t
79b0: 68 69 73 20 22 0a 20 20 20 20 20 20 20 20 20 20  his ".          
79c0: 20 20 65 63 68 6f 20 22 42 61 73 68 20 66 75 6e    echo "Bash fun
79d0: 63 74 69 6f 6e 2c 20 62 65 63 61 75 73 65 20 22  ction, because "
79e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68  .            ech
79f0: 6f 20 22 69 74 20 6d 69 67 68 74 20 69 6e 74 72  o "it might intr
7a00: 6f 64 75 63 65 20 61 20 73 65 63 75 72 69 74 79  oduce a security
7a10: 20 66 6c 61 77 2e 22 0a 20 20 20 20 20 20 20 20   flaw.".        
7a20: 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
7a30: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 20 20          echo "  
7a40: 20 20 53 5f 46 55 4e 43 5f 4d 4d 4d 56 5f 53 48    S_FUNC_MMMV_SH
7a50: 52 45 44 5f 54 31 5f 4d 4f 44 45 3d 24 53 5f 46  RED_T1_MODE=$S_F
7a60: 55 4e 43 5f 4d 4d 4d 56 5f 53 48 52 45 44 5f 54  UNC_MMMV_SHRED_T
7a70: 31 5f 4d 4f 44 45 22 0a 20 20 20 20 20 20 20 20  1_MODE".        
7a80: 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
7a90: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 20 20          echo "  
7aa0: 20 20 53 5f 43 4d 44 3d 24 53 5f 43 4d 44 22 0a    S_CMD=$S_CMD".
7ab0: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
7ac0: 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20   "".            
7ad0: 65 63 68 6f 20 22 47 55 49 44 3d 3d 24 53 5f 47  echo "GUID==$S_G
7ae0: 55 49 44 22 0a 20 20 20 20 20 20 20 20 20 20 20  UID".           
7af0: 20 65 63 68 6f 20 22 47 55 49 44 3d 3d 27 33 36   echo "GUID=='36
7b00: 31 35 33 32 30 35 2d 34 61 32 66 2d 34 33 39 38  153205-4a2f-4398
7b10: 2d 39 65 34 36 2d 33 31 35 32 36 30 63 31 35 31  -9e46-315260c151
7b20: 65 37 27 22 0a 20 20 20 20 20 20 20 20 20 20 20  e7'".           
7b30: 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20   echo "".       
7b40: 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20       #----.     
7b50: 20 20 20 20 20 20 20 63 64 20 24 53 5f 46 50 5f         cd $S_FP_
7b60: 4f 52 49 47 0a 20 20 20 20 20 20 20 20 20 20 20  ORIG.           
7b70: 20 65 78 69 74 20 31 20 23 20 65 78 69 74 20 77   exit 1 # exit w
7b80: 69 74 68 20 65 72 72 6f 72 0a 20 20 20 20 20 20  ith error.      
7b90: 20 20 66 69 0a 20 20 20 20 66 69 0a 20 20 20 20    fi.    fi.    
7ba0: 53 5f 47 55 49 44 3d 22 27 36 33 38 34 38 65 37  S_GUID="'63848e7
7bb0: 30 2d 65 35 66 61 2d 34 66 34 64 2d 38 38 33 36  0-e5fa-4f4d-8836
7bc0: 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22 20  -315260c151e7'" 
7bd0: 23 63 6f 75 6e 74 65 72 73 20 53 5f 47 55 49 44  #counters S_GUID
7be0: 20 72 65 6c 61 74 65 64 20 66 6c 61 77 73 0a 20   related flaws. 
7bf0: 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d     #------------
7c00: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 69 66 20  --------.    if 
7c10: 5b 20 2d 65 20 24 53 5f 46 50 5f 49 4e 20 5d 3b  [ -e $S_FP_IN ];
7c20: 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 65 63   then.        ec
7c30: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 65 63  ho "".        ec
7c40: 68 6f 20 22 54 68 65 20 64 65 6c 65 74 69 6f 6e  ho "The deletion
7c50: 20 6f 66 20 74 68 65 20 22 0a 20 20 20 20 20 20   of the ".      
7c60: 20 20 65 63 68 6f 20 22 20 20 20 20 53 5f 46 50    echo "    S_FP
7c70: 5f 49 4e 3d 24 53 5f 46 50 5f 49 4e 22 0a 20 20  _IN=$S_FP_IN".  
7c80: 20 20 20 20 20 20 65 63 68 6f 20 22 66 61 69 6c        echo "fail
7c90: 65 64 20 6f 72 20 74 68 65 20 66 69 6c 65 20 6f  ed or the file o
7ca0: 72 20 66 6f 6c 64 65 72 20 77 61 73 20 72 65 2d  r folder was re-
7cb0: 63 72 65 61 74 65 64 20 62 79 20 22 0a 20 20 20  created by ".   
7cc0: 20 20 20 20 20 65 63 68 6f 20 22 73 6f 6d 65 20       echo "some 
7cd0: 6f 74 68 65 72 20 70 72 6f 63 65 73 73 20 62 65  other process be
7ce0: 66 6f 72 65 20 74 68 69 73 20 66 69 6c 65 20 65  fore this file e
7cf0: 78 69 73 74 61 6e 63 65 20 63 68 65 63 6b 2e 22  xistance check."
7d00: 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 47  .        echo "G
7d10: 55 49 44 3d 3d 27 32 34 30 30 36 65 37 61 2d 65  UID=='24006e7a-e
7d20: 64 36 39 2d 34 30 33 38 2d 61 39 35 35 2d 33 31  d69-4038-a955-31
7d30: 35 32 36 30 63 31 35 31 65 37 27 22 0a 20 20 20  5260c151e7'".   
7d40: 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
7d50: 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20       #----.     
7d60: 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49 47     cd $S_FP_ORIG
7d70: 0a 20 20 20 20 20 20 20 20 65 78 69 74 20 31 20  .        exit 1 
7d80: 23 20 65 78 69 74 20 77 69 74 68 20 65 72 72 6f  # exit with erro
7d90: 72 0a 20 20 20 20 66 69 0a 20 20 20 20 23 2d 2d  r.    fi.    #--
7da0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7db0: 2d 2d 0a 20 20 20 20 63 64 20 24 53 5f 46 50 5f  --.    cd $S_FP_
7dc0: 50 57 44 5f 42 45 46 4f 52 45 5f 53 48 52 45 44  PWD_BEFORE_SHRED
7dd0: 44 49 4e 47 0a 7d 20 23 20 66 75 6e 63 5f 6d 6d  DING.} # func_mm
7de0: 6d 76 5f 73 68 72 65 64 5f 74 31 0a 0a 0a 23 2d  mv_shred_t1...#-
7df0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7e00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7e30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 54 68 65 20  ---------.# The 
7e40: 0a 23 0a 23 20 20 20 20 20 2f 74 6d 70 0a 23 0a  .#.#     /tmp.#.
7e50: 23 20 6d 69 67 68 74 20 62 65 20 6d 6f 75 6e 74  # might be mount
7e60: 65 64 20 74 6f 20 74 68 65 20 73 61 6d 65 20 70  ed to the same p
7e70: 61 72 74 69 74 69 6f 6e 20 74 68 61 74 20 63 6f  artition that co
7e80: 6e 74 61 69 6e 73 20 74 68 65 20 72 6f 6f 74 20  ntains the root 
7e90: 66 6f 6c 64 65 72 2c 20 74 68 65 20 22 2f 22 2c  folder, the "/",
7ea0: 20 20 0a 23 20 62 75 74 20 74 68 65 20 72 6f 6f    .# but the roo
7eb0: 74 20 66 6f 6c 64 65 72 20 70 61 72 74 69 74 69  t folder partiti
7ec0: 6f 6e 20 6d 69 67 68 74 20 62 65 20 73 6d 61 6c  on might be smal
7ed0: 6c 65 72 20 74 68 61 6e 20 74 68 65 20 64 61 74  ler than the dat
7ee0: 61 20 73 74 6f 72 61 67 65 20 0a 23 20 70 61 72  a storage .# par
7ef0: 74 69 74 69 6f 6e 73 2e 20 54 6f 20 6f 76 65 72  titions. To over
7f00: 63 6f 6d 65 20 74 68 61 74 20 69 73 73 75 65 2c  come that issue,
7f10: 20 74 68 69 73 20 73 63 72 69 70 74 20 73 68 6f   this script sho
7f20: 75 6c 64 20 74 72 79 20 0a 23 20 74 6f 20 75 73  uld try .# to us
7f30: 65 20 74 68 65 20 73 61 6d 65 20 70 61 72 74 69  e the same parti
7f40: 74 69 6f 6e 2c 20 77 68 65 72 65 20 74 68 65 20  tion, where the 
7f50: 46 6f 73 73 69 6c 20 72 65 70 6f 73 69 74 6f 72  Fossil repositor
7f60: 79 20 66 69 6c 65 0a 23 20 69 73 20 73 74 6f 72  y file.# is stor
7f70: 65 64 2c 20 77 68 69 63 68 20 69 73 20 61 74 20  ed, which is at 
7f80: 74 68 65 20 73 61 6d 65 20 66 6f 6c 64 65 72 20  the same folder 
7f90: 77 68 65 72 65 20 74 68 69 73 20 73 63 72 69 70  where this scrip
7fa0: 74 20 69 73 20 73 74 6f 72 65 64 2e 20 0a 23 20  t is stored. .# 
7fb0: 54 68 65 20 61 76 6f 69 64 61 6e 63 65 20 6f 66  The avoidance of
7fc0: 20 74 68 65 20 22 2f 74 6d 70 22 2c 20 77 68 69   the "/tmp", whi
7fd0: 63 68 20 69 73 20 72 65 61 64 61 62 6c 65 20 74  ch is readable t
7fe0: 6f 20 65 76 65 72 79 62 6f 64 79 2c 20 69 73 20  o everybody, is 
7ff0: 6a 75 73 74 0a 23 20 61 20 73 65 63 75 72 69 74  just.# a securit
8000: 79 20 62 6f 6e 75 73 2e 20 0a 23 0a 23 20 54 68  y bonus. .#.# Th
8010: 65 20 53 51 4c 69 74 65 20 77 69 74 68 69 6e 20  e SQLite within 
8020: 74 68 65 20 46 6f 73 73 69 6c 20 75 73 65 73 20  the Fossil uses 
8030: 61 20 6c 6f 74 20 6f 66 20 74 65 6d 70 6f 72 61  a lot of tempora
8040: 72 79 20 73 70 61 63 65 20 0a 23 20 64 75 72 69  ry space .# duri
8050: 6e 67 20 63 6c 6f 6e 69 6e 67 2c 20 61 66 74 65  ng cloning, afte
8060: 72 20 61 6c 6c 20 6f 66 20 74 68 65 20 61 72 74  r all of the art
8070: 69 66 61 63 74 73 20 68 61 76 65 20 62 65 65 6e  ifacts have been
8080: 20 64 6f 77 6e 6c 6f 61 64 65 64 2e 0a 23 20 54   downloaded..# T
8090: 68 65 20 64 65 66 61 75 6c 74 20 6c 6f 63 61 74  he default locat
80a0: 69 6f 6e 20 66 6f 72 20 74 68 65 20 74 65 6d 70  ion for the temp
80b0: 6f 72 61 72 79 20 53 51 4c 69 74 65 20 66 69 6c  orary SQLite fil
80c0: 65 73 20 69 73 20 74 68 65 20 22 2f 74 6d 70 22  es is the "/tmp"
80d0: 2c 0a 23 20 62 75 74 20 74 68 65 20 66 6f 6c 64  ,.# but the fold
80e0: 65 72 20 70 61 74 68 20 66 6f 72 20 74 68 65 20  er path for the 
80f0: 53 51 4c 69 74 65 20 74 65 6d 70 6f 72 61 72 79  SQLite temporary
8100: 20 66 69 6c 65 73 20 63 61 6e 20 62 65 0a 23 20   files can be.# 
8110: 6d 6f 64 69 66 69 65 64 20 62 79 20 73 65 74 74  modified by sett
8120: 69 6e 67 20 74 68 65 20 20 53 51 4c 49 54 45 5f  ing the  SQLITE_
8130: 54 4d 50 44 49 52 20 65 6e 76 69 72 6f 6e 6d 65  TMPDIR environme
8140: 6e 74 20 76 61 72 69 61 62 6c 65 2e 0a 23 20 49  nt variable..# I
8150: 66 20 74 68 65 20 70 61 72 74 69 74 69 6f 6e 20  f the partition 
8160: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74 68  that contains th
8170: 65 20 66 6f 6c 64 65 72 20 74 68 61 74 20 73 74  e folder that st
8180: 6f 72 65 73 20 74 68 65 0a 23 20 53 51 4c 69 74  ores the.# SQLit
8190: 65 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65  e temporary file
81a0: 73 20 68 61 73 20 6c 65 73 73 20 73 70 61 63 65  s has less space
81b0: 20 74 68 61 6e 20 53 51 4c 69 74 65 20 6e 65 65   than SQLite nee
81c0: 64 73 2c 0a 23 20 74 68 65 20 63 6c 6f 6e 69 6e  ds,.# the clonin
81d0: 67 20 66 61 69 6c 73 2e 20 0a 0a 0a 4d 4d 4d 56  g fails. ...MMMV
81e0: 5f 46 50 5f 46 4f 53 53 49 4c 5f 4f 50 45 52 41  _FP_FOSSIL_OPERA
81f0: 54 4f 52 5f 54 4d 50 3d 22 2f 74 6d 70 22 20 23  TOR_TMP="/tmp" #
8200: 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   The default val
8210: 75 65 2e 0a 69 66 20 5b 20 2d 65 20 24 53 5f 46  ue..if [ -e $S_F
8220: 50 5f 44 49 52 2f 74 6d 70 5f 20 5d 3b 20 74 68  P_DIR/tmp_ ]; th
8230: 65 6e 20 0a 20 20 20 20 4d 4d 4d 56 5f 46 50 5f  en .    MMMV_FP_
8240: 46 4f 53 53 49 4c 5f 4f 50 45 52 41 54 4f 52 5f  FOSSIL_OPERATOR_
8250: 54 4d 50 3d 22 24 53 5f 46 50 5f 44 49 52 2f 74  TMP="$S_FP_DIR/t
8260: 6d 70 5f 22 0a 65 6c 73 65 0a 20 20 20 20 69 66  mp_".else.    if
8270: 20 5b 20 2d 65 20 24 53 5f 46 50 5f 44 49 52 2f   [ -e $S_FP_DIR/
8280: 74 6d 70 20 5d 3b 20 74 68 65 6e 20 0a 20 20 20  tmp ]; then .   
8290: 20 20 20 20 20 4d 4d 4d 56 5f 46 50 5f 46 4f 53       MMMV_FP_FOS
82a0: 53 49 4c 5f 4f 50 45 52 41 54 4f 52 5f 54 4d 50  SIL_OPERATOR_TMP
82b0: 3d 22 24 53 5f 46 50 5f 44 49 52 2f 74 6d 70 22  ="$S_FP_DIR/tmp"
82c0: 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20  .    else.      
82d0: 20 20 69 66 20 5b 20 2d 65 20 24 48 4f 4d 45 2f    if [ -e $HOME/
82e0: 74 6d 70 5f 20 5d 3b 20 74 68 65 6e 20 0a 20 20  tmp_ ]; then .  
82f0: 20 20 20 20 20 20 20 20 20 20 4d 4d 4d 56 5f 46            MMMV_F
8300: 50 5f 46 4f 53 53 49 4c 5f 4f 50 45 52 41 54 4f  P_FOSSIL_OPERATO
8310: 52 5f 54 4d 50 3d 22 24 48 4f 4d 45 2f 74 6d 70  R_TMP="$HOME/tmp
8320: 5f 22 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a  _".        else.
8330: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b              if [
8340: 20 2d 65 20 24 48 4f 4d 45 2f 74 6d 70 20 5d 3b   -e $HOME/tmp ];
8350: 20 74 68 65 6e 20 0a 20 20 20 20 20 20 20 20 20   then .         
8360: 20 20 20 20 20 20 20 4d 4d 4d 56 5f 46 50 5f 46         MMMV_FP_F
8370: 4f 53 53 49 4c 5f 4f 50 45 52 41 54 4f 52 5f 54  OSSIL_OPERATOR_T
8380: 4d 50 3d 22 24 48 4f 4d 45 2f 74 6d 70 22 0a 20  MP="$HOME/tmp". 
8390: 20 20 20 20 20 20 20 20 20 20 20 66 69 0a 20 20             fi.  
83a0: 20 20 20 20 20 20 66 69 0a 20 20 20 20 66 69 0a        fi.    fi.
83b0: 66 69 0a 0a 23 20 54 68 65 20 53 51 4c 49 54 45  fi..# The SQLITE
83c0: 5f 54 4d 50 44 49 52 20 6d 75 73 74 20 62 65 20  _TMPDIR must be 
83d0: 73 65 74 20 62 65 66 6f 72 65 20 74 68 65 20 46  set before the F
83e0: 6f 73 73 69 6c 0a 23 20 69 73 20 65 78 65 63 75  ossil.# is execu
83f0: 74 65 64 2e 0a 65 78 70 6f 72 74 20 53 51 4c 49  ted..export SQLI
8400: 54 45 5f 54 4d 50 44 49 52 3d 22 24 4d 4d 4d 56  TE_TMPDIR="$MMMV
8410: 5f 46 50 5f 46 4f 53 53 49 4c 5f 4f 50 45 52 41  _FP_FOSSIL_OPERA
8420: 54 4f 52 5f 54 4d 50 22 0a 0a 23 20 54 4f 44 4f  TOR_TMP"..# TODO
8430: 3a 20 41 64 64 20 61 20 63 68 65 63 6b 20 68 65  : Add a check he
8440: 72 65 20 74 68 61 74 20 76 65 72 69 66 69 65 73  re that verifies
8450: 20 74 68 61 74 20 74 68 65 72 65 27 73 20 65 6e   that there's en
8460: 6f 75 67 68 20 0a 23 20 20 20 20 20 20 20 73 70  ough .#       sp
8470: 61 63 65 20 61 76 61 69 6c 61 62 6c 65 20 61 74  ace available at
8480: 20 74 68 65 20 70 61 72 74 69 74 69 6f 6e 20 74   the partition t
8490: 68 61 74 20 69 73 20 75 73 65 64 20 62 79 20 74  hat is used by t
84a0: 68 65 20 0a 23 20 20 20 20 20 20 20 53 51 4c 69  he .#       SQLi
84b0: 74 65 2e 20 49 66 20 74 68 65 72 65 27 73 20 69  te. If there's i
84c0: 6e 73 75 66 66 69 63 69 65 6e 74 20 61 6d 6f 75  nsufficient amou
84d0: 6e 74 20 6f 66 20 66 72 65 65 20 73 70 61 63 65  nt of free space
84e0: 2c 0a 23 20 20 20 20 20 20 20 74 68 65 6e 20 74  ,.#       then t
84f0: 68 69 73 20 73 63 72 69 70 74 20 73 68 6f 75 6c  his script shoul
8500: 64 20 65 78 69 74 20 77 69 74 68 6f 75 74 20 65  d exit without e
8510: 78 65 63 75 74 69 6e 67 20 74 68 65 20 0a 23 20  xecuting the .# 
8520: 20 20 20 20 20 20 66 6f 73 73 69 6c 20 63 6f 6e        fossil con
8530: 73 6f 6c 65 20 61 70 70 6c 69 63 61 74 69 6f 6e  sole application
8540: 2e 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73  . The error mess
8550: 61 67 65 20 73 68 6f 75 6c 64 20 0a 23 20 20 20  age should .#   
8560: 20 20 20 20 65 78 70 6c 61 69 6e 20 74 68 65 20      explain the 
8570: 70 6f 73 73 69 62 69 6c 69 74 79 20 74 6f 20 73  possibility to s
8580: 65 74 20 74 68 65 20 53 51 4c 49 54 45 5f 54 4d  et the SQLITE_TM
8590: 50 44 49 52 20 61 6e 64 2f 6f 72 0a 23 20 20 20  PDIR and/or.#   
85a0: 20 20 20 20 74 68 65 20 53 51 4c 49 54 45 5f 54      the SQLITE_T
85b0: 4d 50 44 49 52 20 72 65 6c 61 74 65 64 20 63 69  MPDIR related ci
85c0: 72 63 75 6d 73 74 61 6e 63 65 73 2e 20 0a 0a 23  rcumstances. ..#
85d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
85e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
85f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8600: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8610: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 53 5f 54 4d 50  ----------.S_TMP
8620: 5f 30 3d 22 22 0a 53 5f 41 43 54 49 56 49 54 59  _0="".S_ACTIVITY
8630: 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 3d  _OF_THIS_SCRIPT=
8640: 24 31 0a 53 5f 55 52 4c 5f 52 45 4d 4f 54 45 5f  $1.S_URL_REMOTE_
8650: 52 45 50 4f 53 49 54 4f 52 59 3d 22 22 0a 53 42  REPOSITORY="".SB
8660: 5f 45 58 49 54 5f 57 49 54 48 5f 45 52 52 4f 52  _EXIT_WITH_ERROR
8670: 3d 22 66 22 0a 0a 23 20 6e 65 65 64 65 64 20 66  ="f"..# needed f
8680: 6f 72 20 73 63 72 69 70 74 61 62 69 6c 69 74 79  or scriptability
8690: 0a 53 5f 41 52 47 4e 41 4d 45 5f 41 43 54 49 56  .S_ARGNAME_ACTIV
86a0: 49 54 59 5f 53 48 52 45 44 5f 41 52 47 5f 32 3d  ITY_SHRED_ARG_2=
86b0: 22 64 6f 5f 6e 6f 74 5f 70 72 6f 6d 70 74 5f 66  "do_not_prompt_f
86c0: 6f 72 5f 63 6f 6e 66 69 72 6d 61 74 69 6f 6e 22  or_confirmation"
86d0: 20 0a 0a 66 75 6e 5f 70 72 69 6e 74 5f 6d 73 67   ..fun_print_msg
86e0: 5f 74 31 28 29 20 7b 0a 20 20 20 20 65 63 68 6f  _t1() {.    echo
86f0: 20 22 22 0a 20 20 20 20 65 63 68 6f 20 22 54 68   "".    echo "Th
8700: 65 20 73 65 63 6f 6e 64 20 63 6f 6e 73 6f 6c 65  e second console
8710: 20 61 72 67 75 6d 65 6e 74 20 22 0a 20 20 20 20   argument ".    
8720: 65 63 68 6f 20 22 69 73 20 65 78 70 65 63 74 65  echo "is expecte
8730: 64 20 74 6f 20 62 65 20 74 68 65 20 55 52 4c 20  d to be the URL 
8740: 6f 66 20 74 68 65 20 72 65 6d 6f 74 65 20 72 65  of the remote re
8750: 70 6f 73 69 74 6f 72 79 2e 22 0a 7d 20 23 20 66  pository.".} # f
8760: 75 6e 5f 70 72 69 6e 74 5f 6d 73 67 5f 74 31 0a  un_print_msg_t1.
8770: 0a 0a 66 75 6e 5f 65 78 69 74 5f 77 69 74 68 6f  ..fun_exit_witho
8780: 75 74 5f 61 6e 79 5f 65 72 72 6f 72 73 5f 74 31  ut_any_errors_t1
8790: 28 29 20 7b 0a 20 20 20 20 6c 6f 63 61 6c 20 58  () {.    local X
87a0: 5f 53 4b 49 50 5f 4d 45 53 53 41 47 45 3d 22 24  _SKIP_MESSAGE="$
87b0: 31 22 0a 20 20 20 20 69 66 20 5b 20 22 24 58 5f  1".    if [ "$X_
87c0: 53 4b 49 50 5f 4d 45 53 53 41 47 45 22 20 3d 3d  SKIP_MESSAGE" ==
87d0: 20 22 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20   "" ]; then.    
87e0: 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
87f0: 20 20 20 20 65 63 68 6f 20 22 41 62 6f 72 74 69      echo "Aborti
8800: 6e 67 20 73 63 72 69 70 74 20 77 69 74 68 6f 75  ng script withou
8810: 74 20 64 6f 69 6e 67 20 61 6e 79 74 68 69 6e 67  t doing anything
8820: 2e 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20  .".        echo 
8830: 22 22 0a 20 20 20 20 66 69 20 0a 20 20 20 20 23  "".    fi .    #
8840: 2d 2d 2d 2d 0a 20 20 20 20 63 64 20 24 53 5f 46  ----.    cd $S_F
8850: 50 5f 4f 52 49 47 0a 20 20 20 20 65 78 69 74 20  P_ORIG.    exit 
8860: 30 0a 7d 20 23 20 66 75 6e 5f 65 78 69 74 5f 77  0.} # fun_exit_w
8870: 69 74 68 6f 75 74 5f 61 6e 79 5f 65 72 72 6f 72  ithout_any_error
8880: 73 5f 74 31 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d  s_t1..#---------
8890: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
88a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
88b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
88c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
88d0: 2d 0a 0a 53 42 5f 46 55 4e 43 5f 4d 4d 4d 56 5f  -..SB_FUNC_MMMV_
88e0: 41 53 53 45 52 54 5f 46 49 4c 45 5f 50 41 54 48  ASSERT_FILE_PATH
88f0: 53 5f 44 49 46 46 45 52 5f 54 31 5f 41 53 53 45  S_DIFFER_T1_ASSE
8900: 52 54 49 4f 4e 5f 46 41 49 4c 45 44 3d 22 66 22  RTION_FAILED="f"
8910: 0a 66 75 6e 63 5f 6d 6d 6d 76 5f 61 73 73 65 72  .func_mmmv_asser
8920: 74 5f 66 69 6c 65 5f 70 61 74 68 73 5f 64 69 66  t_file_paths_dif
8930: 66 65 72 5f 74 31 28 29 7b 0a 20 20 20 20 6c 6f  fer_t1(){.    lo
8940: 63 61 6c 20 53 5f 46 50 5f 30 3d 22 24 31 22 0a  cal S_FP_0="$1".
8950: 20 20 20 20 6c 6f 63 61 6c 20 53 5f 46 50 5f 31      local S_FP_1
8960: 3d 22 24 32 22 0a 20 20 20 20 6c 6f 63 61 6c 20  ="$2".    local 
8970: 53 5f 47 55 49 44 3d 22 24 33 22 0a 20 20 20 20  S_GUID="$3".    
8980: 6c 6f 63 61 6c 20 53 42 5f 44 4f 5f 4e 4f 54 5f  local SB_DO_NOT_
8990: 54 52 48 4f 57 5f 4f 4e 5f 41 53 53 45 52 54 49  TRHOW_ON_ASSERTI
89a0: 4f 4e 5f 46 41 49 4c 55 52 45 3d 22 24 34 22 20  ON_FAILURE="$4" 
89b0: 23 20 64 6f 6d 61 69 6e 3a 20 7b 22 22 2c 22 66  # domain: {"","f
89c0: 22 2c 22 74 22 7d 0a 20 20 20 20 23 2d 2d 2d 2d  ","t"}.    #----
89d0: 2d 2d 2d 2d 0a 20 20 20 20 69 66 20 5b 20 22 24  ----.    if [ "$
89e0: 53 42 5f 44 4f 5f 4e 4f 54 5f 54 52 48 4f 57 5f  SB_DO_NOT_TRHOW_
89f0: 4f 4e 5f 41 53 53 45 52 54 49 4f 4e 5f 46 41 49  ON_ASSERTION_FAI
8a00: 4c 55 52 45 22 20 21 3d 20 22 22 20 5d 20 3b 20  LURE" != "" ] ; 
8a10: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 69 66 20  then.        if 
8a20: 5b 20 22 24 53 42 5f 44 4f 5f 4e 4f 54 5f 54 52  [ "$SB_DO_NOT_TR
8a30: 48 4f 57 5f 4f 4e 5f 41 53 53 45 52 54 49 4f 4e  HOW_ON_ASSERTION
8a40: 5f 46 41 49 4c 55 52 45 22 20 21 3d 20 22 74 22  _FAILURE" != "t"
8a50: 20 5d 20 3b 20 74 68 65 6e 0a 20 20 20 20 20 20   ] ; then.      
8a60: 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f        if [ "$SB_
8a70: 44 4f 5f 4e 4f 54 5f 54 52 48 4f 57 5f 4f 4e 5f  DO_NOT_TRHOW_ON_
8a80: 41 53 53 45 52 54 49 4f 4e 5f 46 41 49 4c 55 52  ASSERTION_FAILUR
8a90: 45 22 20 21 3d 20 22 66 22 20 5d 20 3b 20 74 68  E" != "f" ] ; th
8aa0: 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  en.             
8ab0: 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20     echo "".     
8ac0: 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20             echo 
8ad0: 22 54 68 65 20 66 6f 75 72 74 68 20 70 61 72 61  "The fourth para
8ae0: 6d 65 74 65 72 20 6f 66 20 74 68 69 73 20 66 75  meter of this fu
8af0: 6e 63 74 69 6f 6e 2c 20 74 68 65 20 22 0a 20 20  nction, the ".  
8b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
8b10: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  ho "".          
8b20: 20 20 20 20 20 20 65 63 68 6f 20 22 20 20 20 20        echo "    
8b30: 53 42 5f 44 4f 5f 4e 4f 54 5f 54 52 48 4f 57 5f  SB_DO_NOT_TRHOW_
8b40: 4f 4e 5f 41 53 53 45 52 54 49 4f 4e 5f 46 41 49  ON_ASSERTION_FAI
8b50: 4c 55 52 45 28 3d 3d 24 53 42 5f 44 4f 5f 4e 4f  LURE(==$SB_DO_NO
8b60: 54 5f 54 52 48 4f 57 5f 4f 4e 5f 41 53 53 45 52  T_TRHOW_ON_ASSER
8b70: 54 49 4f 4e 5f 46 41 49 4c 55 52 45 29 22 0a 20  TION_FAILURE)". 
8b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
8b90: 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20  cho "".         
8ba0: 20 20 20 20 20 20 20 65 63 68 6f 20 22 69 73 20         echo "is 
8bb0: 6f 70 74 69 6f 6e 61 6c 2c 20 62 75 74 20 69 74  optional, but it
8bc0: 73 20 72 61 6e 67 65 20 69 73 20 7b 5c 22 5c 22  s range is {\"\"
8bd0: 2c 5c 22 66 5c 22 2c 5c 22 74 5c 22 7d 2c 22 0a  ,\"f\",\"t\"},".
8be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8bf0: 65 63 68 6f 20 22 77 69 74 68 6f 75 74 20 74 68  echo "without th
8c00: 65 20 71 75 6f 74 61 74 69 6f 6e 20 6d 61 72 6b  e quotation mark
8c10: 73 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  s.".            
8c20: 20 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d      echo "GUID==
8c30: 27 31 33 38 65 31 30 62 35 2d 61 63 63 64 2d 34  '138e10b5-accd-4
8c40: 36 35 63 2d 62 63 31 35 2d 33 31 35 32 36 30 63  65c-bc15-315260c
8c50: 31 35 31 65 37 27 22 0a 20 20 20 20 20 20 20 20  151e7'".        
8c60: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
8c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c80: 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20  #----.          
8c90: 20 20 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f        cd $S_FP_O
8ca0: 52 49 47 0a 20 20 20 20 20 20 20 20 20 20 20 20  RIG.            
8cb0: 20 20 20 20 65 78 69 74 20 31 20 23 20 65 78 69      exit 1 # exi
8cc0: 74 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20  t with error.   
8cd0: 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20           fi.    
8ce0: 20 20 20 20 66 69 0a 20 20 20 20 65 6c 73 65 20      fi.    else 
8cf0: 23 20 24 53 42 5f 44 4f 5f 4e 4f 54 5f 54 52 48  # $SB_DO_NOT_TRH
8d00: 4f 57 5f 4f 4e 5f 41 53 53 45 52 54 49 4f 4e 5f  OW_ON_ASSERTION_
8d10: 46 41 49 4c 55 52 45 20 3d 3d 20 22 22 0a 20 20  FAILURE == "".  
8d20: 20 20 20 20 20 20 53 42 5f 44 4f 5f 4e 4f 54 5f        SB_DO_NOT_
8d30: 54 52 48 4f 57 5f 4f 4e 5f 41 53 53 45 52 54 49  TRHOW_ON_ASSERTI
8d40: 4f 4e 5f 46 41 49 4c 55 52 45 3d 22 66 22 0a 20  ON_FAILURE="f". 
8d50: 20 20 20 66 69 0a 20 20 20 20 53 42 5f 46 55 4e     fi.    SB_FUN
8d60: 43 5f 4d 4d 4d 56 5f 41 53 53 45 52 54 5f 46 49  C_MMMV_ASSERT_FI
8d70: 4c 45 5f 50 41 54 48 53 5f 44 49 46 46 45 52 5f  LE_PATHS_DIFFER_
8d80: 54 31 5f 41 53 53 45 52 54 49 4f 4e 5f 46 41 49  T1_ASSERTION_FAI
8d90: 4c 45 44 3d 22 66 22 20 23 20 67 6c 6f 62 61 6c  LED="f" # global
8da0: 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20  .    #--------. 
8db0: 20 20 20 23 20 54 68 65 20 62 6c 6f 63 6b 20 6f     # The block o
8dc0: 66 20 69 66 2d 65 6c 73 65 20 73 74 61 74 65 6d  f if-else statem
8dd0: 65 6e 74 73 20 66 6f 72 20 63 6f 6d 70 61 72 69  ents for compari
8de0: 6e 67 20 74 68 65 20 32 20 70 61 74 68 73 0a 20  ng the 2 paths. 
8df0: 20 20 20 23 20 69 73 20 73 6f 20 65 72 72 6f 72     # is so error
8e00: 20 70 72 6f 6e 65 20 74 6f 20 77 72 69 74 65 20   prone to write 
8e10: 74 68 61 74 20 74 68 69 73 20 66 75 6e 63 74 69  that this functi
8e20: 6f 6e 20 69 73 20 77 72 69 74 74 65 6e 20 0a 20  on is written . 
8e30: 20 20 20 23 20 61 63 63 6f 72 64 69 6e 67 20 74     # according t
8e40: 6f 20 61 20 73 63 68 65 6d 61 74 69 63 20 74 68  o a schematic th
8e50: 61 74 20 72 65 73 69 64 65 73 20 61 74 3a 0a 20  at resides at:. 
8e60: 20 20 20 23 20 68 74 74 70 3a 2f 2f 6c 6f 6e 67     # http://long
8e70: 74 65 72 6d 2e 73 6f 66 74 66 31 2e 63 6f 6d 2f  term.softf1.com/
8e80: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 5f 66 72  documentation_fr
8e90: 61 67 6d 65 6e 74 73 2f 32 30 31 36 5f 30 39 5f  agments/2016_09_
8ea0: 30 33 5f 63 6f 6d 70 61 72 69 73 6f 6e 5f 6f 66  03_comparison_of
8eb0: 5f 66 69 6c 65 5f 70 61 74 68 73 5f 74 31 2f 0a  _file_paths_t1/.
8ec0: 20 20 20 20 23 20 68 74 74 70 73 3a 2f 2f 61 72      # https://ar
8ed0: 63 68 69 76 65 2e 69 73 2f 52 34 79 77 39 0a 20  chive.is/R4yw9. 
8ee0: 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20     #--------.   
8ef0: 20 23 20 44 65 63 6c 61 72 61 74 69 6f 6e 73 3a   # Declarations:
8f00: 0a 20 20 20 20 6c 6f 63 61 6c 20 53 5f 47 55 49  .    local S_GUI
8f10: 44 5f 43 52 41 57 4c 3d 22 53 5f 47 55 49 44 5f  D_CRAWL="S_GUID_
8f20: 43 52 41 57 4c 20 6e 6f 74 20 73 65 74 22 20 23  CRAWL not set" #
8f30: 20 74 72 65 65 20 63 72 61 77 6c 69 6e 67 20 61   tree crawling a
8f40: 74 20 74 68 65 20 73 63 68 65 6d 61 74 69 63 0a  t the schematic.
8f50: 20 20 20 20 6c 6f 63 61 6c 20 53 5f 47 55 49 44      local S_GUID
8f60: 5f 43 4d 50 3d 22 53 5f 47 55 49 44 5f 43 4d 50  _CMP="S_GUID_CMP
8f70: 20 6e 6f 74 20 73 65 74 22 20 20 20 20 20 23 20   not set"     # 
8f80: 63 6f 6d 70 61 72 69 73 6f 6e 20 61 74 20 74 72  comparison at tr
8f90: 65 65 20 6c 65 61 66 0a 20 20 20 20 20 20 20 20  ee leaf.        
8fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fc0: 20 20 20 20 20 20 23 20 53 6f 6d 65 20 6c 65 61        # Some lea
8fd0: 76 65 73 20 61 72 65 20 65 71 75 69 76 61 6c 65  ves are equivale
8fe0: 6e 74 2e 0a 20 20 20 20 6c 6f 63 61 6c 20 53 5f  nt..    local S_
8ff0: 43 4f 4d 50 41 52 49 53 4f 4e 5f 4d 4f 44 45 3d  COMPARISON_MODE=
9000: 22 22 20 0a 20 20 20 20 6c 6f 63 61 6c 20 53 42  "" .    local SB
9010: 5f 54 48 52 4f 57 3d 22 66 22 20 0a 20 20 20 20  _THROW="f" .    
9020: 6c 6f 63 61 6c 20 53 42 5f 41 53 53 45 52 54 49  local SB_ASSERTI
9030: 4f 4e 5f 46 41 49 4c 45 44 3d 22 66 22 20 0a 20  ON_FAILED="f" . 
9040: 20 20 20 6c 6f 63 61 6c 20 53 42 5f 53 54 52 30     local SB_STR0
9050: 3d 22 66 22 20 23 20 77 68 65 74 68 65 72 20 53  ="f" # whether S
9060: 5f 46 50 5f 30 20 69 73 20 63 6f 6d 70 61 72 65  _FP_0 is compare
9070: 64 20 70 75 72 65 6c 79 20 61 73 20 61 20 73 74  d purely as a st
9080: 72 69 6e 67 0a 20 20 20 20 6c 6f 63 61 6c 20 53  ring.    local S
9090: 42 5f 53 54 52 31 3d 22 66 22 20 23 20 77 68 65  B_STR1="f" # whe
90a0: 74 68 65 72 20 53 5f 46 50 5f 31 20 69 73 20 63  ther S_FP_1 is c
90b0: 6f 6d 70 61 72 65 64 20 70 75 72 65 6c 79 20 61  ompared purely a
90c0: 73 20 61 20 73 74 72 69 6e 67 0a 20 20 20 20 6c  s a string.    l
90d0: 6f 63 61 6c 20 53 5f 46 50 5f 30 5f 53 54 52 3d  ocal S_FP_0_STR=
90e0: 22 24 53 5f 46 50 5f 30 22 20 0a 20 20 20 20 6c  "$S_FP_0" .    l
90f0: 6f 63 61 6c 20 53 5f 46 50 5f 31 5f 53 54 52 3d  ocal S_FP_1_STR=
9100: 22 24 53 5f 46 50 5f 31 22 0a 20 20 20 20 6c 6f  "$S_FP_1".    lo
9110: 63 61 6c 20 53 5f 46 50 5f 58 3d 22 22 20 23 20  cal S_FP_X="" # 
9120: 61 20 74 65 6d 70 6f 72 61 72 79 20 76 61 72 69  a temporary vari
9130: 61 62 6c 65 20 66 6f 72 20 68 6f 6c 64 69 6e 67  able for holding
9140: 20 70 61 74 68 20 76 61 6c 75 65 0a 20 20 20 20   path value.    
9150: 6c 6f 63 61 6c 20 53 5f 52 55 42 59 5f 53 52 43  local S_RUBY_SRC
9160: 5f 30 3d 22 22 0a 20 20 20 20 23 2d 2d 2d 2d 2d  _0="".    #-----
9170: 2d 2d 2d 0a 20 20 20 20 69 66 20 5b 20 22 24 53  ---.    if [ "$S
9180: 5f 46 50 5f 30 22 20 3d 3d 20 22 24 53 5f 46 50  _FP_0" == "$S_FP
9190: 5f 31 22 20 5d 3b 20 74 68 65 6e 20 0a 20 20 20  _1" ]; then .   
91a0: 20 20 20 20 20 23 20 43 6f 76 65 72 73 20 61 6c       # Covers al
91b0: 73 6f 20 74 68 65 20 63 61 73 65 2c 20 77 68 65  so the case, whe
91c0: 72 65 20 62 6f 74 68 20 61 72 65 20 65 78 69 73  re both are exis
91d0: 74 69 6e 67 20 0a 20 20 20 20 20 20 20 20 23 20  ting .        # 
91e0: 66 6f 6c 64 65 72 73 2c 20 62 75 74 20 74 68 65  folders, but the
91f0: 20 70 61 74 68 73 20 74 6f 20 74 68 65 6d 20 63   paths to them c
9200: 6f 6e 74 61 69 6e 73 20 22 2e 2e 2f 22 2e 0a 20  ontains "../".. 
9210: 20 20 20 20 20 20 20 23 20 42 79 20 6d 61 6b 69         # By maki
9220: 6e 67 20 74 68 65 20 73 74 72 69 6e 67 20 63 6f  ng the string co
9230: 6d 70 61 72 69 73 6f 6e 20 74 6f 20 62 65 20 74  mparison to be t
9240: 68 65 20 66 69 72 73 74 20 74 68 69 6e 67 20 74  he first thing t
9250: 72 69 65 64 20 0a 20 20 20 20 20 20 20 20 23 20  ried .        # 
9260: 61 20 66 65 77 20 66 69 6c 65 20 73 79 73 74 65  a few file syste
9270: 6d 20 61 63 63 65 73 73 65 73 20 6d 69 67 68 74  m accesses might
9280: 20 62 65 20 73 61 76 65 64 2e 0a 20 20 20 20 20   be saved..     
9290: 20 20 20 53 42 5f 41 53 53 45 52 54 49 4f 4e 5f     SB_ASSERTION_
92a0: 46 41 49 4c 45 44 3d 22 74 22 0a 20 20 20 20 20  FAILED="t".     
92b0: 20 20 20 53 5f 47 55 49 44 5f 43 52 41 57 4c 3d     S_GUID_CRAWL=
92c0: 22 34 61 65 66 36 65 33 33 2d 38 62 38 30 2d 34  "4aef6e33-8b80-4
92d0: 63 63 30 2d 38 37 34 64 2d 33 31 35 32 36 30 63  cc0-874d-315260c
92e0: 31 35 31 65 37 22 0a 20 20 20 20 20 20 20 20 53  151e7".        S
92f0: 5f 47 55 49 44 5f 43 4d 50 3d 22 31 37 33 66 65  _GUID_CMP="173fe
9300: 63 36 30 2d 35 35 65 31 2d 34 66 62 36 2d 38 66  c60-55e1-4fb6-8f
9310: 31 64 2d 33 31 35 32 36 30 63 31 35 31 65 37 22  1d-315260c151e7"
9320: 0a 20 20 20 20 65 6c 73 65 20 23 20 74 68 65 20  .    else # the 
9330: 72 65 73 74 20 6f 66 20 74 68 65 20 33 20 63 6f  rest of the 3 co
9340: 6d 70 61 72 69 73 6f 6e 20 6d 6f 64 65 73 0a 20  mparison modes. 
9350: 20 20 20 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d         #--------
9360: 0a 20 20 20 20 20 20 20 20 69 66 20 5b 20 2d 65  .        if [ -e
9370: 20 24 53 5f 46 50 5f 30 20 5d 3b 20 74 68 65 6e   $S_FP_0 ]; then
9380: 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66   .            if
9390: 20 5b 20 2d 64 20 24 53 5f 46 50 5f 30 20 5d 3b   [ -d $S_FP_0 ];
93a0: 20 74 68 65 6e 20 0a 20 20 20 20 20 20 20 20 20   then .         
93b0: 20 20 20 20 20 20 20 69 66 20 5b 20 2d 65 20 24         if [ -e $
93c0: 53 5f 46 50 5f 31 20 5d 3b 20 74 68 65 6e 20 0a  S_FP_1 ]; then .
93d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93e0: 20 20 20 20 69 66 20 5b 20 2d 64 20 24 53 5f 46      if [ -d $S_F
93f0: 50 5f 31 20 5d 3b 20 74 68 65 6e 20 0a 20 20 20  P_1 ]; then .   
9400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9410: 20 20 20 20 20 53 5f 43 4f 4d 50 41 52 49 53 4f       S_COMPARISO
9420: 4e 5f 4d 4f 44 45 3d 22 63 6d 6f 64 65 5f 63 64  N_MODE="cmode_cd
9430: 30 5f 63 64 31 22 0a 20 20 20 20 20 20 20 20 20  0_cd1".         
9440: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
9450: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9460: 20 20 20 20 20 20 20 20 20 53 5f 43 4f 4d 50 41           S_COMPA
9470: 52 49 53 4f 4e 5f 4d 4f 44 45 3d 22 63 6d 6f 64  RISON_MODE="cmod
9480: 65 5f 63 64 30 5f 73 74 72 31 22 0a 20 20 20 20  e_cd0_str1".    
9490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94a0: 20 20 20 20 53 42 5f 53 54 52 31 3d 22 74 22 0a      SB_STR1="t".
94b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94c0: 20 20 20 20 66 69 20 0a 20 20 20 20 20 20 20 20      fi .        
94d0: 20 20 20 20 20 20 20 20 65 6c 73 65 20 0a 20 20          else .  
94e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94f0: 20 20 53 5f 43 4f 4d 50 41 52 49 53 4f 4e 5f 4d    S_COMPARISON_M
9500: 4f 44 45 3d 22 63 6d 6f 64 65 5f 63 64 30 5f 73  ODE="cmode_cd0_s
9510: 74 72 31 22 0a 20 20 20 20 20 20 20 20 20 20 20  tr1".           
9520: 20 20 20 20 20 20 20 20 20 53 42 5f 53 54 52 31           SB_STR1
9530: 3d 22 74 22 0a 20 20 20 20 20 20 20 20 20 20 20  ="t".           
9540: 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20       fi.        
9550: 20 20 20 20 65 6c 73 65 20 0a 20 20 20 20 20 20      else .      
9560: 20 20 20 20 20 20 20 20 20 20 69 66 20 5b 20 2d            if [ -
9570: 65 20 24 53 5f 46 50 5f 31 20 5d 3b 20 74 68 65  e $S_FP_1 ]; the
9580: 6e 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n .             
9590: 20 20 20 20 20 20 20 69 66 20 5b 20 2d 64 20 24         if [ -d $
95a0: 53 5f 46 50 5f 31 20 5d 3b 20 74 68 65 6e 20 0a  S_FP_1 ]; then .
95b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95c0: 20 20 20 20 20 20 20 20 53 5f 43 4f 4d 50 41 52          S_COMPAR
95d0: 49 53 4f 4e 5f 4d 4f 44 45 3d 22 63 6d 6f 64 65  ISON_MODE="cmode
95e0: 5f 73 74 72 30 5f 63 64 31 22 0a 20 20 20 20 20  _str0_cd1".     
95f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9600: 20 20 20 53 42 5f 53 54 52 30 3d 22 74 22 0a 20     SB_STR0="t". 
9610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9620: 20 20 20 65 6c 73 65 20 0a 20 20 20 20 20 20 20     else .       
9630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9640: 20 53 5f 43 4f 4d 50 41 52 49 53 4f 4e 5f 4d 4f   S_COMPARISON_MO
9650: 44 45 3d 22 63 6d 6f 64 65 5f 73 74 72 30 5f 73  DE="cmode_str0_s
9660: 74 72 31 22 0a 20 20 20 20 20 20 20 20 20 20 20  tr1".           
9670: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 42 5f               SB_
9680: 53 54 52 30 3d 22 74 22 0a 20 20 20 20 20 20 20  STR0="t".       
9690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96a0: 20 53 42 5f 53 54 52 31 3d 22 74 22 0a 20 20 20   SB_STR1="t".   
96b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96c0: 20 66 69 20 0a 20 20 20 20 20 20 20 20 20 20 20   fi .           
96d0: 20 20 20 20 20 65 6c 73 65 20 0a 20 20 20 20 20       else .     
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
96f0: 5f 43 4f 4d 50 41 52 49 53 4f 4e 5f 4d 4f 44 45  _COMPARISON_MODE
9700: 3d 22 63 6d 6f 64 65 5f 73 74 72 30 5f 73 74 72  ="cmode_str0_str
9710: 31 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  1".             
9720: 20 20 20 20 20 20 20 53 42 5f 53 54 52 30 3d 22         SB_STR0="
9730: 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t".             
9740: 20 20 20 20 20 20 20 53 42 5f 53 54 52 31 3d 22         SB_STR1="
9750: 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t".             
9760: 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 20 20     fi.          
9770: 20 20 66 69 0a 20 20 20 20 20 20 20 20 65 6c 73    fi.        els
9780: 65 20 23 20 24 53 5f 46 50 5f 30 20 69 73 20 6d  e # $S_FP_0 is m
9790: 69 73 73 69 6e 67 20 6f 72 20 69 74 20 69 73 20  issing or it is 
97a0: 61 20 62 72 6f 6b 65 6e 20 73 79 6d 62 6f 6c 69  a broken symboli
97b0: 63 20 6c 69 6e 6b 0a 20 20 20 20 20 20 20 20 20  c link.         
97c0: 20 20 20 69 66 20 5b 20 2d 65 20 24 53 5f 46 50     if [ -e $S_FP
97d0: 5f 31 20 5d 3b 20 74 68 65 6e 20 0a 20 20 20 20  _1 ]; then .    
97e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b              if [
97f0: 20 2d 64 20 24 53 5f 46 50 5f 31 20 5d 3b 20 74   -d $S_FP_1 ]; t
9800: 68 65 6e 20 0a 20 20 20 20 20 20 20 20 20 20 20  hen .           
9810: 20 20 20 20 20 20 20 20 20 53 5f 43 4f 4d 50 41           S_COMPA
9820: 52 49 53 4f 4e 5f 4d 4f 44 45 3d 22 63 6d 6f 64  RISON_MODE="cmod
9830: 65 5f 73 74 72 30 5f 63 64 31 22 0a 20 20 20 20  e_str0_cd1".    
9840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9850: 53 42 5f 53 54 52 30 3d 22 74 22 0a 20 20 20 20  SB_STR0="t".    
9860: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
9870: 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
9880: 20 20 20 20 20 20 53 5f 43 4f 4d 50 41 52 49 53        S_COMPARIS
9890: 4f 4e 5f 4d 4f 44 45 3d 22 63 6d 6f 64 65 5f 73  ON_MODE="cmode_s
98a0: 74 72 30 5f 73 74 72 31 22 0a 20 20 20 20 20 20  tr0_str1".      
98b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 42                SB
98c0: 5f 53 54 52 30 3d 22 74 22 0a 20 20 20 20 20 20  _STR0="t".      
98d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 42                SB
98e0: 5f 53 54 52 31 3d 22 74 22 0a 20 20 20 20 20 20  _STR1="t".      
98f0: 20 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20            fi.   
9900: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 0a 20           else . 
9910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
9920: 5f 43 4f 4d 50 41 52 49 53 4f 4e 5f 4d 4f 44 45  _COMPARISON_MODE
9930: 3d 22 63 6d 6f 64 65 5f 73 74 72 30 5f 73 74 72  ="cmode_str0_str
9940: 31 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  1".             
9950: 20 20 20 53 42 5f 53 54 52 30 3d 22 74 22 0a 20     SB_STR0="t". 
9960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
9970: 42 5f 53 54 52 31 3d 22 74 22 0a 20 20 20 20 20  B_STR1="t".     
9980: 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20         fi.      
9990: 20 20 66 69 0a 20 20 20 20 20 20 20 20 23 2d 2d    fi.        #--
99a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 20  --------------  
99b0: 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23        .        #
99c0: 20 54 68 65 20 22 63 6d 6f 64 65 5f 73 74 72 30   The "cmode_str0
99d0: 5f 73 74 72 31 22 20 77 61 73 20 74 72 69 65 64  _str1" was tried
99e0: 20 0a 20 20 20 20 20 20 20 20 23 20 61 74 20 74   .        # at t
99f0: 68 65 20 66 69 72 73 74 20 69 66 2d 63 6c 61 75  he first if-clau
9a00: 73 65 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 2c  se of the block,
9a10: 20 62 75 74 20 0a 20 20 20 20 20 20 20 20 23 20   but .        # 
9a20: 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 63 61  that does not ca
9a30: 74 63 68 20 65 71 75 69 76 61 6c 65 6e 74 20 63  tch equivalent c
9a40: 61 73 65 73 20 6c 69 6b 65 20 0a 20 20 20 20 20  ases like .     
9a50: 20 20 20 23 0a 20 20 20 20 20 20 20 20 23 20 20     #.        #  
9a60: 20 20 20 53 5f 46 50 5f 30 3d 22 60 70 77 64 60     S_FP_0="`pwd`
9a70: 2f 2e 2f 2e 2f 2f 2f 2f 2f 61 5f 6e 6f 6e 65 78  /././////a_nonex
9a80: 69 73 74 69 6e 67 5f 66 69 6c 65 5f 6f 72 5f 66  isting_file_or_f
9a90: 6f 6c 64 65 72 22 0a 20 20 20 20 20 20 20 20 23  older".        #
9aa0: 20 20 20 20 20 53 5f 46 50 5f 31 3d 22 60 70 77       S_FP_1="`pw
9ab0: 64 60 2f 61 5f 6e 6f 6e 65 78 69 73 74 69 6e 67  d`/a_nonexisting
9ac0: 5f 66 69 6c 65 5f 6f 72 5f 66 6f 6c 64 65 72 22  _file_or_folder"
9ad0: 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20 20 20  .        #.     
9ae0: 20 20 20 23 20 20 20 20 20 53 5f 46 50 5f 30 3d     #     S_FP_0=
9af0: 22 2e 2f 61 5f 6e 6f 6e 65 78 69 73 74 69 6e 67  "./a_nonexisting
9b00: 5f 66 69 6c 65 5f 6f 72 5f 66 6f 6c 64 65 72 22  _file_or_folder"
9b10: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 53  .        #     S
9b20: 5f 46 50 5f 31 3d 22 2e 2f 2e 2f 2e 2f 2e 2f 2e  _FP_1="././././.
9b30: 2f 2e 2f 61 5f 6e 6f 6e 65 78 69 73 74 69 6e 67  /./a_nonexisting
9b40: 5f 66 69 6c 65 5f 6f 72 5f 66 6f 6c 64 65 72 22  _file_or_folder"
9b50: 0a 20 20 20 20 20 20 20 20 23 0a 20 20 20 20 20  .        #.     
9b60: 20 20 20 23 20 20 20 20 20 53 5f 46 50 5f 30 3d     #     S_FP_0=
9b70: 22 2f 61 5f 6e 6f 6e 65 78 69 73 74 69 6e 67 5f  "/a_nonexisting_
9b80: 66 69 6c 65 5f 6f 72 5f 66 6f 6c 64 65 72 22 0a  file_or_folder".
9b90: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 53 5f          #     S_
9ba0: 46 50 5f 31 3d 22 2f 2f 2f 2f 2f 61 5f 6e 6f 6e  FP_1="/////a_non
9bb0: 65 78 69 73 74 69 6e 67 5f 66 69 6c 65 5f 6f 72  existing_file_or
9bc0: 5f 66 6f 6c 64 65 72 22 0a 20 20 20 20 20 20 20  _folder".       
9bd0: 20 23 0a 20 20 20 20 20 20 20 20 23 20 20 20 20   #.        #    
9be0: 20 53 5f 46 50 5f 30 3d 22 2f 61 5f 6e 6f 6e 65   S_FP_0="/a_none
9bf0: 78 69 73 74 69 6e 67 5f 66 69 6c 65 5f 6f 72 5f  xisting_file_or_
9c00: 66 6f 6c 64 65 72 22 0a 20 20 20 20 20 20 20 20  folder".        
9c10: 23 20 20 20 20 20 53 5f 46 50 5f 31 3d 22 2f 2e  #     S_FP_1="/.
9c20: 2e 2f 2f 2f 2e 2e 2f 61 5f 6e 6f 6e 65 78 69 73  .///../a_nonexis
9c30: 74 69 6e 67 5f 66 69 6c 65 5f 6f 72 5f 66 6f 6c  ting_file_or_fol
9c40: 64 65 72 22 0a 20 20 20 20 20 20 20 20 23 0a 20  der".        #. 
9c50: 20 20 20 20 20 20 20 23 20 53 74 72 69 6e 67 20         # String 
9c60: 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 20 69 73  normalization is
9c70: 20 72 65 71 75 69 72 65 64 20 77 68 65 6e 65 76   required whenev
9c80: 65 72 20 61 74 20 6c 65 61 73 74 0a 20 20 20 20  er at least.    
9c90: 20 20 20 20 23 20 6f 6e 65 20 6f 66 20 74 68 65      # one of the
9ca0: 20 70 61 74 68 73 20 69 73 20 75 73 65 64 20 61   paths is used a
9cb0: 74 20 63 6f 6d 70 61 72 69 73 6f 6e 20 0a 20 20  t comparison .  
9cc0: 20 20 20 20 20 20 23 20 70 75 72 65 6c 79 20 61        # purely a
9cd0: 73 20 61 20 73 74 72 69 6e 67 2e 0a 20 20 20 20  s a string..    
9ce0: 20 20 20 20 23 0a 20 20 20 20 20 20 20 20 23 2d      #.        #-
9cf0: 2d 2d 2d 73 74 61 72 74 2d 6f 66 2d 52 75 62 79  ---start-of-Ruby
9d00: 2d 73 63 72 69 70 74 2d 68 65 61 64 65 72 2d 2d  -script-header--
9d10: 66 6f 72 2d 63 6f 70 79 2f 70 61 73 74 69 6e 67  for-copy/pasting
9d20: 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 23 20 20  ----.        #  
9d30: 20 20 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76    #!/usr/bin/env
9d40: 20 72 75 62 79 0a 20 20 20 20 20 20 20 20 23 20   ruby.        # 
9d50: 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 20 20     .        #   
9d60: 20 73 5f 66 70 5f 30 3d 22 2e 2f 61 5f 6e 6f 6e   s_fp_0="./a_non
9d70: 65 78 69 73 74 69 6e 67 5f 66 69 6c 65 5f 6f 72  existing_file_or
9d80: 5f 66 6f 6c 64 65 72 22 0a 20 20 20 20 20 20 20  _folder".       
9d90: 20 23 20 20 20 20 73 5f 66 70 5f 31 3d 22 2e 2f   #    s_fp_1="./
9da0: 2e 2f 2e 2e 2f 2f 2e 2e 2f 2e 2e 2f 2e 2f 61 5f  ./..//../.././a_
9db0: 6e 6f 6e 65 78 69 73 74 69 6e 67 5f 66 69 6c 65  nonexisting_file
9dc0: 5f 6f 72 5f 66 6f 6c 64 65 72 22 0a 20 20 20 20  _or_folder".    
9dd0: 20 20 20 20 23 20 20 20 20 0a 20 20 20 20 20 20      #    .      
9de0: 20 20 23 20 20 20 20 23 20 54 68 65 20 70 61 74    #    # The pat
9df0: 68 20 22 2f 2e 2e 2f 66 6f 6f 22 20 69 73 20 65  h "/../foo" is e
9e00: 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 22 2f 66  quivalent to "/f
9e10: 6f 6f 22 2e 0a 20 20 20 20 20 20 20 20 23 20 20  oo"..        #  
9e20: 20 20 73 5f 66 70 5f 32 3d 22 2f 2e 2f 2e 2f 2e    s_fp_2="/././.
9e30: 2e 2f 2f 2e 2e 2f 2e 2e 2f 2e 2f 61 5f 6e 6f 6e  .//../.././a_non
9e40: 65 78 69 73 74 69 6e 67 5f 66 69 6c 65 5f 6f 72  existing_file_or
9e50: 5f 66 6f 6c 64 65 72 22 0a 20 20 20 20 20 20 20  _folder".       
9e60: 20 23 20 20 20 20 0a 20 20 20 20 20 20 20 20 23   #    .        #
9e70: 20 20 20 20 23 20 54 68 69 73 20 73 63 72 69 70      # This scrip
9e80: 74 20 64 6f 65 73 20 6e 6f 74 20 63 6f 76 65 72  t does not cover
9e90: 20 74 68 65 20 63 61 73 65 2c 20 0a 20 20 20 20   the case, .    
9ea0: 20 20 20 20 23 20 20 20 20 23 20 77 68 65 72 65      #    # where
9eb0: 20 22 2e 2f 61 61 2f 2e 2e 2f 62 62 22 20 69 73   "./aa/../bb" is
9ec0: 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 22   equivalent to "
9ed0: 2e 2f 62 62 22 0a 20 20 20 20 20 20 20 20 23 2d  ./bb".        #-
9ee0: 2d 2d 2d 65 6e 64 2d 2d 2d 6f 66 2d 52 75 62 79  ---end---of-Ruby
9ef0: 2d 73 63 72 69 70 74 2d 68 65 61 64 65 72 2d 66  -script-header-f
9f00: 6f 72 2d 63 6f 70 79 2f 70 61 73 74 69 6e 67 2d  or-copy/pasting-
9f10: 2d 2d 2d 0a 20 20 20 20 20 20 20 20 53 5f 52 55  ---.        S_RU
9f20: 42 59 5f 53 52 43 5f 30 3d 22 5c 0a 20 20 20 20  BY_SRC_0="\.    
9f30: 20 20 20 20 20 20 20 20 73 5f 30 3d 27 27 3b 5c          s_0='';\
9f40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 5f 31  .            s_1
9f50: 3d 41 52 47 56 5b 30 5d 2e 74 6f 5f 73 3b 5c 0a  =ARGV[0].to_s;\.
9f60: 20 20 20 20 20 20 20 20 20 20 20 20 72 67 78 5f              rgx_
9f70: 30 3d 2f 5b 5c 5c 2f 5d 5b 2e 5d 5b 5c 5c 2f 5d  0=/[\\/][.][\\/]
9f80: 2f 3b 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20  /;\.            
9f90: 72 67 78 5f 31 3d 2f 5e 5b 2e 5d 5b 5c 5c 2f 5d  rgx_1=/^[.][\\/]
9fa0: 2f 3b 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20  /;\.            
9fb0: 72 67 78 5f 32 3d 2f 5e 5b 5c 5c 2f 5d 5b 2e 5d  rgx_2=/^[\\/][.]
9fc0: 5b 2e 5d 5b 5c 5c 2f 5d 2f 3b 5c 0a 20 20 20 20  [.][\\/]/;\.    
9fd0: 20 20 20 20 20 20 20 20 69 5f 34 73 61 66 65 74          i_4safet
9fe0: 79 3d 30 3b 5c 0a 20 20 20 20 20 20 20 20 20 20  y=0;\.          
9ff0: 20 20 77 68 69 6c 65 20 73 5f 30 21 3d 73 5f 31    while s_0!=s_1
a000: 20 64 6f 20 3b 5c 0a 20 20 20 20 20 20 20 20 20   do ;\.         
a010: 20 20 20 20 20 20 73 5f 30 3d 73 5f 31 3b 5c 0a        s_0=s_1;\.
a020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
a030: 5f 31 3d 73 5f 30 2e 67 73 75 62 28 72 67 78 5f  _1=s_0.gsub(rgx_
a040: 30 2c 27 2f 27 29 3b 5c 0a 20 20 20 20 20 20 20  0,'/');\.       
a050: 20 20 20 20 20 20 20 20 69 5f 34 73 61 66 65 74          i_4safet
a060: 79 3d 69 5f 34 73 61 66 65 74 79 2b 31 3b 5c 0a  y=i_4safety+1;\.
a070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
a080: 66 20 31 30 30 30 30 3c 69 5f 34 73 61 66 65 74  f 10000<i_4safet
a090: 79 20 74 68 65 6e 20 3b 5c 0a 20 20 20 20 20 20  y then ;\.      
a0a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73              rais
a0b0: 65 28 45 78 63 65 70 74 69 6f 6e 2e 6e 65 77 28  e(Exception.new(
a0c0: 27 62 6f 6f 27 29 29 3b 5c 0a 20 20 20 20 20 20  'boo'));\.      
a0d0: 20 20 20 20 20 20 20 20 20 65 6e 64 3b 5c 0a 20           end;\. 
a0e0: 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 20 3b             end ;
a0f0: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 5f  \.            s_
a100: 30 3d 73 5f 31 3b 5c 0a 20 20 20 20 20 20 20 20  0=s_1;\.        
a110: 20 20 20 20 73 5f 31 3d 73 5f 30 2e 67 73 75 62      s_1=s_0.gsub
a120: 28 72 67 78 5f 31 2c 27 27 29 3b 5c 0a 20 20 20  (rgx_1,'');\.   
a130: 20 20 20 20 20 20 20 20 20 73 5f 30 3d 73 5f 31           s_0=s_1
a140: 3b 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ;\.            s
a150: 5f 31 3d 73 5f 30 2e 67 73 75 62 28 2f 5b 5c 5c  _1=s_0.gsub(/[\\
a160: 2f 5d 2b 2f 2c 27 2f 27 29 3b 5c 0a 20 20 20 20  /]+/,'/');\.    
a170: 20 20 20 20 20 20 20 20 3b 5c 0a 20 20 20 20 20          ;\.     
a180: 20 20 20 20 20 20 20 3b 5c 0a 20 20 20 20 20 20         ;\.      
a190: 20 20 20 20 20 20 69 5f 34 73 61 66 65 74 79 3d        i_4safety=
a1a0: 30 3b 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;\.            
a1b0: 77 68 69 6c 65 20 73 5f 30 21 3d 73 5f 31 20 64  while s_0!=s_1 d
a1c0: 6f 20 3b 5c 0a 20 20 20 20 20 20 20 20 20 20 20  o ;\.           
a1d0: 20 20 20 20 73 5f 30 3d 73 5f 31 3b 5c 0a 20 20      s_0=s_1;\.  
a1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 5f 31               s_1
a1f0: 3d 73 5f 30 2e 67 73 75 62 28 72 67 78 5f 32 2c  =s_0.gsub(rgx_2,
a200: 27 2f 27 29 3b 5c 0a 20 20 20 20 20 20 20 20 20  '/');\.         
a210: 20 20 20 20 20 20 69 5f 34 73 61 66 65 74 79 3d        i_4safety=
a220: 69 5f 34 73 61 66 65 74 79 2b 31 3b 5c 0a 20 20  i_4safety+1;\.  
a230: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
a240: 31 30 30 30 30 3c 69 5f 34 73 61 66 65 74 79 20  10000<i_4safety 
a250: 74 68 65 6e 20 3b 5c 0a 20 20 20 20 20 20 20 20  then ;\.        
a260: 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 28            raise(
a270: 45 78 63 65 70 74 69 6f 6e 2e 6e 65 77 28 27 65  Exception.new('e
a280: 38 38 39 34 62 62 35 2d 65 30 62 62 2d 34 61 63  8894bb5-e0bb-4ac
a290: 65 2d 62 31 33 35 2d 33 31 35 32 36 30 63 31 35  e-b135-315260c15
a2a0: 31 65 37 27 29 29 3b 5c 0a 20 20 20 20 20 20 20  1e7'));\.       
a2b0: 20 20 20 20 20 20 20 20 65 6e 64 3b 5c 0a 20 20          end;\.  
a2c0: 20 20 20 20 20 20 20 20 20 20 65 6e 64 20 3b 5c            end ;\
a2d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 5f 30  .            s_0
a2e0: 3d 73 5f 31 3b 5c 0a 20 20 20 20 20 20 20 20 20  =s_1;\.         
a2f0: 20 20 20 73 5f 31 3d 73 5f 30 2e 67 73 75 62 28     s_1=s_0.gsub(
a300: 72 67 78 5f 31 2c 27 27 29 3b 5c 0a 20 20 20 20  rgx_1,'');\.    
a310: 20 20 20 20 20 20 20 20 73 5f 30 3d 73 5f 31 3b          s_0=s_1;
a320: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 5f  \.            s_
a330: 31 3d 73 5f 30 2e 67 73 75 62 28 2f 5b 5c 5c 2f  1=s_0.gsub(/[\\/
a340: 5d 2b 2f 2c 27 2f 27 29 3b 5c 0a 20 20 20 20 20  ]+/,'/');\.     
a350: 20 20 20 20 20 20 20 3b 5c 0a 20 20 20 20 20 20         ;\.      
a360: 20 20 20 20 20 20 70 72 69 6e 74 20 73 5f 31 3b        print s_1;
a370: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 0a  \.            ".
a380: 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20          #----.  
a390: 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f        if [ "$SB_
a3a0: 53 54 52 30 22 20 3d 3d 20 22 74 22 20 5d 3b 20  STR0" == "t" ]; 
a3b0: 74 68 65 6e 20 0a 20 20 20 20 20 20 20 20 20 20  then .          
a3c0: 20 20 53 5f 46 50 5f 30 5f 53 54 52 3d 22 60 72    S_FP_0_STR="`r
a3d0: 75 62 79 20 2d 65 20 5c 22 24 53 5f 52 55 42 59  uby -e \"$S_RUBY
a3e0: 5f 53 52 43 5f 30 5c 22 20 24 53 5f 46 50 5f 30  _SRC_0\" $S_FP_0
a3f0: 60 22 0a 20 20 20 20 20 20 20 20 66 69 0a 20 20  `".        fi.  
a400: 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f        if [ "$SB_
a410: 53 54 52 31 22 20 3d 3d 20 22 74 22 20 5d 3b 20  STR1" == "t" ]; 
a420: 74 68 65 6e 20 0a 20 20 20 20 20 20 20 20 20 20  then .          
a430: 20 20 53 5f 46 50 5f 31 5f 53 54 52 3d 22 60 72    S_FP_1_STR="`r
a440: 75 62 79 20 2d 65 20 5c 22 24 53 5f 52 55 42 59  uby -e \"$S_RUBY
a450: 5f 53 52 43 5f 30 5c 22 20 24 53 5f 46 50 5f 31  _SRC_0\" $S_FP_1
a460: 60 22 0a 20 20 20 20 20 20 20 20 66 69 0a 20 20  `".        fi.  
a470: 20 20 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 2d        #---------
a480: 2d 2d 2d 2d 2d 2d 2d 20 20 20 20 20 20 20 20 0a  -------        .
a490: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53          if [ "$S
a4a0: 5f 43 4f 4d 50 41 52 49 53 4f 4e 5f 4d 4f 44 45  _COMPARISON_MODE
a4b0: 22 20 3d 3d 20 22 63 6d 6f 64 65 5f 63 64 30 5f  " == "cmode_cd0_
a4c0: 73 74 72 31 22 20 5d 3b 20 74 68 65 6e 20 0a 20  str1" ]; then . 
a4d0: 20 20 20 20 20 20 20 20 20 20 20 23 20 32 20 63             # 2 c
a4e0: 61 73 65 73 20 61 74 20 74 68 65 20 73 63 68 65  ases at the sche
a4f0: 6d 61 74 69 63 0a 20 20 20 20 20 20 20 20 20 20  matic.          
a500: 20 20 53 5f 46 50 5f 58 3d 22 60 63 64 20 24 53    S_FP_X="`cd $S
a510: 5f 46 50 5f 30 3b 70 77 64 60 22 0a 20 20 20 20  _FP_0;pwd`".    
a520: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53          if [ "$S
a530: 5f 46 50 5f 58 22 20 3d 3d 20 22 24 53 5f 46 50  _FP_X" == "$S_FP
a540: 5f 31 5f 53 54 52 22 20 5d 3b 20 74 68 65 6e 20  _1_STR" ]; then 
a550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a560: 20 53 42 5f 41 53 53 45 52 54 49 4f 4e 5f 46 41   SB_ASSERTION_FA
a570: 49 4c 45 44 3d 22 74 22 0a 20 20 20 20 20 20 20  ILED="t".       
a580: 20 20 20 20 20 20 20 20 20 53 5f 47 55 49 44 5f           S_GUID_
a590: 43 4d 50 3d 22 61 62 34 33 61 30 30 30 2d 33 31  CMP="ab43a000-31
a5a0: 64 36 2d 34 63 39 61 2d 39 66 34 63 2d 33 31 35  d6-4c9a-9f4c-315
a5b0: 32 36 30 63 31 35 31 65 37 22 0a 20 20 20 20 20  260c151e7".     
a5c0: 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20         fi.      
a5d0: 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f        if [ "$SB_
a5e0: 41 53 53 45 52 54 49 4f 4e 5f 46 41 49 4c 45 44  ASSERTION_FAILED
a5f0: 22 20 21 3d 20 22 74 22 20 5d 3b 20 74 68 65 6e  " != "t" ]; then
a600: 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
a610: 20 20 69 66 20 5b 20 22 24 53 5f 46 50 5f 58 22    if [ "$S_FP_X"
a620: 20 3d 3d 20 22 24 53 5f 46 50 5f 31 22 20 5d 3b   == "$S_FP_1" ];
a630: 20 74 68 65 6e 20 23 20 6a 75 73 74 20 69 6e 20   then # just in 
a640: 63 61 73 65 0a 20 20 20 20 20 20 20 20 20 20 20  case.           
a650: 20 20 20 20 20 20 20 20 20 53 42 5f 41 53 53 45           SB_ASSE
a660: 52 54 49 4f 4e 5f 46 41 49 4c 45 44 3d 22 74 22  RTION_FAILED="t"
a670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a680: 20 20 20 20 20 53 5f 47 55 49 44 5f 43 4d 50 3d       S_GUID_CMP=
a690: 22 30 33 61 32 35 38 66 63 2d 35 64 66 31 2d 34  "03a258fc-5df1-4
a6a0: 32 33 65 2d 61 38 38 63 2d 33 31 35 32 36 30 63  23e-a88c-315260c
a6b0: 31 35 31 65 37 22 0a 20 20 20 20 20 20 20 20 20  151e7".         
a6c0: 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20         fi.      
a6d0: 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20        fi.       
a6e0: 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20   else.          
a6f0: 20 20 69 66 20 5b 20 22 24 53 5f 43 4f 4d 50 41    if [ "$S_COMPA
a700: 52 49 53 4f 4e 5f 4d 4f 44 45 22 20 3d 3d 20 22  RISON_MODE" == "
a710: 63 6d 6f 64 65 5f 73 74 72 30 5f 63 64 31 22 20  cmode_str0_cd1" 
a720: 5d 3b 20 74 68 65 6e 20 0a 20 20 20 20 20 20 20  ]; then .       
a730: 20 20 20 20 20 20 20 20 20 23 20 32 20 63 61 73           # 2 cas
a740: 65 73 20 61 74 20 74 68 65 20 73 63 68 65 6d 61  es at the schema
a750: 74 69 63 0a 20 20 20 20 20 20 20 20 20 20 20 20  tic.            
a760: 20 20 20 20 53 5f 46 50 5f 58 3d 22 60 63 64 20      S_FP_X="`cd 
a770: 24 53 5f 46 50 5f 31 3b 70 77 64 60 22 0a 20 20  $S_FP_1;pwd`".  
a780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
a790: 20 5b 20 22 24 53 5f 46 50 5f 30 5f 53 54 52 22   [ "$S_FP_0_STR"
a7a0: 20 3d 3d 20 22 24 53 5f 46 50 5f 58 22 20 5d 3b   == "$S_FP_X" ];
a7b0: 20 74 68 65 6e 20 0a 20 20 20 20 20 20 20 20 20   then .         
a7c0: 20 20 20 20 20 20 20 20 20 20 20 53 42 5f 41 53             SB_AS
a7d0: 53 45 52 54 49 4f 4e 5f 46 41 49 4c 45 44 3d 22  SERTION_FAILED="
a7e0: 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t".             
a7f0: 20 20 20 20 20 20 20 53 5f 47 55 49 44 5f 43 4d         S_GUID_CM
a800: 50 3d 22 33 35 38 32 37 66 31 35 2d 62 36 35 63  P="35827f15-b65c
a810: 2d 34 62 62 63 2d 61 63 31 63 2d 33 31 35 32 36  -4bbc-ac1c-31526
a820: 30 63 31 35 31 65 37 22 0a 20 20 20 20 20 20 20  0c151e7".       
a830: 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20           fi.    
a840: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b              if [
a850: 20 22 24 53 42 5f 41 53 53 45 52 54 49 4f 4e 5f   "$SB_ASSERTION_
a860: 46 41 49 4c 45 44 22 20 21 3d 20 22 74 22 20 5d  FAILED" != "t" ]
a870: 3b 20 74 68 65 6e 20 0a 20 20 20 20 20 20 20 20  ; then .        
a880: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b              if [
a890: 20 22 24 53 5f 46 50 5f 30 22 20 3d 3d 20 22 24   "$S_FP_0" == "$
a8a0: 53 5f 46 50 5f 58 22 20 5d 3b 20 74 68 65 6e 20  S_FP_X" ]; then 
a8b0: 23 20 6a 75 73 74 20 69 6e 20 63 61 73 65 0a 20  # just in case. 
a8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a8d0: 20 20 20 20 20 20 20 53 42 5f 41 53 53 45 52 54         SB_ASSERT
a8e0: 49 4f 4e 5f 46 41 49 4c 45 44 3d 22 74 22 0a 20  ION_FAILED="t". 
a8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a900: 20 20 20 20 20 20 20 53 5f 47 55 49 44 5f 43 4d         S_GUID_CM
a910: 50 3d 22 35 35 37 65 30 62 38 34 2d 32 32 32 34  P="557e0b84-2224
a920: 2d 34 33 38 35 2d 62 35 61 62 2d 33 31 35 32 36  -4385-b5ab-31526
a930: 30 63 31 35 31 65 37 22 0a 20 20 20 20 20 20 20  0c151e7".       
a940: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a               fi.
a950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a960: 66 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  fi.            e
a970: 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  lse.            
a980: 20 20 20 20 69 66 20 5b 20 22 24 53 5f 43 4f 4d      if [ "$S_COM
a990: 50 41 52 49 53 4f 4e 5f 4d 4f 44 45 22 20 3d 3d  PARISON_MODE" ==
a9a0: 20 22 63 6d 6f 64 65 5f 63 64 30 5f 63 64 31 22   "cmode_cd0_cd1"
a9b0: 20 5d 3b 20 74 68 65 6e 20 0a 20 20 20 20 20 20   ]; then .      
a9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
a9d0: 20 5b 20 22 60 63 64 20 24 53 5f 46 50 5f 30 3b   [ "`cd $S_FP_0;
a9e0: 70 77 64 60 22 20 3d 3d 20 22 60 63 64 20 24 53  pwd`" == "`cd $S
a9f0: 5f 46 50 5f 31 3b 70 77 64 60 22 20 5d 3b 20 74  _FP_1;pwd`" ]; t
aa00: 68 65 6e 20 0a 20 20 20 20 20 20 20 20 20 20 20  hen .           
aa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 42 5f               SB_
aa20: 41 53 53 45 52 54 49 4f 4e 5f 46 41 49 4c 45 44  ASSERTION_FAILED
aa30: 3d 22 74 22 0a 20 20 20 20 20 20 20 20 20 20 20  ="t".           
aa40: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 5f 47               S_G
aa50: 55 49 44 5f 43 4d 50 3d 22 33 33 62 33 65 30 34  UID_CMP="33b3e04
aa60: 63 2d 64 64 62 63 2d 34 34 65 61 2d 61 38 65 62  c-ddbc-44ea-a8eb
aa70: 2d 33 31 35 32 36 30 63 31 35 31 65 37 22 0a 20  -315260c151e7". 
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa90: 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 20 20     fi.          
aaa0: 20 20 20 20 20 20 65 6c 73 65 20 0a 20 20 20 20        else .    
aab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aac0: 69 66 20 5b 20 22 24 53 5f 43 4f 4d 50 41 52 49  if [ "$S_COMPARI
aad0: 53 4f 4e 5f 4d 4f 44 45 22 20 3d 3d 20 22 63 6d  SON_MODE" == "cm
aae0: 6f 64 65 5f 73 74 72 30 5f 73 74 72 31 22 20 5d  ode_str0_str1" ]
aaf0: 3b 20 74 68 65 6e 20 0a 20 20 20 20 20 20 20 20  ; then .        
ab00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab10: 69 66 20 5b 20 22 24 53 5f 46 50 5f 30 5f 53 54  if [ "$S_FP_0_ST
ab20: 52 22 20 3d 3d 20 22 24 53 5f 46 50 5f 31 5f 53  R" == "$S_FP_1_S
ab30: 54 52 22 20 5d 3b 20 74 68 65 6e 20 0a 20 20 20  TR" ]; then .   
ab40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab50: 20 20 20 20 20 20 20 20 20 53 42 5f 41 53 53 45           SB_ASSE
ab60: 52 54 49 4f 4e 5f 46 41 49 4c 45 44 3d 22 74 22  RTION_FAILED="t"
ab70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ab80: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 5f 47               S_G
ab90: 55 49 44 5f 43 4d 50 3d 22 33 33 63 34 63 65 62  UID_CMP="33c4ceb
aba0: 32 2d 63 39 36 38 2d 34 38 39 30 2d 61 62 31 62  2-c968-4890-ab1b
abb0: 2d 33 31 35 32 36 30 63 31 35 31 65 37 22 0a 20  -315260c151e7". 
abc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
abd0: 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20         fi.      
abe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
abf0: 20 20 23 20 54 68 65 20 69 66 20 5b 20 22 24 53    # The if [ "$S
ac00: 5f 46 50 5f 30 22 20 3d 3d 20 22 24 53 5f 46 50  _FP_0" == "$S_FP
ac10: 5f 31 22 20 5d 20 2e 2e 2e 0a 20 20 20 20 20 20  _1" ] ....      
ac20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac30: 20 20 23 20 68 61 73 20 61 6c 72 65 61 64 79 20    # has already 
ac40: 62 65 65 6e 20 74 72 69 65 64 20 61 74 20 74 68  been tried at th
ac50: 65 20 76 65 72 79 20 73 74 61 72 74 20 0a 20 20  e very start .  
ac60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac70: 20 20 20 20 20 20 23 20 6f 66 20 74 68 65 20 68        # of the h
ac80: 75 67 65 20 69 66 2d 62 6c 6f 63 6b 2e 0a 20 20  uge if-block..  
ac90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aca0: 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20    else.         
acb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
acc0: 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20  cho "".         
acd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
ace0: 63 68 6f 20 22 54 68 69 73 20 73 63 72 69 70 74  cho "This script
acf0: 20 69 73 20 66 6c 61 77 65 64 2e 22 0a 20 20 20   is flawed.".   
ad00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad10: 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
ad20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad30: 20 20 20 20 20 65 63 68 6f 20 22 20 20 20 20 53       echo "    S
ad40: 5f 46 50 5f 30 3d 24 53 5f 46 50 5f 30 22 0a 20  _FP_0=$S_FP_0". 
ad50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad60: 20 20 20 20 20 20 20 65 63 68 6f 20 22 20 20 20         echo "   
ad70: 20 53 5f 46 50 5f 31 3d 24 53 5f 46 50 5f 31 22   S_FP_1=$S_FP_1"
ad80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ad90: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 20           echo " 
ada0: 20 20 20 53 5f 47 55 49 44 5f 43 52 41 57 4c 3d     S_GUID_CRAWL=
adb0: 24 53 5f 47 55 49 44 5f 43 52 41 57 4c 22 0a 20  $S_GUID_CRAWL". 
adc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
add0: 20 20 20 20 20 20 20 65 63 68 6f 20 22 20 20 20         echo "   
ade0: 20 53 5f 47 55 49 44 5f 43 4d 50 3d 24 53 5f 47   S_GUID_CMP=$S_G
adf0: 55 49 44 5f 43 4d 50 22 0a 20 20 20 20 20 20 20  UID_CMP".       
ae00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae10: 20 65 63 68 6f 20 22 20 20 20 20 53 5f 43 4f 4d   echo "    S_COM
ae20: 50 41 52 49 53 4f 4e 5f 4d 4f 44 45 3d 24 53 5f  PARISON_MODE=$S_
ae30: 43 4f 4d 50 41 52 49 53 4f 4e 5f 4d 4f 44 45 22  COMPARISON_MODE"
ae40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ae50: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22           echo ""
ae60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ae70: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 47           echo "G
ae80: 55 49 44 3d 3d 27 34 65 39 37 65 33 32 35 2d 32  UID=='4e97e325-2
ae90: 65 30 62 2d 34 63 63 36 2d 38 32 34 35 2d 33 31  e0b-4cc6-8245-31
aea0: 35 32 36 30 63 31 35 31 65 37 27 22 0a 20 20 20  5260c151e7'".   
aeb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aec0: 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
aed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aee0: 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20       #----.     
aef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af00: 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49 47     cd $S_FP_ORIG
af10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
af20: 20 20 20 20 20 20 20 20 20 65 78 69 74 20 31 20           exit 1 
af30: 23 20 65 78 69 74 20 77 69 74 68 20 65 72 72 6f  # exit with erro
af40: 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  r.              
af50: 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20        fi.       
af60: 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20           fi.    
af70: 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20          fi.     
af80: 20 20 20 66 69 0a 20 20 20 20 66 69 0a 20 20 20     fi.    fi.   
af90: 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 53   #--------.    S
afa0: 42 5f 46 55 4e 43 5f 4d 4d 4d 56 5f 41 53 53 45  B_FUNC_MMMV_ASSE
afb0: 52 54 5f 46 49 4c 45 5f 50 41 54 48 53 5f 44 49  RT_FILE_PATHS_DI
afc0: 46 46 45 52 5f 54 31 5f 41 53 53 45 52 54 49 4f  FFER_T1_ASSERTIO
afd0: 4e 5f 46 41 49 4c 45 44 3d 22 24 53 42 5f 41 53  N_FAILED="$SB_AS
afe0: 53 45 52 54 49 4f 4e 5f 46 41 49 4c 45 44 22 20  SERTION_FAILED" 
aff0: 23 20 67 6c 6f 62 61 6c 0a 20 20 20 20 69 66 20  # global.    if 
b000: 5b 20 22 24 53 42 5f 41 53 53 45 52 54 49 4f 4e  [ "$SB_ASSERTION
b010: 5f 46 41 49 4c 45 44 22 20 3d 3d 20 22 74 22 20  _FAILED" == "t" 
b020: 5d 3b 20 74 68 65 6e 20 0a 20 20 20 20 20 20 20  ]; then .       
b030: 20 69 66 20 5b 20 22 24 53 42 5f 44 4f 5f 4e 4f   if [ "$SB_DO_NO
b040: 54 5f 54 52 48 4f 57 5f 4f 4e 5f 41 53 53 45 52  T_TRHOW_ON_ASSER
b050: 54 49 4f 4e 5f 46 41 49 4c 55 52 45 22 20 21 3d  TION_FAILURE" !=
b060: 20 22 74 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20   "t" ]; then.   
b070: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22           echo ""
b080: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68  .            ech
b090: 6f 20 22 54 68 65 20 66 69 6c 65 20 70 61 74 68  o "The file path
b0a0: 73 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  s ".            
b0b0: 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
b0c0: 20 20 20 20 65 63 68 6f 20 22 20 20 20 20 53 5f      echo "    S_
b0d0: 46 50 5f 30 3d 24 53 5f 46 50 5f 30 22 0a 20 20  FP_0=$S_FP_0".  
b0e0: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
b0f0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63  ".            ec
b100: 68 6f 20 22 20 20 20 20 53 5f 46 50 5f 31 3d 24  ho "    S_FP_1=$
b110: 53 5f 46 50 5f 31 22 0a 20 20 20 20 20 20 20 20  S_FP_1".        
b120: 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
b130: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 61 72          echo "ar
b140: 65 20 72 65 71 75 69 72 65 64 20 74 6f 20 64 69  e required to di
b150: 66 66 65 72 20 61 6e 64 20 22 0a 20 20 20 20 20  ffer and ".     
b160: 20 20 20 20 20 20 20 65 63 68 6f 20 22 74 68 65         echo "the
b170: 79 20 61 72 65 20 72 65 71 75 69 72 65 64 20 74  y are required t
b180: 6f 20 64 69 66 66 65 72 20 61 6c 73 6f 20 61 66  o differ also af
b190: 74 65 72 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f  ter normalizatio
b1a0: 6e 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  n.".            
b1b0: 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
b1c0: 20 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d      echo "GUID==
b1d0: 27 62 31 61 30 38 63 61 31 2d 39 32 66 34 2d 34  'b1a08ca1-92f4-4
b1e0: 34 32 37 2d 62 39 31 35 2d 33 31 35 32 36 30 63  427-b915-315260c
b1f0: 31 35 31 65 37 27 22 0a 20 20 20 20 20 20 20 20  151e7'".        
b200: 20 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d      echo "GUID==
b210: 27 24 53 5f 47 55 49 44 5f 43 4d 50 27 22 20 20  '$S_GUID_CMP'"  
b220: 20 23 20 63 6f 6d 70 61 72 69 73 6f 6e 0a 20 20   # comparison.  
b230: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
b240: 47 55 49 44 3d 3d 27 24 53 5f 47 55 49 44 5f 43  GUID=='$S_GUID_C
b250: 52 41 57 4c 27 22 20 23 20 74 72 65 65 20 63 72  RAWL'" # tree cr
b260: 61 77 6c 69 6e 67 20 61 74 20 74 68 65 20 73 63  awling at the sc
b270: 68 65 6d 61 74 69 63 0a 20 20 20 20 20 20 20 20  hematic.        
b280: 20 20 20 20 69 66 20 5b 20 22 24 53 5f 47 55 49      if [ "$S_GUI
b290: 44 22 20 21 3d 20 22 22 20 5d 3b 20 74 68 65 6e  D" != "" ]; then
b2a0: 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
b2b0: 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d 27 24    echo "GUID=='$
b2c0: 53 5f 47 55 49 44 27 22 20 20 20 23 20 47 55 49  S_GUID'"   # GUI
b2d0: 44 20 61 73 20 61 6e 20 69 6e 70 75 74 20 70 61  D as an input pa
b2e0: 72 61 6d 65 74 65 72 0a 20 20 20 20 20 20 20 20  rameter.        
b2f0: 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 20      fi.         
b300: 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20     echo "".     
b310: 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20         #----.   
b320: 20 20 20 20 20 20 20 20 20 63 64 20 24 53 5f 46           cd $S_F
b330: 50 5f 4f 52 49 47 0a 20 20 20 20 20 20 20 20 20  P_ORIG.         
b340: 20 20 20 65 78 69 74 20 31 20 23 20 65 78 69 74     exit 1 # exit
b350: 20 77 69 74 68 20 65 72 72 6f 72 0a 20 20 20 20   with error.    
b360: 20 20 20 20 66 69 0a 20 20 20 20 66 69 0a 7d 20      fi.    fi.} 
b370: 23 20 66 75 6e 63 5f 6d 6d 6d 76 5f 61 73 73 65  # func_mmmv_asse
b380: 72 74 5f 66 69 6c 65 5f 70 61 74 68 73 5f 64 69  rt_file_paths_di
b390: 66 66 65 72 5f 74 31 0a 0a 0a 23 2d 2d 2d 2d 2d  ffer_t1...#-----
b3a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
b3b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
b3c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
b3d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
b3e0: 2d 2d 2d 2d 2d 0a 23 20 41 63 74 69 76 69 74 79  -----.# Activity
b3f0: 20 61 6c 69 61 73 65 73 20 66 6f 72 20 63 6f 6d   aliases for com
b400: 66 6f 72 74 2e 0a 0a 69 66 20 5b 20 22 24 53 5f  fort...if [ "$S_
b410: 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48 49 53  ACTIVITY_OF_THIS
b420: 5f 53 43 52 49 50 54 22 20 3d 3d 20 22 75 70 22  _SCRIPT" == "up"
b430: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 53 5f 41   ]; then.    S_A
b440: 43 54 49 56 49 54 59 5f 4f 46 5f 54 48 49 53 5f  CTIVITY_OF_THIS_
b450: 53 43 52 49 50 54 3d 22 6f 76 65 72 77 72 69 74  SCRIPT="overwrit
b460: 65 5f 72 65 6d 6f 74 65 5f 77 69 74 68 5f 6c 6f  e_remote_with_lo
b470: 63 61 6c 22 0a 66 69 0a 69 66 20 5b 20 22 24 53  cal".fi.if [ "$S
b480: 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48 49  _ACTIVITY_OF_THI
b490: 53 5f 53 43 52 49 50 54 22 20 3d 3d 20 22 75 70  S_SCRIPT" == "up
b4a0: 6c 6f 61 64 22 20 5d 3b 20 74 68 65 6e 0a 20 20  load" ]; then.  
b4b0: 20 20 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f    S_ACTIVITY_OF_
b4c0: 54 48 49 53 5f 53 43 52 49 50 54 3d 22 6f 76 65  THIS_SCRIPT="ove
b4d0: 72 77 72 69 74 65 5f 72 65 6d 6f 74 65 5f 77 69  rwrite_remote_wi
b4e0: 74 68 5f 6c 6f 63 61 6c 22 0a 66 69 0a 69 66 20  th_local".fi.if 
b4f0: 5b 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f 4f  [ "$S_ACTIVITY_O
b500: 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20 3d  F_THIS_SCRIPT" =
b510: 3d 20 22 63 69 22 20 5d 3b 20 74 68 65 6e 0a 20  = "ci" ]; then. 
b520: 20 20 20 53 5f 41 43 54 49 56 49 54 59 5f 4f 46     S_ACTIVITY_OF
b530: 5f 54 48 49 53 5f 53 43 52 49 50 54 3d 22 6f 76  _THIS_SCRIPT="ov
b540: 65 72 77 72 69 74 65 5f 72 65 6d 6f 74 65 5f 77  erwrite_remote_w
b550: 69 74 68 5f 6c 6f 63 61 6c 22 0a 66 69 0a 23 2d  ith_local".fi.#-
b560: 2d 2d 2d 2d 2d 2d 2d 0a 69 66 20 5b 20 22 24 53  -------.if [ "$S
b570: 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48 49  _ACTIVITY_OF_THI
b580: 53 5f 53 43 52 49 50 54 22 20 3d 3d 20 22 64 6f  S_SCRIPT" == "do
b590: 77 6e 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20  wn" ]; then.    
b5a0: 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48  S_ACTIVITY_OF_TH
b5b0: 49 53 5f 53 43 52 49 50 54 3d 22 6f 76 65 72 77  IS_SCRIPT="overw
b5c0: 72 69 74 65 5f 6c 6f 63 61 6c 5f 77 69 74 68 5f  rite_local_with_
b5d0: 72 65 6d 6f 74 65 22 0a 66 69 0a 69 66 20 5b 20  remote".fi.if [ 
b5e0: 22 24 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f  "$S_ACTIVITY_OF_
b5f0: 54 48 49 53 5f 53 43 52 49 50 54 22 20 3d 3d 20  THIS_SCRIPT" == 
b600: 22 64 6f 77 6e 6c 6f 61 64 22 20 5d 3b 20 74 68  "download" ]; th
b610: 65 6e 0a 20 20 20 20 53 5f 41 43 54 49 56 49 54  en.    S_ACTIVIT
b620: 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54  Y_OF_THIS_SCRIPT
b630: 3d 22 6f 76 65 72 77 72 69 74 65 5f 6c 6f 63 61  ="overwrite_loca
b640: 6c 5f 77 69 74 68 5f 72 65 6d 6f 74 65 22 0a 66  l_with_remote".f
b650: 69 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 69 66 20 5b  i.#--------.if [
b660: 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f 4f 46   "$S_ACTIVITY_OF
b670: 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20 3d 3d  _THIS_SCRIPT" ==
b680: 20 22 63 6f 22 20 5d 3b 20 74 68 65 6e 0a 20 20   "co" ]; then.  
b690: 20 20 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f    S_ACTIVITY_OF_
b6a0: 54 48 49 53 5f 53 43 52 49 50 54 3d 22 63 6c 6f  THIS_SCRIPT="clo
b6b0: 6e 65 5f 61 6c 6c 22 0a 66 69 0a 23 2d 2d 2d 2d  ne_all".fi.#----
b6c0: 2d 2d 2d 2d 0a 69 66 20 5b 20 22 24 53 5f 41 43  ----.if [ "$S_AC
b6d0: 54 49 56 49 54 59 5f 4f 46 5f 54 48 49 53 5f 53  TIVITY_OF_THIS_S
b6e0: 43 52 49 50 54 22 20 3d 3d 20 22 3f 22 20 5d 3b  CRIPT" == "?" ];
b6f0: 20 74 68 65 6e 0a 20 20 20 20 53 5f 41 43 54 49   then.    S_ACTI
b700: 56 49 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52  VITY_OF_THIS_SCR
b710: 49 50 54 3d 22 68 65 6c 70 22 0a 66 69 0a 69 66  IPT="help".fi.if
b720: 20 5b 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f   [ "$S_ACTIVITY_
b730: 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20  OF_THIS_SCRIPT" 
b740: 3d 3d 20 22 2d 3f 22 20 5d 3b 20 74 68 65 6e 0a  == "-?" ]; then.
b750: 20 20 20 20 53 5f 41 43 54 49 56 49 54 59 5f 4f      S_ACTIVITY_O
b760: 46 5f 54 48 49 53 5f 53 43 52 49 50 54 3d 22 68  F_THIS_SCRIPT="h
b770: 65 6c 70 22 0a 66 69 0a 69 66 20 5b 20 22 24 53  elp".fi.if [ "$S
b780: 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48 49  _ACTIVITY_OF_THI
b790: 53 5f 53 43 52 49 50 54 22 20 3d 3d 20 22 2d 2d  S_SCRIPT" == "--
b7a0: 68 65 6c 70 22 20 5d 3b 20 74 68 65 6e 0a 20 20  help" ]; then.  
b7b0: 20 20 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f    S_ACTIVITY_OF_
b7c0: 54 48 49 53 5f 53 43 52 49 50 54 3d 22 68 65 6c  THIS_SCRIPT="hel
b7d0: 70 22 0a 66 69 0a 69 66 20 5b 20 22 24 53 5f 41  p".fi.if [ "$S_A
b7e0: 43 54 49 56 49 54 59 5f 4f 46 5f 54 48 49 53 5f  CTIVITY_OF_THIS_
b7f0: 53 43 52 49 50 54 22 20 3d 3d 20 22 2d 68 65 6c  SCRIPT" == "-hel
b800: 70 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 53  p" ]; then.    S
b810: 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48 49  _ACTIVITY_OF_THI
b820: 53 5f 53 43 52 49 50 54 3d 22 68 65 6c 70 22 0a  S_SCRIPT="help".
b830: 66 69 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 69 66 20  fi.#--------.if 
b840: 5b 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f 4f  [ "$S_ACTIVITY_O
b850: 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20 3d  F_THIS_SCRIPT" =
b860: 3d 20 22 72 6d 22 20 5d 3b 20 74 68 65 6e 0a 20  = "rm" ]; then. 
b870: 20 20 20 53 5f 41 43 54 49 56 49 54 59 5f 4f 46     S_ACTIVITY_OF
b880: 5f 54 48 49 53 5f 53 43 52 49 50 54 3d 22 64 65  _THIS_SCRIPT="de
b890: 6c 65 74 65 5f 6c 6f 63 61 6c 5f 63 6f 70 79 22  lete_local_copy"
b8a0: 0a 66 69 0a 69 66 20 5b 20 22 24 53 5f 41 43 54  .fi.if [ "$S_ACT
b8b0: 49 56 49 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43  IVITY_OF_THIS_SC
b8c0: 52 49 50 54 22 20 3d 3d 20 22 64 65 6c 22 20 5d  RIPT" == "del" ]
b8d0: 3b 20 74 68 65 6e 0a 20 20 20 20 53 5f 41 43 54  ; then.    S_ACT
b8e0: 49 56 49 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43  IVITY_OF_THIS_SC
b8f0: 52 49 50 54 3d 22 64 65 6c 65 74 65 5f 6c 6f 63  RIPT="delete_loc
b900: 61 6c 5f 63 6f 70 79 22 0a 66 69 0a 69 66 20 5b  al_copy".fi.if [
b910: 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f 4f 46   "$S_ACTIVITY_OF
b920: 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20 3d 3d  _THIS_SCRIPT" ==
b930: 20 22 64 65 6c 65 74 65 22 20 5d 3b 20 74 68 65   "delete" ]; the
b940: 6e 0a 20 20 20 20 53 5f 41 43 54 49 56 49 54 59  n.    S_ACTIVITY
b950: 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 3d  _OF_THIS_SCRIPT=
b960: 22 64 65 6c 65 74 65 5f 6c 6f 63 61 6c 5f 63 6f  "delete_local_co
b970: 70 79 22 0a 66 69 0a 23 2d 2d 2d 2d 2d 2d 2d 2d  py".fi.#--------
b980: 0a 69 66 20 5b 20 22 24 53 5f 41 43 54 49 56 49  .if [ "$S_ACTIVI
b990: 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50  TY_OF_THIS_SCRIP
b9a0: 54 22 20 3d 3d 20 22 69 6e 66 6f 22 20 5d 3b 20  T" == "info" ]; 
b9b0: 74 68 65 6e 0a 20 20 20 20 53 5f 41 43 54 49 56  then.    S_ACTIV
b9c0: 49 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49  ITY_OF_THIS_SCRI
b9d0: 50 54 3d 22 61 62 6f 75 74 22 0a 66 69 0a 69 66  PT="about".fi.if
b9e0: 20 5b 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f   [ "$S_ACTIVITY_
b9f0: 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20  OF_THIS_SCRIPT" 
ba00: 3d 3d 20 22 2d 2d 69 6e 66 6f 22 20 5d 3b 20 74  == "--info" ]; t
ba10: 68 65 6e 0a 20 20 20 20 53 5f 41 43 54 49 56 49  hen.    S_ACTIVI
ba20: 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50  TY_OF_THIS_SCRIP
ba30: 54 3d 22 61 62 6f 75 74 22 0a 66 69 0a 69 66 20  T="about".fi.if 
ba40: 5b 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f 4f  [ "$S_ACTIVITY_O
ba50: 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20 3d  F_THIS_SCRIPT" =
ba60: 3d 20 22 2d 69 6e 66 6f 22 20 5d 3b 20 74 68 65  = "-info" ]; the
ba70: 6e 0a 20 20 20 20 53 5f 41 43 54 49 56 49 54 59  n.    S_ACTIVITY
ba80: 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 3d  _OF_THIS_SCRIPT=
ba90: 22 61 62 6f 75 74 22 0a 66 69 0a 69 66 20 5b 20  "about".fi.if [ 
baa0: 22 24 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f  "$S_ACTIVITY_OF_
bab0: 54 48 49 53 5f 53 43 52 49 50 54 22 20 3d 3d 20  THIS_SCRIPT" == 
bac0: 22 2d 2d 61 62 6f 75 74 22 20 5d 3b 20 74 68 65  "--about" ]; the
bad0: 6e 0a 20 20 20 20 53 5f 41 43 54 49 56 49 54 59  n.    S_ACTIVITY
bae0: 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 3d  _OF_THIS_SCRIPT=
baf0: 22 61 62 6f 75 74 22 0a 66 69 0a 69 66 20 5b 20  "about".fi.if [ 
bb00: 22 24 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f  "$S_ACTIVITY_OF_
bb10: 54 48 49 53 5f 53 43 52 49 50 54 22 20 3d 3d 20  THIS_SCRIPT" == 
bb20: 22 2d 61 62 6f 75 74 22 20 5d 3b 20 74 68 65 6e  "-about" ]; then
bb30: 0a 20 20 20 20 53 5f 41 43 54 49 56 49 54 59 5f  .    S_ACTIVITY_
bb40: 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 3d 22  OF_THIS_SCRIPT="
bb50: 61 62 6f 75 74 22 0a 66 69 0a 23 2d 2d 2d 2d 2d  about".fi.#-----
bb60: 2d 2d 2d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ---.#-----------
bb70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
bb80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
bb90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
bba0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
bbb0: 69 66 20 5b 20 22 24 53 5f 41 43 54 49 56 49 54  if [ "$S_ACTIVIT
bbc0: 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54  Y_OF_THIS_SCRIPT
bbd0: 22 20 3d 3d 20 22 61 62 6f 75 74 22 20 5d 3b 20  " == "about" ]; 
bbe0: 74 68 65 6e 0a 20 20 20 20 65 63 68 6f 20 22 22  then.    echo ""
bbf0: 0a 20 20 20 20 65 63 68 6f 20 22 20 20 20 20 54  .    echo "    T
bc00: 68 65 20 69 6e 69 74 69 61 6c 20 76 65 72 73 69  he initial versi
bc10: 6f 6e 20 6f 66 20 74 68 69 73 20 73 63 72 69 70  on of this scrip
bc20: 74 20 68 61 73 20 62 65 65 6e 20 77 72 69 74 74  t has been writt
bc30: 65 6e 20 62 79 20 22 0a 20 20 20 20 65 63 68 6f  en by ".    echo
bc40: 20 22 20 20 20 20 4d 61 72 74 69 6e 2e 56 61 68   "    Martin.Vah
bc50: 69 40 73 6f 66 74 66 31 2e 63 6f 6d 20 20 20 20  i@softf1.com    
bc60: 20 20 20 20 20 22 0a 20 20 20 20 65 63 68 6f 20       ".    echo 
bc70: 22 20 20 20 20 69 6e 20 32 30 31 36 5f 30 32 2e  "    in 2016_02.
bc80: 20 54 68 65 20 69 6e 69 74 69 61 6c 20 76 65 72   The initial ver
bc90: 73 69 6f 6e 20 69 73 20 69 6e 20 70 75 62 6c 69  sion is in publi
bca0: 63 20 64 6f 6d 61 69 6e 2e 22 0a 20 20 20 20 65  c domain.".    e
bcb0: 63 68 6f 20 22 20 20 20 20 54 68 65 20 63 6f 6d  cho "    The com
bcc0: 6d 61 6e 64 20 5c 22 68 65 6c 70 5c 22 20 6f 66  mand \"help\" of
bcd0: 66 65 72 73 20 6d 6f 72 65 20 69 6e 66 6f 72 6d  fers more inform
bce0: 61 74 69 6f 6e 2e 20 22 0a 20 20 20 20 65 63 68  ation. ".    ech
bcf0: 6f 20 22 22 0a 20 20 20 20 65 63 68 6f 20 22 20  o "".    echo " 
bd00: 20 20 20 54 68 61 6e 6b 20 59 6f 75 20 66 6f 72     Thank You for
bd10: 20 75 73 69 6e 67 20 74 68 69 73 20 73 63 72 69   using this scri
bd20: 70 74 20 3a 2d 29 22 0a 20 20 20 20 65 63 68 6f  pt :-)".    echo
bd30: 20 22 22 0a 20 20 20 20 65 63 68 6f 20 22 22 0a   "".    echo "".
bd40: 20 20 20 20 66 75 6e 5f 65 78 69 74 5f 77 69 74      fun_exit_wit
bd50: 68 6f 75 74 5f 61 6e 79 5f 65 72 72 6f 72 73 5f  hout_any_errors_
bd60: 74 31 20 22 74 22 0a 66 69 20 0a 23 2d 2d 2d 2d  t1 "t".fi .#----
bd70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
bd80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
bd90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
bda0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
bdb0: 2d 2d 2d 2d 2d 2d 0a 69 66 20 5b 20 22 24 53 5f  ------.if [ "$S_
bdc0: 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48 49 53  ACTIVITY_OF_THIS
bdd0: 5f 53 43 52 49 50 54 22 20 3d 3d 20 22 65 78 69  _SCRIPT" == "exi
bde0: 74 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 66  t" ]; then.    f
bdf0: 75 6e 5f 65 78 69 74 5f 77 69 74 68 6f 75 74 5f  un_exit_without_
be00: 61 6e 79 5f 65 72 72 6f 72 73 5f 74 31 0a 65 6c  any_errors_t1.el
be10: 73 65 0a 20 20 20 20 69 66 20 5b 20 22 24 53 5f  se.    if [ "$S_
be20: 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48 49 53  ACTIVITY_OF_THIS
be30: 5f 53 43 52 49 50 54 22 20 3d 3d 20 22 63 6c 6f  _SCRIPT" == "clo
be40: 6e 65 5f 61 6c 6c 22 20 5d 3b 20 74 68 65 6e 0a  ne_all" ]; then.
be50: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 32          if [ "$2
be60: 22 20 3d 3d 20 22 22 20 5d 3b 20 74 68 65 6e 0a  " == "" ]; then.
be70: 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 5f              fun_
be80: 70 72 69 6e 74 5f 6d 73 67 5f 74 31 0a 20 20 20  print_msg_t1.   
be90: 20 20 20 20 20 20 20 20 20 53 5f 41 43 54 49 56           S_ACTIV
bea0: 49 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49  ITY_OF_THIS_SCRI
beb0: 50 54 3d 22 68 65 6c 70 22 0a 20 20 20 20 20 20  PT="help".      
bec0: 20 20 20 20 20 20 53 42 5f 45 58 49 54 5f 57 49        SB_EXIT_WI
bed0: 54 48 5f 45 52 52 4f 52 3d 22 74 22 0a 20 20 20  TH_ERROR="t".   
bee0: 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20       else.      
bef0: 20 20 20 20 20 20 53 5f 55 52 4c 5f 52 45 4d 4f        S_URL_REMO
bf00: 54 45 5f 52 45 50 4f 53 49 54 4f 52 59 3d 22 24  TE_REPOSITORY="$
bf10: 32 22 0a 20 20 20 20 20 20 20 20 66 69 0a 20 20  2".        fi.  
bf20: 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 69    else.        i
bf30: 66 20 5b 20 22 24 53 5f 41 43 54 49 56 49 54 59  f [ "$S_ACTIVITY
bf40: 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22  _OF_THIS_SCRIPT"
bf50: 20 3d 3d 20 22 63 6c 6f 6e 65 5f 70 75 62 6c 69   == "clone_publi
bf60: 63 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20  c" ]; then.     
bf70: 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 32 22         if [ "$2"
bf80: 20 3d 3d 20 22 22 20 5d 3b 20 74 68 65 6e 0a 20   == "" ]; then. 
bf90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
bfa0: 75 6e 5f 70 72 69 6e 74 5f 6d 73 67 5f 74 31 0a  un_print_msg_t1.
bfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfc0: 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48  S_ACTIVITY_OF_TH
bfd0: 49 53 5f 53 43 52 49 50 54 3d 22 68 65 6c 70 22  IS_SCRIPT="help"
bfe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bff0: 20 53 42 5f 45 58 49 54 5f 57 49 54 48 5f 45 52   SB_EXIT_WITH_ER
c000: 52 4f 52 3d 22 74 22 0a 20 20 20 20 20 20 20 20  ROR="t".        
c010: 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20      else.       
c020: 20 20 20 20 20 20 20 20 20 53 5f 55 52 4c 5f 52           S_URL_R
c030: 45 4d 4f 54 45 5f 52 45 50 4f 53 49 54 4f 52 59  EMOTE_REPOSITORY
c040: 3d 22 24 32 22 0a 20 20 20 20 20 20 20 20 20 20  ="$2".          
c050: 20 20 66 69 0a 20 20 20 20 20 20 20 20 65 6c 73    fi.        els
c060: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  e.            if
c070: 20 5b 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f   [ "$S_ACTIVITY_
c080: 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20  OF_THIS_SCRIPT" 
c090: 21 3d 20 22 6f 76 65 72 77 72 69 74 65 5f 6c 6f  != "overwrite_lo
c0a0: 63 61 6c 5f 77 69 74 68 5f 72 65 6d 6f 74 65 22  cal_with_remote"
c0b0: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
c0c0: 20 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24           if [ "$
c0d0: 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48  S_ACTIVITY_OF_TH
c0e0: 49 53 5f 53 43 52 49 50 54 22 20 3d 3d 20 22 6f  IS_SCRIPT" == "o
c0f0: 76 65 72 77 72 69 74 65 5f 72 65 6d 6f 74 65 5f  verwrite_remote_
c100: 77 69 74 68 5f 6c 6f 63 61 6c 22 20 5d 3b 20 74  with_local" ]; t
c110: 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  hen.            
c120: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 32          if [ "$2
c130: 22 20 21 3d 20 22 22 20 5d 3b 20 74 68 65 6e 0a  " != "" ]; then.
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c150: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 32          if [ "$2
c160: 22 20 3d 3d 20 22 75 73 65 5f 61 75 74 6f 67 65  " == "use_autoge
c170: 6e 65 72 61 74 65 64 5f 63 6f 6d 6d 69 74 5f 6d  nerated_commit_m
c180: 65 73 73 61 67 65 22 20 5d 3b 20 74 68 65 6e 0a  essage" ]; then.
c190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b              if [
c1b0: 20 22 24 33 22 20 21 3d 20 22 22 20 5d 3b 20 74   "$3" != "" ]; t
c1c0: 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  hen.            
c1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1e0: 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
c1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c200: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
c210: 20 22 49 66 20 74 68 65 20 66 69 72 73 74 20 63   "If the first c
c220: 6f 6e 73 6f 6c 65 20 61 72 67 75 6d 65 6e 74 20  onsole argument 
c230: 69 73 20 5c 22 6f 76 65 72 77 72 69 74 65 5f 6c  is \"overwrite_l
c240: 6f 63 61 6c 5f 77 69 74 68 5f 72 65 6d 6f 74 65  ocal_with_remote
c250: 5c 22 20 61 6e 64 22 0a 20 20 20 20 20 20 20 20  \" and".        
c260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c270: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 74 68          echo "th
c280: 65 20 73 65 63 6f 6e 64 20 63 6f 6e 73 6f 6c 65  e second console
c290: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 5c 22 75   argument is \"u
c2a0: 73 65 5f 61 75 74 6f 67 65 6e 65 72 61 74 65 64  se_autogenerated
c2b0: 5f 63 6f 6d 6d 69 74 5f 6d 65 73 73 61 67 65 5c  _commit_message\
c2c0: 22 2c 20 22 0a 20 20 20 20 20 20 20 20 20 20 20  ", ".           
c2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2e0: 20 20 20 20 20 65 63 68 6f 20 22 74 68 65 6e 20       echo "then 
c2f0: 74 68 65 72 65 20 73 68 6f 75 6c 64 20 6e 6f 74  there should not
c300: 20 62 65 20 61 20 33 2e 20 63 6f 6e 73 6f 6c 65   be a 3. console
c310: 20 61 72 67 75 6d 65 6e 74 2e 22 0a 20 20 20 20   argument.".    
c320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c330: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
c340: 20 22 47 55 49 44 3d 3d 27 32 65 64 63 33 38 65   "GUID=='2edc38e
c350: 31 2d 62 63 39 31 2d 34 35 39 38 2d 38 61 34 35  1-bc91-4598-8a45
c360: 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22 0a  -315260c151e7'".
c370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c390: 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48  S_ACTIVITY_OF_TH
c3a0: 49 53 5f 53 43 52 49 50 54 3d 22 68 65 6c 70 22  IS_SCRIPT="help"
c3b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3d0: 20 53 42 5f 45 58 49 54 5f 57 49 54 48 5f 45 52   SB_EXIT_WITH_ER
c3e0: 52 4f 52 3d 22 74 22 0a 20 20 20 20 20 20 20 20  ROR="t".        
c3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c400: 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 20      fi.         
c410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
c420: 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  lse.            
c430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c440: 69 66 20 5b 20 22 24 32 22 20 3d 3d 20 22 72 65  if [ "$2" == "re
c450: 61 64 5f 63 6f 6d 6d 69 74 5f 6d 65 73 73 61 67  ad_commit_messag
c460: 65 5f 66 72 6f 6d 5f 66 69 6c 65 22 20 5d 3b 20  e_from_file" ]; 
c470: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20  then.           
c480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c490: 20 20 20 20 20 53 5f 46 50 5f 4d 45 53 53 41 47       S_FP_MESSAG
c4a0: 45 5f 46 49 4c 45 5f 43 41 4e 44 49 44 41 54 45  E_FILE_CANDIDATE
c4b0: 3d 22 24 33 22 20 23 20 66 69 6c 65 20 70 61 74  ="$3" # file pat
c4c0: 68 20 63 61 6e 64 69 64 61 74 65 0a 20 20 20 20  h candidate.    
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b              if [
c4f0: 20 22 24 53 5f 46 50 5f 4d 45 53 53 41 47 45 5f   "$S_FP_MESSAGE_
c500: 46 49 4c 45 5f 43 41 4e 44 49 44 41 54 45 22 20  FILE_CANDIDATE" 
c510: 3d 3d 20 22 22 20 5d 3b 20 74 68 65 6e 0a 20 20  == "" ]; then.  
c520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c540: 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20    echo "".      
c550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
c570: 68 6f 20 22 49 66 20 74 68 65 20 66 69 72 73 74  ho "If the first
c580: 20 63 6f 6e 73 6f 6c 65 20 61 72 67 75 6d 65 6e   console argumen
c590: 74 20 69 73 20 22 0a 20 20 20 20 20 20 20 20 20  t is ".         
c5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5b0: 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20             echo 
c5c0: 22 5c 22 6f 76 65 72 77 72 69 74 65 5f 6c 6f 63  "\"overwrite_loc
c5d0: 61 6c 5f 77 69 74 68 5f 72 65 6d 6f 74 65 5c 22  al_with_remote\"
c5e0: 20 61 6e 64 22 0a 20 20 20 20 20 20 20 20 20 20   and".          
c5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c600: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
c610: 74 68 65 20 73 65 63 6f 6e 64 20 63 6f 6e 73 6f  the second conso
c620: 6c 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 22  le argument is "
c630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c650: 20 20 20 20 20 65 63 68 6f 20 22 5c 22 72 65 61       echo "\"rea
c660: 64 5f 63 6f 6d 6d 69 74 5f 6d 65 73 73 61 67 65  d_commit_message
c670: 5f 66 72 6f 6d 5f 66 69 6c 65 5c 22 2c 20 22 0a  _from_file\", ".
c680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6a0: 20 20 20 20 65 63 68 6f 20 22 74 68 65 6e 20 74      echo "then t
c6b0: 68 65 72 65 20 73 68 6f 75 6c 64 20 62 65 20 61  here should be a
c6c0: 6c 73 6f 20 61 20 33 2e 20 63 6f 6e 73 6f 6c 65  lso a 3. console
c6d0: 20 61 72 67 75 6d 65 6e 74 20 22 0a 20 20 20 20   argument ".    
c6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c700: 65 63 68 6f 20 22 74 68 61 74 20 69 73 20 65 78  echo "that is ex
c710: 70 65 63 74 65 64 20 74 6f 20 62 65 20 61 20 66  pected to be a f
c720: 69 6c 65 20 70 61 74 68 20 74 6f 20 61 20 74 65  ile path to a te
c730: 78 74 20 66 69 6c 65 2e 22 0a 20 20 20 20 20 20  xt file.".      
c740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
c760: 68 6f 20 22 47 55 49 44 3d 3d 27 32 62 66 30 32  ho "GUID=='2bf02
c770: 39 30 32 2d 62 34 37 34 2d 34 63 36 38 2d 62 66  902-b474-4c68-bf
c780: 32 34 2d 33 31 35 32 36 30 63 31 35 31 65 37 27  24-315260c151e7'
c790: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
c7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7b0: 20 20 20 20 20 20 53 5f 41 43 54 49 56 49 54 59        S_ACTIVITY
c7c0: 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 3d  _OF_THIS_SCRIPT=
c7d0: 22 68 65 6c 70 22 0a 20 20 20 20 20 20 20 20 20  "help".         
c7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7f0: 20 20 20 20 20 20 20 20 20 20 20 53 42 5f 45 58             SB_EX
c800: 49 54 5f 57 49 54 48 5f 45 52 52 4f 52 3d 22 74  IT_WITH_ERROR="t
c810: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
c820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c830: 20 20 66 69 0a 20 20 20 20 20 20 20 20 20 20 20    fi.           
c840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c850: 20 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f 45       if [ "$SB_E
c860: 58 49 54 5f 57 49 54 48 5f 45 52 52 4f 52 22 20  XIT_WITH_ERROR" 
c870: 3d 3d 20 22 66 22 20 5d 3b 20 74 68 65 6e 0a 20  == "f" ]; then. 
c880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8a0: 20 20 20 69 66 20 5b 20 22 24 34 22 20 21 3d 20     if [ "$4" != 
c8b0: 22 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20  "" ]; then.     
c8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8e0: 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20     echo "".     
c8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c910: 20 20 20 65 63 68 6f 20 22 49 66 20 74 68 65 20     echo "If the 
c920: 66 69 72 73 74 20 63 6f 6e 73 6f 6c 65 20 61 72  first console ar
c930: 67 75 6d 65 6e 74 20 69 73 20 22 0a 20 20 20 20  gument is ".    
c940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c960: 20 20 20 20 65 63 68 6f 20 22 5c 22 6f 76 65 72      echo "\"over
c970: 77 72 69 74 65 5f 6c 6f 63 61 6c 5f 77 69 74 68  write_local_with
c980: 5f 72 65 6d 6f 74 65 5c 22 20 61 6e 64 22 0a 20  _remote\" and". 
c990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9b0: 20 20 20 20 20 20 20 65 63 68 6f 20 22 74 68 65         echo "the
c9c0: 20 73 65 63 6f 6e 64 20 63 6f 6e 73 6f 6c 65 20   second console 
c9d0: 61 72 67 75 6d 65 6e 74 20 69 73 20 22 0a 20 20  argument is ".  
c9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca00: 20 20 20 20 20 20 65 63 68 6f 20 22 5c 22 72 65        echo "\"re
ca10: 61 64 5f 63 6f 6d 6d 69 74 5f 6d 65 73 73 61 67  ad_commit_messag
ca20: 65 5f 66 72 6f 6d 5f 66 69 6c 65 5c 22 2c 20 22  e_from_file\", "
ca30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ca40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca50: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 74           echo "t
ca60: 68 65 6e 20 74 68 65 72 65 20 73 68 6f 75 6c 64  hen there should
ca70: 20 62 65 20 65 78 61 63 74 6c 79 20 33 2e 20 63   be exactly 3. c
ca80: 6f 6e 73 6f 6c 65 20 61 72 67 75 6d 65 6e 74 73  onsole arguments
ca90: 2c 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  , ".            
caa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cab0: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
cac0: 20 22 6e 6f 74 20 34 20 6f 72 20 6d 6f 72 65 2e   "not 4 or more.
cad0: 20 55 6e 66 6f 72 74 75 6e 61 74 65 6c 79 20 74   Unfortunately t
cae0: 68 65 20 34 2e 20 61 72 67 75 6d 65 6e 74 20 69  he 4. argument i
caf0: 73 20 63 75 72 72 65 6e 74 6c 79 20 22 0a 20 20  s currently ".  
cb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb20: 20 20 20 20 20 20 65 63 68 6f 20 22 2d 2d 2d 63        echo "---c
cb30: 69 74 61 74 69 6f 6e 2d 2d 73 74 61 72 74 2d 2d  itation--start--
cb40: 2d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  -".             
cb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb60: 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20             echo 
cb70: 22 24 34 22 0a 20 20 20 20 20 20 20 20 20 20 20  "$4".           
cb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68               ech
cba0: 6f 20 22 2d 2d 2d 63 69 74 61 74 69 6f 6e 2d 2d  o "---citation--
cbb0: 65 6e 64 2d 2d 2d 2d 2d 22 0a 20 20 20 20 20 20  end-----".      
cbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbe0: 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d 27 33    echo "GUID=='3
cbf0: 30 34 64 30 64 38 35 2d 32 63 61 32 2d 34 38 61  04d0d85-2ca2-48a
cc00: 61 2d 38 31 35 34 2d 33 31 35 32 36 30 63 31 35  a-8154-315260c15
cc10: 31 65 37 27 22 0a 20 20 20 20 20 20 20 20 20 20  1e7'".          
cc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 5f                S_
cc40: 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48 49 53  ACTIVITY_OF_THIS
cc50: 5f 53 43 52 49 50 54 3d 22 68 65 6c 70 22 0a 20  _SCRIPT="help". 
cc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc80: 20 20 20 20 20 20 20 53 42 5f 45 58 49 54 5f 57         SB_EXIT_W
cc90: 49 54 48 5f 45 52 52 4f 52 3d 22 74 22 0a 20 20  ITH_ERROR="t".  
cca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccc0: 20 20 66 69 0a 20 20 20 20 20 20 20 20 20 20 20    fi.           
ccd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cce0: 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20       fi.        
ccf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd00: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53          if [ "$S
cd10: 42 5f 45 58 49 54 5f 57 49 54 48 5f 45 52 52 4f  B_EXIT_WITH_ERRO
cd20: 52 22 20 3d 3d 20 22 66 22 20 5d 3b 20 74 68 65  R" == "f" ]; the
cd30: 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n.              
cd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd50: 20 20 20 20 20 20 69 66 20 5b 20 21 20 2d 65 20        if [ ! -e 
cd60: 22 24 53 5f 46 50 5f 4d 45 53 53 41 47 45 5f 46  "$S_FP_MESSAGE_F
cd70: 49 4c 45 5f 43 41 4e 44 49 44 41 54 45 22 20 5d  ILE_CANDIDATE" ]
cd80: 3b 20 74 68 65 6e 20 0a 20 20 20 20 20 20 20 20  ; then .        
cd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdb0: 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cde0: 65 63 68 6f 20 22 54 68 65 20 63 6f 6d 6d 69 74  echo "The commit
cdf0: 20 6d 65 73 73 61 67 65 20 66 69 6c 65 20 70 61   message file pa
ce00: 74 68 20 63 61 6e 64 69 64 61 74 65 20 22 0a 20  th candidate ". 
ce10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce30: 20 20 20 20 20 20 20 65 63 68 6f 20 22 72 65 66         echo "ref
ce40: 65 72 65 6e 63 65 73 20 65 69 74 68 65 72 20 61  erences either a
ce50: 20 6d 69 73 73 69 6e 67 20 66 69 6c 65 20 6f 72   missing file or
ce60: 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ".             
ce70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce80: 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20             echo 
ce90: 22 61 20 62 72 6f 6b 65 6e 20 73 79 6d 6c 69 6e  "a broken symlin
cea0: 6b 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  k.".            
ceb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cec0: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
ced0: 20 22 47 55 49 44 3d 3d 27 36 35 62 35 35 39 32   "GUID=='65b5592
cee0: 61 2d 30 35 36 31 2d 34 62 37 34 2d 61 37 34 34  a-0561-4b74-a744
cef0: 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22 0a  -315260c151e7'".
cf00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf20: 20 20 20 20 20 20 20 20 53 5f 41 43 54 49 56 49          S_ACTIVI
cf30: 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50  TY_OF_THIS_SCRIP
cf40: 54 3d 22 68 65 6c 70 22 0a 20 20 20 20 20 20 20  T="help".       
cf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf70: 20 53 42 5f 45 58 49 54 5f 57 49 54 48 5f 45 52   SB_EXIT_WITH_ER
cf80: 52 4f 52 3d 22 74 22 0a 20 20 20 20 20 20 20 20  ROR="t".        
cf90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfa0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a 20              fi. 
cfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
cfd0: 69 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  i .             
cfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cff0: 20 20 20 69 66 20 5b 20 22 24 53 42 5f 45 58 49     if [ "$SB_EXI
d000: 54 5f 57 49 54 48 5f 45 52 52 4f 52 22 20 3d 3d  T_WITH_ERROR" ==
d010: 20 22 66 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20   "f" ]; then.   
d020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d040: 20 69 66 20 5b 20 2d 64 20 22 24 53 5f 46 50 5f   if [ -d "$S_FP_
d050: 4d 45 53 53 41 47 45 5f 46 49 4c 45 5f 43 41 4e  MESSAGE_FILE_CAN
d060: 44 49 44 41 54 45 22 20 5d 3b 20 74 68 65 6e 20  DIDATE" ]; then 
d070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d090: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22           echo ""
d0a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d0c0: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 54           echo "T
d0d0: 68 65 20 63 6f 6d 6d 69 74 20 6d 65 73 73 61 67  he commit messag
d0e0: 65 20 66 69 6c 65 20 70 61 74 68 20 63 61 6e 64  e file path cand
d0f0: 69 64 61 74 65 20 22 0a 20 20 20 20 20 20 20 20  idate ".        
d100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d120: 65 63 68 6f 20 22 72 65 66 65 72 65 6e 63 65 73  echo "references
d130: 20 61 20 66 6f 6c 64 65 72 2c 20 62 75 74 20 69   a folder, but i
d140: 74 20 73 68 6f 75 6c 64 20 22 0a 20 20 20 20 20  t should ".     
d150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d170: 20 20 20 65 63 68 6f 20 22 72 65 66 65 72 65 6e     echo "referen
d180: 63 65 20 61 20 74 65 78 74 20 66 69 6c 65 2e 22  ce a text file."
d190: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d1b0: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 47           echo "G
d1c0: 55 49 44 3d 3d 27 31 63 36 38 36 35 63 33 2d 66  UID=='1c6865c3-f
d1d0: 31 34 33 2d 34 63 32 34 2d 38 64 32 34 2d 33 31  143-4c24-8d24-31
d1e0: 35 32 36 30 63 31 35 31 65 37 27 22 0a 20 20 20  5260c151e7'".   
d1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d210: 20 20 20 20 20 53 5f 41 43 54 49 56 49 54 59 5f       S_ACTIVITY_
d220: 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 3d 22  OF_THIS_SCRIPT="
d230: 68 65 6c 70 22 0a 20 20 20 20 20 20 20 20 20 20  help".          
d240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 42                SB
d260: 5f 45 58 49 54 5f 57 49 54 48 5f 45 52 52 4f 52  _EXIT_WITH_ERROR
d270: 3d 22 74 22 0a 20 20 20 20 20 20 20 20 20 20 20  ="t".           
d280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d290: 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20           fi.    
d2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d2b0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a 20              fi. 
d2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
d2e0: 66 20 5b 20 22 24 53 42 5f 45 58 49 54 5f 57 49  f [ "$SB_EXIT_WI
d2f0: 54 48 5f 45 52 52 4f 52 22 20 3d 3d 20 22 66 22  TH_ERROR" == "f"
d300: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
d310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d320: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 5f 54               S_T
d330: 4d 50 5f 30 3d 22 60 66 69 6c 65 73 69 7a 65 20  MP_0="`filesize 
d340: 24 53 5f 46 50 5f 4d 45 53 53 41 47 45 5f 46 49  $S_FP_MESSAGE_FI
d350: 4c 45 5f 43 41 4e 44 49 44 41 54 45 60 22 0a 20  LE_CANDIDATE`". 
d360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d380: 20 20 20 53 5f 54 4d 50 5f 31 3d 22 60 72 75 62     S_TMP_1="`rub
d390: 79 20 2d 65 20 5c 22 73 5f 6f 75 74 3d 27 4f 4b  y -e \"s_out='OK
d3a0: 27 3b 20 69 66 20 28 32 30 30 30 3c 24 53 5f 54  '; if (2000<$S_T
d3b0: 4d 50 5f 30 29 20 74 68 65 6e 20 73 5f 6f 75 74  MP_0) then s_out
d3c0: 3d 27 74 6f 6f 5f 62 69 67 27 20 65 6e 64 3b 20  ='too_big' end; 
d3d0: 70 72 69 6e 74 28 73 5f 6f 75 74 29 3b 5c 22 60  print(s_out);\"`
d3e0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
d3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d400: 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 5f 54        if [ "$S_T
d410: 4d 50 5f 31 22 20 3d 3d 20 22 74 6f 6f 5f 62 69  MP_1" == "too_bi
d420: 67 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20  g" ]; then.     
d430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d450: 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20     echo "".     
d460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d480: 20 20 20 65 63 68 6f 20 22 54 68 65 20 63 6f 6d     echo "The com
d490: 6d 69 74 20 6d 65 73 73 61 67 65 20 66 69 6c 65  mit message file
d4a0: 20 70 61 74 68 20 22 0a 20 20 20 20 20 20 20 20   path ".        
d4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d4d0: 65 63 68 6f 20 22 72 65 66 65 72 65 6e 63 65 73  echo "references
d4e0: 20 61 20 66 69 6c 65 20 74 68 61 74 20 68 61 73   a file that has
d4f0: 20 61 20 73 69 7a 65 20 6f 66 20 24 53 5f 54 4d   a size of $S_TM
d500: 50 5f 30 20 62 79 74 65 73 2e 22 0a 20 20 20 20  P_0 bytes.".    
d510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d530: 20 20 20 20 65 63 68 6f 20 22 54 68 65 20 73 75      echo "The su
d540: 73 70 69 63 69 6f 6e 20 69 73 20 74 68 61 74 20  spicion is that 
d550: 69 74 20 69 73 20 61 20 77 72 6f 6e 67 20 66 69  it is a wrong fi
d560: 6c 65 2e 20 22 0a 20 20 20 20 20 20 20 20 20 20  le. ".          
d570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
d590: 68 6f 20 22 62 65 63 61 75 73 65 20 61 20 63 6f  ho "because a co
d5a0: 6d 6d 69 74 20 6d 65 73 73 61 67 65 20 69 73 20  mmit message is 
d5b0: 75 73 75 61 6c 6c 79 20 6e 6f 74 20 74 68 61 74  usually not that
d5c0: 20 6c 65 6e 67 74 68 79 2e 22 0a 20 20 20 20 20   lengthy.".     
d5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5f0: 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d 27     echo "GUID=='
d600: 31 32 62 64 36 36 39 32 2d 37 65 30 64 2d 34 38  12bd6692-7e0d-48
d610: 63 36 2d 39 39 32 34 2d 33 31 35 32 36 30 63 31  c6-9924-315260c1
d620: 35 31 65 37 27 22 0a 20 20 20 20 20 20 20 20 20  51e7'".         
d630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
d650: 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48 49  _ACTIVITY_OF_THI
d660: 53 5f 53 43 52 49 50 54 3d 22 68 65 6c 70 22 0a  S_SCRIPT="help".
d670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d690: 20 20 20 20 20 20 20 20 53 42 5f 45 58 49 54 5f          SB_EXIT_
d6a0: 57 49 54 48 5f 45 52 52 4f 52 3d 22 74 22 0a 20  WITH_ERROR="t". 
d6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6d0: 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20     else.        
d6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d700: 69 66 20 5b 20 22 24 53 5f 54 4d 50 5f 30 22 20  if [ "$S_TMP_0" 
d710: 3d 3d 20 22 30 22 20 5d 3b 20 74 68 65 6e 0a 20  == "0" ]; then. 
d720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d740: 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20             echo 
d750: 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  "".             
d760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
d780: 63 68 6f 20 22 54 68 65 20 63 6f 6d 6d 69 74 20  cho "The commit 
d790: 6d 65 73 73 61 67 65 20 66 69 6c 65 20 70 61 74  message file pat
d7a0: 68 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  h ".            
d7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7d0: 65 63 68 6f 20 22 72 65 66 65 72 65 6e 63 65 73  echo "references
d7e0: 20 61 20 66 69 6c 65 20 74 68 61 74 20 68 61 73   a file that has
d7f0: 20 61 20 73 69 7a 65 20 6f 66 20 30 20 28 7a 65   a size of 0 (ze
d800: 72 6f 29 20 62 79 74 65 73 2e 22 0a 20 20 20 20  ro) bytes.".    
d810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d830: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
d840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d860: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
d870: 20 22 54 68 65 20 67 65 6e 65 72 61 74 69 6f 6e   "The generation
d880: 20 6f 66 20 63 6f 6d 6d 69 74 20 6d 65 73 73 61   of commit messa
d890: 67 65 20 66 69 6c 65 73 20 22 0a 20 20 20 20 20  ge files ".     
d8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8c0: 20 20 20 20 20 20 20 65 63 68 6f 20 22 63 61 6e         echo "can
d8d0: 20 62 65 20 61 76 6f 69 64 65 64 20 62 79 20 75   be avoided by u
d8e0: 73 69 6e 67 20 74 68 65 20 6f 70 74 69 6f 6e 20  sing the option 
d8f0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
d900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
d920: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  ho "".          
d930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d950: 20 20 65 63 68 6f 20 22 20 20 20 20 5c 22 75 73    echo "    \"us
d960: 65 5f 61 75 74 6f 67 65 6e 65 72 61 74 65 64 5f  e_autogenerated_
d970: 63 6f 6d 6d 69 74 5f 6d 65 73 73 61 67 65 5c 22  commit_message\"
d980: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
d9b0: 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  ho "".          
d9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9e0: 20 20 65 63 68 6f 20 22 69 6e 20 73 74 65 61 64    echo "in stead
d9f0: 20 6f 66 20 74 68 65 20 6f 70 74 69 6f 6e 20 22   of the option "
da00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
da10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da20: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68               ech
da30: 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20  o "".           
da40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da60: 20 65 63 68 6f 20 22 20 20 20 20 5c 22 72 65 61   echo "    \"rea
da70: 64 5f 63 6f 6d 6d 69 74 5f 6d 65 73 73 61 67 65  d_commit_message
da80: 5f 66 72 6f 6d 5f 66 69 6c 65 5c 22 20 2e 22 0a  _from_file\" .".
da90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
daa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dab0: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
dac0: 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20   "".            
dad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
daf0: 65 63 68 6f 20 22 47 55 49 44 3d 3d 27 61 65 32  echo "GUID=='ae2
db00: 34 32 30 33 38 2d 62 32 32 36 2d 34 33 32 64 2d  42038-b226-432d-
db10: 38 33 38 34 2d 33 31 35 32 36 30 63 31 35 31 65  8384-315260c151e
db20: 37 27 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  7'".            
db30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db50: 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48  S_ACTIVITY_OF_TH
db60: 49 53 5f 53 43 52 49 50 54 3d 22 68 65 6c 70 22  IS_SCRIPT="help"
db70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
db80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db90: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 42 5f               SB_
dba0: 45 58 49 54 5f 57 49 54 48 5f 45 52 52 4f 52 3d  EXIT_WITH_ERROR=
dbb0: 22 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  "t".            
dbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbd0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a 20              fi. 
dbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc00: 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 20 20     fi.          
dc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc20: 20 20 20 20 20 20 66 69 20 0a 20 20 20 20 20 20        fi .      
dc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc40: 20 20 20 20 20 20 20 20 20 20 69 66 20 5b 20 22            if [ "
dc50: 24 53 42 5f 45 58 49 54 5f 57 49 54 48 5f 45 52  $SB_EXIT_WITH_ER
dc60: 52 4f 52 22 20 3d 3d 20 22 66 22 20 5d 3b 20 74  ROR" == "f" ]; t
dc70: 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  hen.            
dc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc90: 20 20 20 20 20 20 20 20 53 5f 54 4d 50 5f 30 3d          S_TMP_0=
dca0: 22 60 66 69 6c 65 20 2d 2d 6d 69 6d 65 2d 74 79  "`file --mime-ty
dcb0: 70 65 20 24 53 5f 46 50 5f 4d 45 53 53 41 47 45  pe $S_FP_MESSAGE
dcc0: 5f 46 49 4c 45 5f 43 41 4e 44 49 44 41 54 45 20  _FILE_CANDIDATE 
dcd0: 7c 20 67 72 65 70 20 74 65 78 74 20 60 22 0a 20  | grep text `". 
dce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd00: 20 20 20 69 66 20 5b 20 22 24 53 5f 54 4d 50 5f     if [ "$S_TMP_
dd10: 30 22 20 3d 3d 20 22 22 20 5d 3b 20 74 68 65 6e  0" == "" ]; then
dd20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd40: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22           echo ""
dd50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd70: 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 54           echo "T
dd80: 68 65 20 63 6f 6d 6d 69 74 20 6d 65 73 73 61 67  he commit messag
dd90: 65 20 66 69 6c 65 20 70 61 74 68 20 22 0a 20 20  e file path ".  
dda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ddb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ddc0: 20 20 20 20 20 20 65 63 68 6f 20 22 72 65 66 65        echo "refe
ddd0: 72 65 6e 63 65 73 20 61 20 66 69 6c 65 20 74 68  rences a file th
dde0: 61 74 20 68 61 73 20 61 20 20 4d 49 4d 45 20 74  at has a  MIME t
ddf0: 79 70 65 20 6f 66 20 22 0a 20 20 20 20 20 20 20  ype of ".       
de00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de20: 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20   echo "".       
de30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de50: 20 65 63 68 6f 20 22 60 66 69 6c 65 20 2d 2d 6d   echo "`file --m
de60: 69 6d 65 2d 74 79 70 65 20 24 53 5f 46 50 5f 4d  ime-type $S_FP_M
de70: 45 53 53 41 47 45 5f 46 49 4c 45 5f 43 41 4e 44  ESSAGE_FILE_CAND
de80: 49 44 41 54 45 60 22 0a 20 20 20 20 20 20 20 20  IDATE`".        
de90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
deb0: 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
dec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ded0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dee0: 65 63 68 6f 20 22 54 68 65 20 63 6f 6d 6d 69 74  echo "The commit
def0: 20 6d 65 73 73 61 67 65 20 66 69 6c 65 20 6d 75   message file mu
df00: 73 74 20 62 65 20 61 20 74 65 78 74 20 66 69 6c  st be a text fil
df10: 65 20 61 6e 64 20 22 0a 20 20 20 20 20 20 20 20  e and ".        
df20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df40: 65 63 68 6f 20 22 74 65 78 74 20 66 69 6c 65 73  echo "text files
df50: 20 68 61 76 65 20 74 68 65 20 73 74 72 69 6e 67   have the string
df60: 20 5c 22 74 65 78 74 5c 22 20 69 6e 20 74 68 65   \"text\" in the
df70: 69 72 20 4d 49 4d 45 20 74 79 70 65 20 6e 61 6d  ir MIME type nam
df80: 65 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  e.".            
df90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfa0: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
dfb0: 20 22 47 55 49 44 3d 3d 27 36 36 37 61 38 36 33   "GUID=='667a863
dfc0: 34 2d 30 39 32 34 2d 34 37 61 33 2d 38 36 35 33  4-0924-47a3-8653
dfd0: 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22 0a  -315260c151e7'".
dfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e000: 20 20 20 20 20 20 20 20 53 5f 41 43 54 49 56 49          S_ACTIVI
e010: 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50  TY_OF_THIS_SCRIP
e020: 54 3d 22 68 65 6c 70 22 0a 20 20 20 20 20 20 20  T="help".       
e030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e050: 20 53 42 5f 45 58 49 54 5f 57 49 54 48 5f 45 52   SB_EXIT_WITH_ER
e060: 52 4f 52 3d 22 74 22 0a 20 20 20 20 20 20 20 20  ROR="t".        
e070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e080: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a 20              fi. 
e090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
e0b0: 69 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  i .             
e0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
e0d0: 69 20 23 20 72 65 61 64 5f 63 6f 6d 6d 69 74 5f  i # read_commit_
e0e0: 6d 65 73 73 61 67 65 5f 66 72 6f 6d 5f 66 69 6c  message_from_fil
e0f0: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  e.              
e100: 20 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20            fi.   
e110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e120: 20 66 69 0a 20 20 20 20 20 20 20 20 20 20 20 20   fi.            
e130: 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20      else.       
e140: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
e150: 5b 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f 4f  [ "$S_ACTIVITY_O
e160: 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20 3d  F_THIS_SCRIPT" =
e170: 3d 20 22 64 65 6c 65 74 65 5f 6c 6f 63 61 6c 5f  = "delete_local_
e180: 63 6f 70 79 22 20 5d 3b 20 74 68 65 6e 0a 20 20  copy" ]; then.  
e190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1a0: 20 20 20 20 20 20 69 66 20 5b 20 22 24 32 22 20        if [ "$2" 
e1b0: 21 3d 20 22 22 20 5d 3b 20 74 68 65 6e 20 23 20  != "" ]; then # 
e1c0: 74 68 65 20 32 2e 20 61 72 67 20 69 73 20 6f 70  the 2. arg is op
e1d0: 74 69 6f 6e 61 6c 20 68 65 72 65 0a 20 20 20 20  tional here.    
e1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1f0: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 32          if [ "$2
e200: 22 20 21 3d 20 22 24 53 5f 41 52 47 4e 41 4d 45  " != "$S_ARGNAME
e210: 5f 41 43 54 49 56 49 54 59 5f 53 48 52 45 44 5f  _ACTIVITY_SHRED_
e220: 41 52 47 5f 32 22 20 5d 3b 20 74 68 65 6e 20 0a  ARG_2" ]; then .
e230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e250: 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
e260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e270: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 49 66          echo "If
e280: 20 74 68 65 20 66 69 72 73 74 20 63 6f 6e 73 6f   the first conso
e290: 6c 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 5c  le argument is \
e2a0: 22 64 65 6c 65 74 65 5f 6c 6f 63 61 6c 5f 63 6f  "delete_local_co
e2b0: 70 79 5c 22 2c 20 74 68 65 6e 22 0a 20 20 20 20  py\", then".    
e2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2d0: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
e2e0: 20 22 74 68 65 20 73 65 63 6f 6e 64 20 63 6f 6e   "the second con
e2f0: 73 6f 6c 65 20 61 72 67 75 6d 65 6e 74 20 69 73  sole argument is
e300: 20 61 6c 6c 6f 77 65 64 20 74 6f 20 62 65 20 6f   allowed to be o
e310: 6e 6c 79 20 22 0a 20 20 20 20 20 20 20 20 20 20  nly ".          
e320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e330: 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20        echo "".  
e340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
e360: 68 6f 20 22 20 20 20 20 5c 22 24 53 5f 41 52 47  ho "    \"$S_ARG
e370: 4e 41 4d 45 5f 41 43 54 49 56 49 54 59 5f 53 48  NAME_ACTIVITY_SH
e380: 52 45 44 5f 41 52 47 5f 32 5c 22 2c 20 77 69 74  RED_ARG_2\", wit
e390: 68 6f 75 74 20 71 75 6f 74 61 74 69 6f 6e 20 6d  hout quotation m
e3a0: 61 72 6b 73 2e 22 0a 20 20 20 20 20 20 20 20 20  arks.".         
e3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3c0: 20 20 20 20 20 20 20 65 63 68 6f 20 22 47 55 49         echo "GUI
e3d0: 44 3d 3d 27 32 66 34 33 39 64 38 31 2d 63 30 38  D=='2f439d81-c08
e3e0: 61 2d 34 65 61 61 2d 39 61 35 33 2d 33 31 35 32  a-4eaa-9a53-3152
e3f0: 36 30 63 31 35 31 65 37 27 22 0a 20 20 20 20 20  60c151e7'".     
e400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e410: 20 20 20 20 20 20 20 20 20 20 20 53 5f 41 43 54             S_ACT
e420: 49 56 49 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43  IVITY_OF_THIS_SC
e430: 52 49 50 54 3d 22 68 65 6c 70 22 0a 20 20 20 20  RIPT="help".    
e440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e450: 20 20 20 20 20 20 20 20 20 20 20 20 53 42 5f 45              SB_E
e460: 58 49 54 5f 57 49 54 48 5f 45 52 52 4f 52 3d 22  XIT_WITH_ERROR="
e470: 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t".             
e480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
e490: 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  i.              
e4a0: 20 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20            fi.   
e4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4c0: 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20   else.          
e4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
e4e0: 20 5b 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f   [ "$S_ACTIVITY_
e4f0: 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20  OF_THIS_SCRIPT" 
e500: 21 3d 20 22 70 72 69 6e 74 5f 73 63 72 69 70 74  != "print_script
e510: 5f 76 65 72 73 69 6f 6e 22 20 5d 3b 20 74 68 65  _version" ]; the
e520: 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n.              
e530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
e540: 20 5b 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f   [ "$S_ACTIVITY_
e550: 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20  OF_THIS_SCRIPT" 
e560: 21 3d 20 22 68 65 6c 70 22 20 5d 3b 20 74 68 65  != "help" ]; the
e570: 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n.              
e580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e590: 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20    echo "".      
e5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5b0: 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
e5c0: 54 68 65 20 76 65 72 79 20 66 69 72 73 74 20 63  The very first c
e5d0: 6f 6e 73 6f 6c 65 20 61 72 67 75 6d 65 6e 74 20  onsole argument 
e5e0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
e5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e600: 20 20 65 63 68 6f 20 22 6f 66 20 74 68 69 73 20    echo "of this 
e610: 73 63 72 69 70 74 20 69 73 20 65 78 70 65 63 74  script is expect
e620: 65 64 20 74 6f 20 62 65 20 22 0a 20 20 20 20 20  ed to be ".     
e630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e640: 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20             echo 
e650: 22 61 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74 20  "a command that 
e660: 69 73 20 73 70 65 63 69 66 69 63 20 74 6f 20 74  is specific to t
e670: 68 69 73 20 73 63 72 69 70 74 2e 22 0a 20 20 20  his script.".   
e680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e690: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68               ech
e6a0: 6f 20 22 47 55 49 44 3d 3d 27 33 65 37 63 65 32  o "GUID=='3e7ce2
e6b0: 63 35 2d 64 33 63 64 2d 34 63 35 30 2d 61 66 31  c5-d3cd-4c50-af1
e6c0: 33 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22  3-315260c151e7'"
e6d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e6f0: 20 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54   S_ACTIVITY_OF_T
e700: 48 49 53 5f 53 43 52 49 50 54 3d 22 68 65 6c 70  HIS_SCRIPT="help
e710: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
e720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e730: 20 20 53 42 5f 45 58 49 54 5f 57 49 54 48 5f 45    SB_EXIT_WITH_E
e740: 52 52 4f 52 3d 22 74 22 0a 20 20 20 20 20 20 20  RROR="t".       
e750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e760: 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20       fi.        
e770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e780: 66 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  fi.             
e790: 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20         fi.      
e7a0: 20 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20            fi.   
e7b0: 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20           fi.    
e7c0: 20 20 20 20 66 69 0a 20 20 20 20 66 69 0a 66 69      fi.    fi.fi
e7d0: 20 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ..#------------
e7e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
e7f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
e800: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
e810: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 69  --------------.i
e820: 66 20 5b 20 22 24 53 5f 41 43 54 49 56 49 54 59  f [ "$S_ACTIVITY
e830: 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22  _OF_THIS_SCRIPT"
e840: 20 3d 3d 20 22 68 65 6c 70 22 20 5d 3b 20 74 68   == "help" ]; th
e850: 65 6e 0a 20 20 20 20 65 63 68 6f 20 22 22 0a 20  en.    echo "". 
e860: 20 20 20 65 63 68 6f 20 22 50 6f 73 73 69 62 6c     echo "Possibl
e870: 65 20 63 6f 6e 73 6f 6c 65 20 61 72 67 75 6d 65  e console argume
e880: 6e 74 20 73 65 74 73 20 61 72 65 3a 22 0a 20 20  nt sets are:".  
e890: 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 65 63    echo "".    ec
e8a0: 68 6f 20 22 20 20 20 20 63 6c 6f 6e 65 5f 61 6c  ho "    clone_al
e8b0: 6c 20 20 20 20 3c 72 65 6d 6f 74 65 20 72 65 70  l    <remote rep
e8c0: 6f 73 69 74 6f 72 79 20 75 72 6c 3e 22 0a 20 20  ository url>".  
e8d0: 20 20 65 63 68 6f 20 22 20 20 20 20 63 6c 6f 6e    echo "    clon
e8e0: 65 5f 70 75 62 6c 69 63 20 3c 72 65 6d 6f 74 65  e_public <remote
e8f0: 20 72 65 70 6f 73 69 74 6f 72 79 20 75 72 6c 3e   repository url>
e900: 22 0a 20 20 20 20 65 63 68 6f 20 22 20 20 20 20  ".    echo "    
e910: 6f 76 65 72 77 72 69 74 65 5f 6c 6f 63 61 6c 5f  overwrite_local_
e920: 77 69 74 68 5f 72 65 6d 6f 74 65 22 0a 20 20 20  with_remote".   
e930: 20 65 63 68 6f 20 22 22 0a 20 20 20 20 65 63 68   echo "".    ech
e940: 6f 20 22 20 20 20 20 6f 76 65 72 77 72 69 74 65  o "    overwrite
e950: 5f 72 65 6d 6f 74 65 5f 77 69 74 68 5f 6c 6f 63  _remote_with_loc
e960: 61 6c 20 28 75 73 65 5f 61 75 74 6f 67 65 6e 65  al (use_autogene
e970: 72 61 74 65 64 5f 63 6f 6d 6d 69 74 5f 6d 65 73  rated_commit_mes
e980: 73 61 67 65 29 3f 22 0a 20 20 20 20 65 63 68 6f  sage)?".    echo
e990: 20 22 20 20 20 20 6f 76 65 72 77 72 69 74 65 5f   "    overwrite_
e9a0: 72 65 6d 6f 74 65 5f 77 69 74 68 5f 6c 6f 63 61  remote_with_loca
e9b0: 6c 20 72 65 61 64 5f 63 6f 6d 6d 69 74 5f 6d 65  l read_commit_me
e9c0: 73 73 61 67 65 5f 66 72 6f 6d 5f 66 69 6c 65 20  ssage_from_file 
e9d0: 3c 70 61 74 68 20 74 6f 20 61 20 74 65 78 74 20  <path to a text 
e9e0: 66 69 6c 65 3e 22 0a 20 20 20 20 65 63 68 6f 20  file>".    echo 
e9f0: 22 22 0a 20 20 20 20 65 63 68 6f 20 22 20 20 20  "".    echo "   
ea00: 20 64 65 6c 65 74 65 5f 6c 6f 63 61 6c 5f 63 6f   delete_local_co
ea10: 70 79 20 28 24 53 5f 41 52 47 4e 41 4d 45 5f 41  py ($S_ARGNAME_A
ea20: 43 54 49 56 49 54 59 5f 53 48 52 45 44 5f 41 52  CTIVITY_SHRED_AR
ea30: 47 5f 32 29 3f 22 0a 20 20 20 20 65 63 68 6f 20  G_2)?".    echo 
ea40: 22 20 20 20 20 68 65 6c 70 22 0a 20 20 20 20 65  "    help".    e
ea50: 63 68 6f 20 22 20 20 20 20 70 72 69 6e 74 5f 73  cho "    print_s
ea60: 63 72 69 70 74 5f 76 65 72 73 69 6f 6e 22 0a 20  cript_version". 
ea70: 20 20 20 65 63 68 6f 20 22 20 20 20 20 65 78 69     echo "    exi
ea80: 74 20 23 20 6a 75 73 74 20 66 6f 72 20 74 65 73  t # just for tes
ea90: 74 69 6e 67 22 0a 20 20 20 20 65 63 68 6f 20 22  ting".    echo "
eaa0: 22 0a 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20  ".    #----.    
eab0: 63 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20  cd $S_FP_ORIG.  
eac0: 20 20 69 66 20 5b 20 22 24 53 42 5f 45 58 49 54    if [ "$SB_EXIT
ead0: 5f 57 49 54 48 5f 45 52 52 4f 52 22 20 3d 3d 20  _WITH_ERROR" == 
eae0: 22 74 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20  "t" ]; then.    
eaf0: 20 20 20 20 65 78 69 74 20 31 20 23 20 54 6f 20      exit 1 # To 
eb00: 6c 65 74 20 74 68 65 20 70 61 72 65 6e 74 20 73  let the parent s
eb10: 63 72 69 70 74 20 6b 6e 6f 77 20 74 68 61 74 20  cript know that 
eb20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eb30: 23 20 74 68 65 20 70 61 72 65 6e 74 20 73 63 72  # the parent scr
eb40: 69 70 74 20 63 61 6c 6c 73 20 74 68 69 73 20 73  ipt calls this s
eb50: 63 72 69 70 74 20 77 69 74 68 20 0a 20 20 20 20  cript with .    
eb60: 20 20 20 20 20 20 20 20 20 20 20 23 20 66 6c 61             # fla
eb70: 77 65 64 20 63 6f 6e 73 6f 6c 65 20 61 72 67 75  wed console argu
eb80: 6d 65 6e 74 20 76 61 6c 75 65 73 2e 20 20 20 20  ment values.    
eb90: 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20  .    else.      
eba0: 20 20 65 78 69 74 20 30 0a 20 20 20 20 66 69 0a    exit 0.    fi.
ebb0: 66 69 20 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  fi ..#----------
ebc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
ebd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
ebe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
ebf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
ec00: 0a 23 20 54 68 65 20 73 63 72 69 70 74 20 76 65  .# The script ve
ec10: 72 73 69 6f 6e 20 69 73 20 6e 65 65 64 65 64 20  rsion is needed 
ec20: 62 79 20 6f 74 68 65 72 20 73 63 72 69 70 74 73  by other scripts
ec30: 20 74 68 61 74 20 64 65 70 65 6e 64 20 6f 6e 20   that depend on 
ec40: 74 68 69 73 20 73 63 72 69 70 74 2e 0a 23 20 54  this script..# T
ec50: 68 65 20 73 63 72 69 70 74 20 76 65 72 73 69 6f  he script versio
ec60: 6e 20 47 55 49 44 20 6d 75 73 74 20 6e 6f 74 20  n GUID must not 
ec70: 62 65 20 73 75 72 72 6f 75 6e 64 65 64 20 62 79  be surrounded by
ec80: 20 0a 23 20 61 6e 79 20 71 75 6f 74 65 20 73 69   .# any quote si
ec90: 67 6e 73 20 28 27 2c 22 29 2c 20 62 65 63 61 75  gns (',"), becau
eca0: 73 65 20 6f 74 68 65 72 77 69 73 65 20 74 68 65  se otherwise the
ecb0: 20 0a 23 20 76 65 72 73 69 6f 6e 20 47 55 49 44   .# version GUID
ecc0: 20 77 69 6c 6c 20 62 65 20 6f 76 65 72 77 72 69   will be overwri
ecd0: 74 74 65 6e 20 62 79 20 74 68 65 20 55 70 47 55  tten by the UpGU
ece0: 49 44 20 74 6f 6f 6c 2c 0a 23 20 62 75 74 20 75  ID tool,.# but u
ecf0: 6e 6c 69 6b 65 20 65 72 72 6f 72 20 6d 65 73 73  nlike error mess
ed00: 61 67 65 20 47 55 49 44 2d 73 20 74 68 69 73 20  age GUID-s this 
ed10: 47 55 49 44 20 6d 75 73 74 20 73 74 61 79 20 63  GUID must stay c
ed20: 6f 6e 73 74 61 6e 74 2e 20 0a 23 20 54 6f 20 61  onstant. .# To a
ed30: 6c 6c 6f 77 20 74 68 65 20 76 65 72 73 69 6f 6e  llow the version
ed40: 20 74 6f 20 62 65 20 75 73 65 64 20 61 73 20 73   to be used as s
ed50: 75 62 2d 70 61 72 74 20 6f 66 20 66 69 6c 65 20  ub-part of file 
ed60: 6e 61 6d 65 73 20 61 6e 64 20 0a 23 20 66 6f 6c  names and .# fol
ed70: 64 65 72 20 6e 61 6d 65 73 2c 20 74 68 65 20 76  der names, the v
ed80: 65 72 73 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20  ersion must not 
ed90: 63 6f 6e 74 61 69 6e 20 61 6e 79 20 73 70 61 63  contain any spac
eda0: 65 73 2c 20 6c 69 6e 65 20 62 72 65 61 6b 73 0a  es, line breaks.
edb0: 23 20 61 6e 64 20 6f 74 68 65 72 20 63 68 61 72  # and other char
edc0: 61 63 74 65 72 73 20 74 68 61 74 20 68 61 76 65  acters that have
edd0: 20 61 20 73 70 65 63 69 61 6c 20 6d 65 61 6e 69   a special meani
ede0: 6e 67 20 69 6e 20 42 61 73 68 2e 0a 23 0a 23 20  ng in Bash..#.# 
edf0: 49 66 20 74 68 65 20 76 65 72 73 69 6f 6e 20 49  If the version I
ee00: 44 20 64 69 64 20 6e 6f 74 20 6d 61 74 63 68 20  D did not match 
ee10: 74 68 65 20 47 55 49 44 20 72 65 67 65 78 2c 20  the GUID regex, 
ee20: 74 68 65 6e 20 49 20 77 6f 75 6c 64 20 68 61 76  then I would hav
ee30: 65 20 74 6f 20 0a 23 20 77 72 69 74 65 20 61 20  e to .# write a 
ee40: 6c 6f 6e 67 20 63 6f 6d 6d 65 6e 74 20 61 62 6f  long comment abo
ee50: 75 74 20 69 74 20 6e 6f 74 20 62 65 69 6e 67 20  ut it not being 
ee60: 61 6c 6c 6f 77 65 64 20 74 6f 20 6d 61 74 63 68  allowed to match
ee70: 20 74 68 65 20 0a 23 20 47 55 49 44 20 72 65 67   the .# GUID reg
ee80: 65 78 2e 20 3a 2d 44 20 0a 53 5f 56 45 52 53 49  ex. :-D .S_VERSI
ee90: 4f 4e 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50  ON_OF_THIS_SCRIP
eea0: 54 3d 22 34 35 33 37 31 30 65 32 2d 31 31 64 37  T="453710e2-11d7
eeb0: 2d 34 37 35 34 2d 39 34 32 61 2d 33 31 35 32 36  -4754-942a-31526
eec0: 30 63 31 35 31 65 37 22 0a 69 66 20 5b 20 22 24  0c151e7".if [ "$
eed0: 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48  S_ACTIVITY_OF_TH
eee0: 49 53 5f 53 43 52 49 50 54 22 20 3d 3d 20 22 70  IS_SCRIPT" == "p
eef0: 72 69 6e 74 5f 73 63 72 69 70 74 5f 76 65 72 73  rint_script_vers
ef00: 69 6f 6e 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20  ion" ]; then.   
ef10: 20 65 63 68 6f 20 22 54 68 65 20 76 65 72 73 69   echo "The versi
ef20: 6f 6e 20 6f 66 20 74 68 69 73 20 73 63 72 69 70  on of this scrip
ef30: 74 20 69 73 3a 20 24 53 5f 56 45 52 53 49 4f 4e  t is: $S_VERSION
ef40: 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54 22  _OF_THIS_SCRIPT"
ef50: 0a 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 63  .    #----.    c
ef60: 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20  d $S_FP_ORIG.   
ef70: 20 65 78 69 74 20 30 0a 66 69 20 0a 0a 0a 23 2d   exit 0.fi ...#-
ef80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
ef90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
efa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
efb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
efc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 53 5f 46 50 5f 53  ---------.S_FP_S
efd0: 41 4e 44 42 4f 58 5f 44 49 52 45 43 54 4f 52 59  ANDBOX_DIRECTORY
efe0: 5f 4e 41 4d 45 3d 22 73 61 6e 64 62 6f 78 5f 6f  _NAME="sandbox_o
eff0: 66 5f 74 68 65 5f 46 6f 73 73 69 6c 5f 72 65 70  f_the_Fossil_rep
f000: 6f 73 69 74 6f 72 79 22 0a 53 5f 46 50 5f 53 41  ository".S_FP_SA
f010: 4e 44 42 4f 58 3d 22 24 53 5f 46 50 5f 44 49 52  NDBOX="$S_FP_DIR
f020: 2f 24 53 5f 46 50 5f 53 41 4e 44 42 4f 58 5f 44  /$S_FP_SANDBOX_D
f030: 49 52 45 43 54 4f 52 59 5f 4e 41 4d 45 22 0a 23  IRECTORY_NAME".#
f040: 2d 2d 2d 2d 0a 53 5f 46 50 5f 41 52 43 48 49 56  ----.S_FP_ARCHIV
f050: 45 53 5f 44 49 52 45 43 54 4f 52 59 5f 4e 41 4d  ES_DIRECTORY_NAM
f060: 45 3d 22 61 72 63 68 69 76 61 6c 5f 63 6f 70 69  E="archival_copi
f070: 65 73 5f 6f 66 5f 74 68 65 5f 46 6f 73 73 69 6c  es_of_the_Fossil
f080: 5f 72 65 70 6f 73 69 74 6f 72 79 5f 73 61 6e 64  _repository_sand
f090: 62 6f 78 22 0a 53 5f 46 50 5f 41 52 43 48 49 56  box".S_FP_ARCHIV
f0a0: 45 53 3d 22 24 53 5f 46 50 5f 44 49 52 2f 24 53  ES="$S_FP_DIR/$S
f0b0: 5f 46 50 5f 41 52 43 48 49 56 45 53 5f 44 49 52  _FP_ARCHIVES_DIR
f0c0: 45 43 54 4f 52 59 5f 4e 41 4d 45 22 0a 53 5f 46  ECTORY_NAME".S_F
f0d0: 50 5f 41 52 43 48 49 56 45 53 5f 54 53 3d 22 24  P_ARCHIVES_TS="$
f0e0: 53 5f 46 50 5f 41 52 43 48 49 56 45 53 2f 76 24  S_FP_ARCHIVES/v$
f0f0: 53 5f 54 49 4d 45 53 54 41 4d 50 22 0a 23 2d 2d  S_TIMESTAMP".#--
f100: 2d 2d 0a 53 5f 46 50 5f 46 4f 53 53 49 4c 46 49  --.S_FP_FOSSILFI
f110: 4c 45 5f 4e 41 4d 45 3d 22 72 65 70 6f 73 69 74  LE_NAME="reposit
f120: 6f 72 79 5f 73 74 6f 72 61 67 65 2e 66 6f 73 73  ory_storage.foss
f130: 69 6c 22 0a 53 5f 46 50 5f 46 4f 53 53 49 4c 46  il".S_FP_FOSSILF
f140: 49 4c 45 3d 22 24 53 5f 46 50 5f 44 49 52 2f 24  ILE="$S_FP_DIR/$
f150: 53 5f 46 50 5f 46 4f 53 53 49 4c 46 49 4c 45 5f  S_FP_FOSSILFILE_
f160: 4e 41 4d 45 22 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d  NAME"..#--------
f170: 0a 53 5f 4c 43 5f 4e 4f 54 5f 44 45 54 45 52 4d  .S_LC_NOT_DETERM
f180: 49 4e 45 44 3d 22 6e 6f 74 20 64 65 74 65 72 6d  INED="not determ
f190: 69 6e 65 64 22 0a 53 42 5f 53 41 4e 44 42 4f 58  ined".SB_SANDBOX
f1a0: 5f 44 49 52 5f 45 58 49 53 54 53 3d 22 24 53 5f  _DIR_EXISTS="$S_
f1b0: 4c 43 5f 4e 4f 54 5f 44 45 54 45 52 4d 49 4e 45  LC_NOT_DETERMINE
f1c0: 44 22 0a 66 75 6e 5f 73 61 6e 64 62 6f 78 5f 66  D".fun_sandbox_f
f1d0: 6f 6c 64 65 72 5f 6f 72 5f 73 79 6d 6c 69 6e 6b  older_or_symlink
f1e0: 5f 65 78 69 73 74 73 28 29 20 7b 0a 20 20 20 20  _exists() {.    
f1f0: 53 42 5f 53 41 4e 44 42 4f 58 5f 44 49 52 5f 45  SB_SANDBOX_DIR_E
f200: 58 49 53 54 53 3d 22 66 22 0a 20 20 20 20 69 66  XISTS="f".    if
f210: 20 5b 20 21 20 2d 65 20 24 53 5f 46 50 5f 53 41   [ ! -e $S_FP_SA
f220: 4e 44 42 4f 58 20 5d 3b 20 74 68 65 6e 0a 20 20  NDBOX ]; then.  
f230: 20 20 20 20 20 20 23 20 44 6f 65 73 20 6e 6f 74        # Does not
f240: 20 65 78 69 73 74 20 6f 72 20 69 74 20 69 73 20   exist or it is 
f250: 61 20 62 72 6f 6b 65 6e 20 73 79 6d 62 6f 6c 69  a broken symboli
f260: 63 20 6c 69 6e 6b 2e 0a 20 20 20 20 20 20 20 20  c link..        
f270: 53 42 5f 53 41 4e 44 42 4f 58 5f 44 49 52 5f 45  SB_SANDBOX_DIR_E
f280: 58 49 53 54 53 3d 22 66 22 0a 20 20 20 20 65 6c  XISTS="f".    el
f290: 73 65 0a 20 20 20 20 20 20 20 20 69 66 20 5b 20  se.        if [ 
f2a0: 2d 64 20 24 53 5f 46 50 5f 53 41 4e 44 42 4f 58  -d $S_FP_SANDBOX
f2b0: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
f2c0: 20 20 20 20 20 53 42 5f 53 41 4e 44 42 4f 58 5f       SB_SANDBOX_
f2d0: 44 49 52 5f 45 58 49 53 54 53 3d 22 74 22 0a 20  DIR_EXISTS="t". 
f2e0: 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 66 69         fi.    fi
f2f0: 0a 7d 20 23 20 66 75 6e 5f 73 61 6e 64 62 6f 78  .} # fun_sandbox
f300: 5f 66 6f 6c 64 65 72 5f 6f 72 5f 73 79 6d 6c 69  _folder_or_symli
f310: 6e 6b 5f 65 78 69 73 74 73 0a 0a 53 42 5f 46 4f  nk_exists..SB_FO
f320: 53 53 49 4c 46 49 4c 45 5f 45 58 49 53 54 53 3d  SSILFILE_EXISTS=
f330: 22 24 53 5f 4c 43 5f 4e 4f 54 5f 44 45 54 45 52  "$S_LC_NOT_DETER
f340: 4d 49 4e 45 44 22 0a 66 75 6e 5f 66 6f 73 73 69  MINED".fun_fossi
f350: 6c 5f 72 65 70 6f 73 69 74 6f 72 79 5f 66 69 6c  l_repository_fil
f360: 65 5f 6f 72 5f 73 79 6d 6c 69 6e 6b 5f 65 78 69  e_or_symlink_exi
f370: 73 74 73 28 29 20 7b 0a 20 20 20 20 53 42 5f 46  sts() {.    SB_F
f380: 4f 53 53 49 4c 46 49 4c 45 5f 45 58 49 53 54 53  OSSILFILE_EXISTS
f390: 3d 22 74 22 0a 20 20 20 20 69 66 20 5b 20 21 20  ="t".    if [ ! 
f3a0: 2d 65 20 24 53 5f 46 50 5f 46 4f 53 53 49 4c 46  -e $S_FP_FOSSILF
f3b0: 49 4c 45 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20  ILE ]; then.    
f3c0: 20 20 20 20 23 20 44 6f 65 73 20 6e 6f 74 20 65      # Does not e
f3d0: 78 69 73 74 20 6f 72 20 69 74 20 69 73 20 61 20  xist or it is a 
f3e0: 62 72 6f 6b 65 6e 20 73 79 6d 62 6f 6c 69 63 20  broken symbolic 
f3f0: 6c 69 6e 6b 2e 0a 20 20 20 20 20 20 20 20 53 42  link..        SB
f400: 5f 46 4f 53 53 49 4c 46 49 4c 45 5f 45 58 49 53  _FOSSILFILE_EXIS
f410: 54 53 3d 22 66 22 0a 20 20 20 20 65 6c 73 65 0a  TS="f".    else.
f420: 20 20 20 20 20 20 20 20 69 66 20 5b 20 2d 64 20          if [ -d 
f430: 24 53 5f 46 50 5f 46 4f 53 53 49 4c 46 49 4c 45  $S_FP_FOSSILFILE
f440: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
f450: 20 20 20 20 20 53 42 5f 46 4f 53 53 49 4c 46 49       SB_FOSSILFI
f460: 4c 45 5f 45 58 49 53 54 53 3d 22 66 22 0a 20 20  LE_EXISTS="f".  
f470: 20 20 20 20 20 20 66 69 0a 20 20 20 20 66 69 0a        fi.    fi.
f480: 7d 20 23 20 66 75 6e 5f 66 6f 73 73 69 6c 5f 72  } # fun_fossil_r
f490: 65 70 6f 73 69 74 6f 72 79 5f 66 69 6c 65 5f 6f  epository_file_o
f4a0: 72 5f 73 79 6d 6c 69 6e 6b 5f 65 78 69 73 74 73  r_symlink_exists
f4b0: 0a 0a 53 5f 4c 43 5f 4e 4f 54 5f 44 45 54 45 52  ..S_LC_NOT_DETER
f4c0: 4d 49 4e 45 44 3d 22 6e 6f 74 20 64 65 74 65 72  MINED="not deter
f4d0: 6d 69 6e 65 64 22 0a 53 42 5f 41 52 43 48 49 56  mined".SB_ARCHIV
f4e0: 45 5f 44 49 52 5f 45 58 49 53 54 53 3d 22 24 53  E_DIR_EXISTS="$S
f4f0: 5f 4c 43 5f 4e 4f 54 5f 44 45 54 45 52 4d 49 4e  _LC_NOT_DETERMIN
f500: 45 44 22 0a 66 75 6e 5f 61 72 63 68 69 76 65 73  ED".fun_archives
f510: 5f 66 6f 6c 64 65 72 5f 6f 72 5f 73 79 6d 6c 69  _folder_or_symli
f520: 6e 6b 5f 65 78 69 73 74 73 28 29 20 7b 0a 20 20  nk_exists() {.  
f530: 20 20 53 42 5f 41 52 43 48 49 56 45 5f 44 49 52    SB_ARCHIVE_DIR
f540: 5f 45 58 49 53 54 53 3d 22 66 22 0a 20 20 20 20  _EXISTS="f".    
f550: 69 66 20 5b 20 21 20 2d 65 20 24 53 5f 46 50 5f  if [ ! -e $S_FP_
f560: 41 52 43 48 49 56 45 53 20 5d 3b 20 74 68 65 6e  ARCHIVES ]; then
f570: 0a 20 20 20 20 20 20 20 20 23 20 44 6f 65 73 20  .        # Does 
f580: 6e 6f 74 20 65 78 69 73 74 20 6f 72 20 69 74 20  not exist or it 
f590: 69 73 20 61 20 62 72 6f 6b 65 6e 20 73 79 6d 62  is a broken symb
f5a0: 6f 6c 69 63 20 6c 69 6e 6b 2e 0a 20 20 20 20 20  olic link..     
f5b0: 20 20 20 53 42 5f 41 52 43 48 49 56 45 5f 44 49     SB_ARCHIVE_DI
f5c0: 52 5f 45 58 49 53 54 53 3d 22 66 22 0a 20 20 20  R_EXISTS="f".   
f5d0: 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 69 66   else.        if
f5e0: 20 5b 20 2d 64 20 24 53 5f 46 50 5f 41 52 43 48   [ -d $S_FP_ARCH
f5f0: 49 56 45 53 20 5d 3b 20 74 68 65 6e 0a 20 20 20  IVES ]; then.   
f600: 20 20 20 20 20 20 20 20 20 53 42 5f 41 52 43 48           SB_ARCH
f610: 49 56 45 5f 44 49 52 5f 45 58 49 53 54 53 3d 22  IVE_DIR_EXISTS="
f620: 74 22 0a 20 20 20 20 20 20 20 20 66 69 0a 20 20  t".        fi.  
f630: 20 20 66 69 0a 7d 20 23 20 66 75 6e 5f 61 72 63    fi.} # fun_arc
f640: 68 69 76 65 73 5f 66 6f 6c 64 65 72 5f 6f 72 5f  hives_folder_or_
f650: 73 79 6d 6c 69 6e 6b 5f 65 78 69 73 74 73 0a 0a  symlink_exists..
f660: 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 66 75 6e 5f 66 6f  #--------.fun_fo
f670: 73 73 69 6c 5f 72 65 70 6f 73 69 74 6f 72 79 5f  ssil_repository_
f680: 66 69 6c 65 5f 6f 72 5f 73 79 6d 6c 69 6e 6b 5f  file_or_symlink_
f690: 65 78 69 73 74 73 0a 66 75 6e 5f 73 61 6e 64 62  exists.fun_sandb
f6a0: 6f 78 5f 66 6f 6c 64 65 72 5f 6f 72 5f 73 79 6d  ox_folder_or_sym
f6b0: 6c 69 6e 6b 5f 65 78 69 73 74 73 0a 66 75 6e 5f  link_exists.fun_
f6c0: 61 72 63 68 69 76 65 73 5f 66 6f 6c 64 65 72 5f  archives_folder_
f6d0: 6f 72 5f 73 79 6d 6c 69 6e 6b 5f 65 78 69 73 74  or_symlink_exist
f6e0: 73 0a 0a 66 75 6e 5f 61 73 73 65 72 74 69 6f 6e  s..fun_assertion
f6f0: 5f 74 31 28 29 20 7b 0a 20 20 20 20 6c 6f 63 61  _t1() {.    loca
f700: 6c 20 53 42 5f 43 41 4e 44 49 44 41 54 45 3d 24  l SB_CANDIDATE=$
f710: 31 0a 20 20 20 20 6c 6f 63 61 6c 20 53 42 5f 54  1.    local SB_T
f720: 48 52 4f 57 3d 22 74 22 0a 20 20 20 20 23 2d 2d  HROW="t".    #--
f730: 2d 2d 0a 20 20 20 20 69 66 20 5b 20 22 24 53 42  --.    if [ "$SB
f740: 5f 43 41 4e 44 49 44 41 54 45 22 20 3d 3d 20 22  _CANDIDATE" == "
f750: 74 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20  t" ]; then.     
f760: 20 20 20 53 42 5f 54 48 52 4f 57 3d 22 66 22 0a     SB_THROW="f".
f770: 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20      else.       
f780: 20 69 66 20 5b 20 22 24 53 42 5f 43 41 4e 44 49   if [ "$SB_CANDI
f790: 44 41 54 45 22 20 3d 3d 20 22 66 22 20 5d 3b 20  DATE" == "f" ]; 
f7a0: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20  then.           
f7b0: 20 53 42 5f 54 48 52 4f 57 3d 22 66 22 0a 20 20   SB_THROW="f".  
f7c0: 20 20 20 20 20 20 66 69 0a 20 20 20 20 66 69 0a        fi.    fi.
f7d0: 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 69 66      #----.    if
f7e0: 20 5b 20 22 24 53 42 5f 54 48 52 4f 57 22 20 3d   [ "$SB_THROW" =
f7f0: 3d 20 22 74 22 20 5d 3b 20 74 68 65 6e 0a 20 20  = "t" ]; then.  
f800: 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20        echo "".  
f810: 20 20 20 20 20 20 65 63 68 6f 20 22 54 68 69 73        echo "This
f820: 20 42 61 73 68 20 73 63 72 69 70 74 20 69 73 20   Bash script is 
f830: 66 6c 61 77 65 64 2e 20 22 0a 20 20 20 20 20 20  flawed. ".      
f840: 20 20 65 63 68 6f 20 22 66 75 6e 5f 61 73 73 65    echo "fun_asse
f850: 72 74 69 6f 6e 5f 74 31 28 29 20 61 73 73 65 72  rtion_t1() asser
f860: 74 69 6f 6e 20 66 61 69 6c 65 64 2e 22 0a 20 20  tion failed.".  
f870: 20 20 20 20 20 20 65 63 68 6f 20 22 47 55 49 44        echo "GUID
f880: 3d 3d 27 34 32 65 39 63 62 64 32 2d 33 63 35 64  =='42e9cbd2-3c5d
f890: 2d 34 32 32 32 2d 39 62 32 33 2d 33 31 35 32 36  -4222-9b23-31526
f8a0: 30 63 31 35 31 65 37 27 22 0a 20 20 20 20 20 20  0c151e7'".      
f8b0: 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20    echo "".      
f8c0: 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20    #----.        
f8d0: 63 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20  cd $S_FP_ORIG.  
f8e0: 20 20 20 20 20 20 65 78 69 74 20 31 0a 20 20 20        exit 1.   
f8f0: 20 66 69 0a 7d 20 23 20 66 75 6e 5f 61 73 73 65   fi.} # fun_asse
f900: 72 74 69 6f 6e 5f 74 31 0a 0a 66 75 6e 5f 61 73  rtion_t1..fun_as
f910: 73 65 72 74 69 6f 6e 5f 74 31 20 22 24 53 42 5f  sertion_t1 "$SB_
f920: 46 4f 53 53 49 4c 46 49 4c 45 5f 45 58 49 53 54  FOSSILFILE_EXIST
f930: 53 22 0a 66 75 6e 5f 61 73 73 65 72 74 69 6f 6e  S".fun_assertion
f940: 5f 74 31 20 22 24 53 42 5f 53 41 4e 44 42 4f 58  _t1 "$SB_SANDBOX
f950: 5f 44 49 52 5f 45 58 49 53 54 53 22 0a 66 75 6e  _DIR_EXISTS".fun
f960: 5f 61 73 73 65 72 74 69 6f 6e 5f 74 31 20 22 24  _assertion_t1 "$
f970: 53 42 5f 41 52 43 48 49 56 45 5f 44 49 52 5f 45  SB_ARCHIVE_DIR_E
f980: 58 49 53 54 53 22 0a 0a 23 2d 2d 2d 2d 2d 2d 2d  XISTS"..#-------
f990: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
f9a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
f9b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
f9c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
f9d0: 2d 2d 2d 0a 0a 66 75 6e 5f 61 73 73 65 72 74 5f  ---..fun_assert_
f9e0: 72 65 70 6f 73 69 74 6f 72 79 5f 6c 6f 63 61 6c  repository_local
f9f0: 5f 63 6f 70 79 5f 65 78 69 73 74 65 6e 63 65 28  _copy_existence(
fa00: 29 20 7b 0a 20 20 20 20 66 75 6e 5f 66 6f 73 73  ) {.    fun_foss
fa10: 69 6c 5f 72 65 70 6f 73 69 74 6f 72 79 5f 66 69  il_repository_fi
fa20: 6c 65 5f 6f 72 5f 73 79 6d 6c 69 6e 6b 5f 65 78  le_or_symlink_ex
fa30: 69 73 74 73 0a 20 20 20 20 69 66 20 5b 20 22 24  ists.    if [ "$
fa40: 53 42 5f 46 4f 53 53 49 4c 46 49 4c 45 5f 45 58  SB_FOSSILFILE_EX
fa50: 49 53 54 53 22 20 3d 3d 20 22 66 22 20 5d 3b 20  ISTS" == "f" ]; 
fa60: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 65 63 68  then.        ech
fa70: 6f 20 22 22 0a 20 20 20 20 20 20 20 20 65 63 68  o "".        ech
fa80: 6f 20 22 54 68 65 20 64 69 72 65 63 74 6f 72 79  o "The directory
fa90: 20 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20   ".        echo 
faa0: 22 60 70 77 64 60 22 0a 20 20 20 20 20 20 20 20  "`pwd`".        
fab0: 65 63 68 6f 20 22 64 6f 65 73 20 6e 6f 74 20 63  echo "does not c
fac0: 6f 6e 74 61 69 6e 20 61 20 46 6f 73 73 69 6c 20  ontain a Fossil 
fad0: 72 65 70 6f 73 69 74 6f 72 79 20 66 69 6c 65 20  repository file 
fae0: 6e 61 6d 65 64 20 22 0a 20 20 20 20 20 20 20 20  named ".        
faf0: 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
fb00: 65 63 68 6f 20 22 20 20 20 20 24 53 5f 46 50 5f  echo "    $S_FP_
fb10: 46 4f 53 53 49 4c 46 49 4c 45 5f 4e 41 4d 45 22  FOSSILFILE_NAME"
fb20: 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22  .        echo ""
fb30: 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 41  .        echo "A
fb40: 62 6f 72 74 69 6e 67 20 73 63 72 69 70 74 2e 22  borting script."
fb50: 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 47  .        echo "G
fb60: 55 49 44 3d 3d 27 34 35 61 39 34 38 39 31 2d 61  UID=='45a94891-a
fb70: 39 62 33 2d 34 65 65 34 2d 62 63 32 33 2d 33 31  9b3-4ee4-bc23-31
fb80: 35 32 36 30 63 31 35 31 65 37 27 22 0a 20 20 20  5260c151e7'".   
fb90: 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
fba0: 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20       #----.     
fbb0: 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49 47     cd $S_FP_ORIG
fbc0: 0a 20 20 20 20 20 20 20 20 65 78 69 74 20 31 0a  .        exit 1.
fbd0: 20 20 20 20 66 69 0a 20 20 20 20 66 75 6e 5f 73      fi.    fun_s
fbe0: 61 6e 64 62 6f 78 5f 66 6f 6c 64 65 72 5f 6f 72  andbox_folder_or
fbf0: 5f 73 79 6d 6c 69 6e 6b 5f 65 78 69 73 74 73 0a  _symlink_exists.
fc00: 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f 53 41      if [ "$SB_SA
fc10: 4e 44 42 4f 58 5f 44 49 52 5f 45 58 49 53 54 53  NDBOX_DIR_EXISTS
fc20: 22 20 3d 3d 20 22 66 22 20 5d 3b 20 74 68 65 6e  " == "f" ]; then
fc30: 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22  .        echo ""
fc40: 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 54  .        echo "T
fc50: 68 65 20 64 69 72 65 63 74 6f 72 79 20 22 0a 20  he directory ". 
fc60: 20 20 20 20 20 20 20 65 63 68 6f 20 22 60 70 77         echo "`pw
fc70: 64 60 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f  d`".        echo
fc80: 20 22 64 6f 65 73 20 6e 6f 74 20 63 6f 6e 74 61   "does not conta
fc90: 69 6e 20 61 20 64 69 72 65 63 74 6f 72 79 20 6e  in a directory n
fca0: 61 6d 65 64 20 22 0a 20 20 20 20 20 20 20 20 65  amed ".        e
fcb0: 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 65  cho "".        e
fcc0: 63 68 6f 20 22 20 20 20 20 24 53 5f 46 50 5f 53  cho "    $S_FP_S
fcd0: 41 4e 44 42 4f 58 5f 44 49 52 45 43 54 4f 52 59  ANDBOX_DIRECTORY
fce0: 5f 4e 41 4d 45 22 0a 20 20 20 20 20 20 20 20 65  _NAME".        e
fcf0: 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 65  cho "".        e
fd00: 63 68 6f 20 22 41 62 6f 72 74 69 6e 67 20 73 63  cho "Aborting sc
fd10: 72 69 70 74 2e 22 0a 20 20 20 20 20 20 20 20 65  ript.".        e
fd20: 63 68 6f 20 22 47 55 49 44 3d 3d 27 38 32 61 39  cho "GUID=='82a9
fd30: 33 62 33 38 2d 61 65 61 33 2d 34 34 32 39 2d 62  3b38-aea3-4429-b
fd40: 66 31 33 2d 33 31 35 32 36 30 63 31 35 31 65 37  f13-315260c151e7
fd50: 27 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20  '".        echo 
fd60: 22 22 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d  "".        #----
fd70: 0a 20 20 20 20 20 20 20 20 63 64 20 24 53 5f 46  .        cd $S_F
fd80: 50 5f 4f 52 49 47 0a 20 20 20 20 20 20 20 20 65  P_ORIG.        e
fd90: 78 69 74 20 31 0a 20 20 20 20 66 69 0a 7d 20 23  xit 1.    fi.} #
fda0: 20 66 75 6e 5f 61 73 73 65 72 74 5f 72 65 70 6f   fun_assert_repo
fdb0: 73 69 74 6f 72 79 5f 6c 6f 63 61 6c 5f 63 6f 70  sitory_local_cop
fdc0: 79 5f 65 78 69 73 74 65 6e 63 65 0a 0a 0a 66 75  y_existence...fu
fdd0: 6e 5f 61 73 73 65 72 74 5f 74 68 65 5f 6c 61 63  n_assert_the_lac
fde0: 6b 5f 6f 66 5f 72 65 70 6f 73 69 74 6f 72 79 5f  k_of_repository_
fdf0: 6c 6f 63 61 6c 5f 63 6f 70 79 5f 74 31 28 29 20  local_copy_t1() 
fe00: 7b 0a 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f  {.    if [ "$SB_
fe10: 46 4f 53 53 49 4c 46 49 4c 45 5f 45 58 49 53 54  FOSSILFILE_EXIST
fe20: 53 22 20 3d 3d 20 22 74 22 20 5d 3b 20 74 68 65  S" == "t" ]; the
fe30: 6e 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  n.        echo "
fe40: 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
fe50: 54 68 65 20 64 69 72 65 63 74 6f 72 79 20 22 0a  The directory ".
fe60: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 60 70          echo "`p
fe70: 77 64 60 22 0a 20 20 20 20 20 20 20 20 65 63 68  wd`".        ech
fe80: 6f 20 22 61 6c 72 65 61 64 79 20 63 6f 6e 74 61  o "already conta
fe90: 69 6e 20 61 20 66 69 6c 65 20 6e 61 6d 65 64 20  in a file named 
fea0: 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
feb0: 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
fec0: 20 20 20 20 24 53 5f 46 50 5f 46 4f 53 53 49 4c      $S_FP_FOSSIL
fed0: 46 49 4c 45 5f 4e 41 4d 45 22 0a 20 20 20 20 20  FILE_NAME".     
fee0: 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20     echo "".     
fef0: 20 20 20 65 63 68 6f 20 22 54 6f 20 61 76 6f 69     echo "To avoi
ff00: 64 20 6f 76 65 72 77 72 69 74 69 6e 67 20 61 6e  d overwriting an
ff10: 20 65 78 69 73 74 69 6e 67 20 6c 6f 63 61 6c 20   existing local 
ff20: 63 6f 70 79 2c 20 74 68 69 73 20 73 63 72 69 70  copy, this scrip
ff30: 74 20 69 73 20 61 62 6f 72 74 65 64 22 0a 20 20  t is aborted".  
ff40: 20 20 20 20 20 20 65 63 68 6f 20 22 61 6e 64 20        echo "and 
ff50: 6e 6f 74 68 69 6e 67 20 69 73 20 64 6f 77 6e 6c  nothing is downl
ff60: 6f 61 64 65 64 2f 75 70 6c 6f 61 64 65 64 20 62  oaded/uploaded b
ff70: 79 20 74 68 69 73 20 73 63 72 69 70 74 2e 22 0a  y this script.".
ff80: 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 47 55          echo "GU
ff90: 49 44 3d 3d 27 32 39 32 38 32 38 31 31 2d 31 32  ID=='29282811-12
ffa0: 65 37 2d 34 65 30 38 2d 61 33 31 32 2d 33 31 35  e7-4e08-a312-315
ffb0: 32 36 30 63 31 35 31 65 37 27 22 0a 20 20 20 20  260c151e7'".    
ffc0: 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
ffd0: 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20      #----.      
ffe0: 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a    cd $S_FP_ORIG.
fff0: 20 20 20 20 20 20 20 20 65 78 69 74 20 31 0a 20          exit 1. 
10000 20 20 20 66 69 0a 20 20 20 20 69 66 20 5b 20 22     fi.    if [ "
10010 24 53 42 5f 53 41 4e 44 42 4f 58 5f 44 49 52 5f  $SB_SANDBOX_DIR_
10020 45 58 49 53 54 53 22 20 3d 3d 20 22 74 22 20 5d  EXISTS" == "t" ]
10030 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 65  ; then.        e
10040 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 65  cho "".        e
10050 63 68 6f 20 22 54 68 65 20 64 69 72 65 63 74 6f  cho "The directo
10060 72 79 20 22 0a 20 20 20 20 20 20 20 20 65 63 68  ry ".        ech
10070 6f 20 22 60 70 77 64 60 22 0a 20 20 20 20 20 20  o "`pwd`".      
10080 20 20 65 63 68 6f 20 22 61 6c 72 65 61 64 79 20    echo "already 
10090 63 6f 6e 74 61 69 6e 73 20 61 20 64 69 72 65 63  contains a direc
100a0 74 6f 72 79 20 6e 61 6d 65 64 20 22 0a 20 20 20  tory named ".   
100b0 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
100c0 20 20 20 20 20 65 63 68 6f 20 22 20 20 20 20 24       echo "    $
100d0 53 5f 46 50 5f 53 41 4e 44 42 4f 58 5f 44 49 52  S_FP_SANDBOX_DIR
100e0 45 43 54 4f 52 59 5f 4e 41 4d 45 22 0a 20 20 20  ECTORY_NAME".   
100f0 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
10100 20 20 20 20 20 65 63 68 6f 20 22 54 6f 20 61 76       echo "To av
10110 6f 69 64 20 6f 76 65 72 77 72 69 74 69 6e 67 20  oid overwriting 
10120 61 6e 20 65 78 69 73 74 69 6e 67 20 6c 6f 63 61  an existing loca
10130 6c 20 63 6f 70 79 2c 20 74 68 69 73 20 73 63 72  l copy, this scr
10140 69 70 74 20 69 73 20 61 62 6f 72 74 65 64 22 0a  ipt is aborted".
10150 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 61 6e          echo "an
10160 64 20 6e 6f 74 68 69 6e 67 20 69 73 20 64 6f 77  d nothing is dow
10170 6e 6c 6f 61 64 65 64 2f 75 70 6c 6f 61 64 65 64  nloaded/uploaded
10180 20 62 79 20 74 68 69 73 20 73 63 72 69 70 74 2e   by this script.
10190 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
101a0 47 55 49 44 3d 3d 27 32 65 34 36 37 61 34 32 2d  GUID=='2e467a42-
101b0 64 62 66 39 2d 34 61 33 63 2d 39 66 31 32 2d 33  dbf9-4a3c-9f12-3
101c0 31 35 32 36 30 63 31 35 31 65 37 27 22 0a 20 20  15260c151e7'".  
101d0 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20        echo "".  
101e0 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20        #----.    
101f0 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49      cd $S_FP_ORI
10200 47 0a 20 20 20 20 20 20 20 20 65 78 69 74 20 31  G.        exit 1
10210 0a 20 20 20 20 66 69 0a 7d 20 23 20 66 75 6e 5f  .    fi.} # fun_
10220 61 73 73 65 72 74 5f 74 68 65 5f 6c 61 63 6b 5f  assert_the_lack_
10230 6f 66 5f 72 65 70 6f 73 69 74 6f 72 79 5f 6c 6f  of_repository_lo
10240 63 61 6c 5f 63 6f 70 79 5f 74 31 0a 0a 0a 0a 66  cal_copy_t1....f
10250 75 6e 5f 69 6e 69 74 69 61 6c 69 7a 65 5f 73 61  un_initialize_sa
10260 6e 64 62 6f 78 5f 74 31 28 29 20 7b 0a 20 20 20  ndbox_t1() {.   
10270 20 6d 6b 64 69 72 20 2d 70 20 24 53 5f 46 50 5f   mkdir -p $S_FP_
10280 53 41 4e 44 42 4f 58 0a 20 20 20 20 73 79 6e 63  SANDBOX.    sync
10290 3b 0a 20 20 20 20 63 64 20 24 53 5f 46 50 5f 53  ;.    cd $S_FP_S
102a0 41 4e 44 42 4f 58 0a 20 20 20 20 66 6f 73 73 69  ANDBOX.    fossi
102b0 6c 20 6f 70 65 6e 20 24 53 5f 46 50 5f 44 49 52  l open $S_FP_DIR
102c0 2f 24 53 5f 46 50 5f 46 4f 53 53 49 4c 46 49 4c  /$S_FP_FOSSILFIL
102d0 45 5f 4e 41 4d 45 20 23 20 66 75 6c 6c 20 70 61  E_NAME # full pa
102e0 74 68 20 66 6f 72 20 72 65 6c 69 61 62 69 6c 69  th for reliabili
102f0 74 79 20 0a 20 20 20 20 66 6f 73 73 69 6c 20 73  ty .    fossil s
10300 65 74 74 69 6e 67 73 20 61 75 74 6f 73 79 6e 63  ettings autosync
10310 20 6f 66 66 20 3b 0a 20 20 20 20 66 6f 73 73 69   off ;.    fossi
10320 6c 20 73 65 74 74 69 6e 67 73 20 62 69 6e 61 72  l settings binar
10330 79 2d 67 6c 6f 62 20 6f 6e 3b 0a 20 20 20 20 66  y-glob on;.    f
10340 6f 73 73 69 6c 20 73 65 74 74 69 6e 67 73 20 63  ossil settings c
10350 61 73 65 2d 73 65 6e 73 69 74 69 76 65 20 54 52  ase-sensitive TR
10360 55 45 20 3b 0a 20 20 20 20 66 6f 73 73 69 6c 20  UE ;.    fossil 
10370 63 68 65 63 6b 6f 75 74 20 2d 2d 66 6f 72 63 65  checkout --force
10380 20 2d 2d 6c 61 74 65 73 74 0a 20 20 20 20 66 6f   --latest.    fo
10390 73 73 69 6c 20 70 75 6c 6c 20 0a 20 20 20 20 66  ssil pull .    f
103a0 6f 73 73 69 6c 20 63 6c 6f 73 65 0a 20 20 20 20  ossil close.    
103b0 73 79 6e 63 3b 0a 7d 20 23 20 66 75 6e 5f 69 6e  sync;.} # fun_in
103c0 69 74 69 61 6c 69 7a 65 5f 73 61 6e 64 62 6f 78  itialize_sandbox
103d0 5f 74 31 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d  _t1...#---------
103e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
103f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10400 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10410 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10420 2d 0a 66 75 6e 5f 6c 61 73 74 5f 6d 69 6e 75 74  -.fun_last_minut
10430 65 5f 63 68 65 63 6b 73 5f 74 31 28 29 20 7b 0a  e_checks_t1() {.
10440 20 20 20 20 23 20 4c 61 73 74 20 6d 69 6e 75 74      # Last minut
10450 65 20 63 68 65 63 6b 73 2c 20 6a 75 73 74 20 74  e checks, just t
10460 6f 20 62 65 20 73 75 72 65 2e 0a 20 20 20 20 6c  o be sure..    l
10470 6f 63 61 6c 20 53 5f 46 50 5f 46 4f 52 42 49 44  ocal S_FP_FORBID
10480 44 45 4e 5f 56 41 4c 55 45 3d 24 31 0a 20 20 20  DEN_VALUE=$1.   
10490 20 69 66 20 5b 20 22 24 53 5f 46 50 5f 46 4f 52   if [ "$S_FP_FOR
104a0 42 49 44 44 45 4e 5f 56 41 4c 55 45 22 20 3d 3d  BIDDEN_VALUE" ==
104b0 20 22 2f 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20   "/" ]; then.   
104c0 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
104d0 20 20 20 20 20 65 63 68 6f 20 22 54 68 69 73 20       echo "This 
104e0 42 61 73 68 20 73 63 72 69 70 74 20 69 73 20 66  Bash script is f
104f0 6c 61 77 65 64 2e 22 0a 20 20 20 20 20 20 20 20  lawed.".        
10500 65 63 68 6f 20 22 47 55 49 44 3d 3d 27 31 66 38  echo "GUID=='1f8
10510 33 34 37 38 32 2d 31 30 36 31 2d 34 34 36 34 2d  34782-1061-4464-
10520 38 38 34 32 2d 33 31 35 32 36 30 63 31 35 31 65  8842-315260c151e
10530 37 27 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f  7'".        echo
10540 20 22 22 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d   "".        #---
10550 2d 0a 20 20 20 20 20 20 20 20 63 64 20 24 53 5f  -.        cd $S_
10560 46 50 5f 4f 52 49 47 0a 20 20 20 20 20 20 20 20  FP_ORIG.        
10570 65 78 69 74 20 31 0a 20 20 20 20 66 69 0a 20 20  exit 1.    fi.  
10580 20 20 69 66 20 5b 20 22 24 53 5f 46 50 5f 46 4f    if [ "$S_FP_FO
10590 52 42 49 44 44 45 4e 5f 56 41 4c 55 45 22 20 3d  RBIDDEN_VALUE" =
105a0 3d 20 22 24 48 4f 4d 45 22 20 5d 3b 20 74 68 65  = "$HOME" ]; the
105b0 6e 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  n.        echo "
105c0 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
105d0 54 68 69 73 20 42 61 73 68 20 73 63 72 69 70 74  This Bash script
105e0 20 69 73 20 66 6c 61 77 65 64 2e 22 0a 20 20 20   is flawed.".   
105f0 20 20 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d       echo "GUID=
10600 3d 27 32 32 39 35 34 34 66 32 2d 34 61 31 35 2d  ='229544f2-4a15-
10610 34 30 65 35 2d 61 34 34 32 2d 33 31 35 32 36 30  40e5-a442-315260
10620 63 31 35 31 65 37 27 22 0a 20 20 20 20 20 20 20  c151e7'".       
10630 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20   echo "".       
10640 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 63   #----.        c
10650 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20  d $S_FP_ORIG.   
10660 20 20 20 20 20 65 78 69 74 20 31 0a 20 20 20 20       exit 1.    
10670 66 69 0a 20 20 20 20 69 66 20 5b 20 22 24 53 5f  fi.    if [ "$S_
10680 46 50 5f 46 4f 52 42 49 44 44 45 4e 5f 56 41 4c  FP_FORBIDDEN_VAL
10690 55 45 22 20 3d 3d 20 22 2f 68 6f 6d 65 22 20 5d  UE" == "/home" ]
106a0 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 65  ; then.        e
106b0 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 65  cho "".        e
106c0 63 68 6f 20 22 54 68 69 73 20 42 61 73 68 20 73  cho "This Bash s
106d0 63 72 69 70 74 20 69 73 20 66 6c 61 77 65 64 2e  cript is flawed.
106e0 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22  ".        echo "
106f0 47 55 49 44 3d 3d 27 62 32 33 32 66 34 36 36 2d  GUID=='b232f466-
10700 33 35 64 32 2d 34 34 34 32 2d 62 63 38 32 2d 33  35d2-4442-bc82-3
10710 31 35 32 36 30 63 31 35 31 65 37 27 22 0a 20 20  15260c151e7'".  
10720 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20        echo "".  
10730 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20        #----.    
10740 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49      cd $S_FP_ORI
10750 47 0a 20 20 20 20 20 20 20 20 65 78 69 74 20 31  G.        exit 1
10760 0a 20 20 20 20 66 69 0a 20 20 20 20 69 66 20 5b  .    fi.    if [
10770 20 22 24 53 5f 46 50 5f 46 4f 52 42 49 44 44 45   "$S_FP_FORBIDDE
10780 4e 5f 56 41 4c 55 45 22 20 3d 3d 20 22 2f 72 6f  N_VALUE" == "/ro
10790 6f 74 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20  ot" ]; then.    
107a0 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
107b0 20 20 20 20 65 63 68 6f 20 22 54 68 69 73 20 42      echo "This B
107c0 61 73 68 20 73 63 72 69 70 74 20 69 73 20 66 6c  ash script is fl
107d0 61 77 65 64 2e 22 0a 20 20 20 20 20 20 20 20 65  awed.".        e
107e0 63 68 6f 20 22 47 55 49 44 3d 3d 27 35 39 63 30  cho "GUID=='59c0
107f0 38 36 61 35 2d 39 30 35 34 2d 34 39 35 64 2d 62  86a5-9054-495d-b
10800 30 32 32 2d 33 31 35 32 36 30 63 31 35 31 65 37  022-315260c151e7
10810 27 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20  '".        echo 
10820 22 22 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d  "".        #----
10830 0a 20 20 20 20 20 20 20 20 63 64 20 24 53 5f 46  .        cd $S_F
10840 50 5f 4f 52 49 47 0a 20 20 20 20 20 20 20 20 65  P_ORIG.        e
10850 78 69 74 20 31 0a 20 20 20 20 66 69 0a 20 20 20  xit 1.    fi.   
10860 20 69 66 20 5b 20 22 24 53 5f 46 50 5f 46 4f 52   if [ "$S_FP_FOR
10870 42 49 44 44 45 4e 5f 56 41 4c 55 45 22 20 3d 3d  BIDDEN_VALUE" ==
10880 20 22 2f 65 74 63 22 20 5d 3b 20 74 68 65 6e 0a   "/etc" ]; then.
10890 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
108a0 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 54 68          echo "Th
108b0 69 73 20 42 61 73 68 20 73 63 72 69 70 74 20 69  is Bash script i
108c0 73 20 66 6c 61 77 65 64 2e 22 0a 20 20 20 20 20  s flawed.".     
108d0 20 20 20 65 63 68 6f 20 22 47 55 49 44 3d 3d 27     echo "GUID=='
108e0 61 63 36 35 31 62 36 32 2d 33 63 34 33 2d 34 34  ac651b62-3c43-44
108f0 64 65 2d 39 61 61 31 2d 33 31 35 32 36 30 63 31  de-9aa1-315260c1
10900 35 31 65 37 27 22 0a 20 20 20 20 20 20 20 20 65  51e7'".        e
10910 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 23  cho "".        #
10920 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 63 64 20  ----.        cd 
10930 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20 20 20  $S_FP_ORIG.     
10940 20 20 20 65 78 69 74 20 31 0a 20 20 20 20 66 69     exit 1.    fi
10950 0a 20 20 20 20 69 66 20 5b 20 22 24 53 5f 46 50  .    if [ "$S_FP
10960 5f 46 4f 52 42 49 44 44 45 4e 5f 56 41 4c 55 45  _FORBIDDEN_VALUE
10970 22 20 3d 3d 20 22 2f 75 73 72 22 20 5d 3b 20 74  " == "/usr" ]; t
10980 68 65 6e 0a 20 20 20 20 20 20 20 20 65 63 68 6f  hen.        echo
10990 20 22 22 0a 20 20 20 20 20 20 20 20 65 63 68 6f   "".        echo
109a0 20 22 54 68 69 73 20 42 61 73 68 20 73 63 72 69   "This Bash scri
109b0 70 74 20 69 73 20 66 6c 61 77 65 64 2e 22 0a 20  pt is flawed.". 
109c0 20 20 20 20 20 20 20 65 63 68 6f 20 22 47 55 49         echo "GUI
109d0 44 3d 3d 27 34 30 64 63 66 32 30 31 2d 35 36 34  D=='40dcf201-564
109e0 36 2d 34 65 62 62 2d 62 64 31 31 2d 33 31 35 32  6-4ebb-bd11-3152
109f0 36 30 63 31 35 31 65 37 27 22 0a 20 20 20 20 20  60c151e7'".     
10a00 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20     echo "".     
10a10 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20     #----.       
10a20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a 20   cd $S_FP_ORIG. 
10a30 20 20 20 20 20 20 20 65 78 69 74 20 31 0a 20 20         exit 1.  
10a40 20 20 66 69 0a 7d 20 23 20 66 75 6e 5f 6c 61 73    fi.} # fun_las
10a50 74 5f 6d 69 6e 75 74 65 5f 63 68 65 63 6b 73 5f  t_minute_checks_
10a60 74 31 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  t1...#----------
10a70 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10a80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10a90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10aa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10ab0 0a 53 42 5f 46 4f 4c 44 45 52 5f 49 53 5f 45 4d  .SB_FOLDER_IS_EM
10ac0 50 54 59 3d 22 24 53 5f 4c 43 5f 4e 4f 54 5f 44  PTY="$S_LC_NOT_D
10ad0 45 54 45 52 4d 49 4e 45 44 22 0a 66 75 6e 5f 66  ETERMINED".fun_f
10ae0 6f 6c 64 65 72 5f 69 73 5f 65 6d 70 74 79 5f 74  older_is_empty_t
10af0 31 28 29 20 7b 0a 20 20 20 20 6c 6f 63 61 6c 20  1() {.    local 
10b00 53 5f 46 50 5f 46 4f 4c 44 45 52 5f 54 4f 5f 53  S_FP_FOLDER_TO_S
10b10 54 55 44 59 3d 24 31 0a 20 20 20 20 6c 6f 63 61  TUDY=$1.    loca
10b20 6c 20 53 5f 46 50 5f 4f 52 49 47 5f 4c 4f 43 41  l S_FP_ORIG_LOCA
10b30 4c 3d 22 60 70 77 64 60 22 0a 20 20 20 20 23 2d  L="`pwd`".    #-
10b40 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 53 42 5f 46  -------.    SB_F
10b50 4f 4c 44 45 52 5f 49 53 5f 45 4d 50 54 59 3d 22  OLDER_IS_EMPTY="
10b60 74 22 0a 20 20 20 20 6c 6f 63 61 6c 20 53 5f 54  t".    local S_T
10b70 4d 50 5f 30 3d 22 60 63 64 20 24 53 5f 46 50 5f  MP_0="`cd $S_FP_
10b80 46 4f 4c 44 45 52 5f 54 4f 5f 53 54 55 44 59 3b  FOLDER_TO_STUDY;
10b90 20 6c 73 20 2d 6c 20 7c 20 67 72 65 70 20 5c 22   ls -l | grep \"
10ba0 74 6f 74 61 6c 20 30 5c 22 60 22 0a 20 20 20 20  total 0\"`".    
10bb0 69 66 20 5b 20 22 24 53 5f 54 4d 50 5f 30 22 20  if [ "$S_TMP_0" 
10bc0 3d 3d 20 22 22 20 5d 3b 20 74 68 65 6e 0a 20 20  == "" ]; then.  
10bd0 20 20 20 20 20 20 53 42 5f 46 4f 4c 44 45 52 5f        SB_FOLDER_
10be0 49 53 5f 45 4d 50 54 59 3d 22 66 22 0a 20 20 20  IS_EMPTY="f".   
10bf0 20 66 69 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d   fi.    #-------
10c00 2d 0a 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f  -.    cd $S_FP_O
10c10 52 49 47 5f 4c 4f 43 41 4c 20 23 20 6a 75 73 74  RIG_LOCAL # just
10c20 20 69 6e 20 63 61 73 65 0a 7d 20 23 20 66 75 6e   in case.} # fun
10c30 5f 66 6f 6c 64 65 72 5f 69 73 5f 65 6d 70 74 79  _folder_is_empty
10c40 5f 74 31 0a 0a 66 75 6e 5f 66 6f 6c 64 65 72 5f  _t1..fun_folder_
10c50 69 73 5f 65 6d 70 74 79 5f 74 31 20 22 24 53 5f  is_empty_t1 "$S_
10c60 46 50 5f 44 49 52 22 0a 66 75 6e 5f 61 73 73 65  FP_DIR".fun_asse
10c70 72 74 69 6f 6e 5f 74 31 20 22 24 53 42 5f 46 4f  rtion_t1 "$SB_FO
10c80 4c 44 45 52 5f 49 53 5f 45 4d 50 54 59 22 0a 69  LDER_IS_EMPTY".i
10c90 66 20 5b 20 22 24 53 42 5f 46 4f 4c 44 45 52 5f  f [ "$SB_FOLDER_
10ca0 49 53 5f 45 4d 50 54 59 22 20 3d 3d 20 22 74 22  IS_EMPTY" == "t"
10cb0 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 65 63 68   ]; then.    ech
10cc0 6f 20 22 22 0a 20 20 20 20 65 63 68 6f 20 22 54  o "".    echo "T
10cd0 68 69 73 20 42 61 73 68 20 73 63 72 69 70 74 20  his Bash script 
10ce0 69 73 20 66 6c 61 77 65 64 2e 20 54 68 65 20 22  is flawed. The "
10cf0 0a 20 20 20 20 65 63 68 6f 20 22 24 53 5f 46 50  .    echo "$S_FP
10d00 5f 44 49 52 22 20 0a 20 20 20 20 65 63 68 6f 20  _DIR" .    echo 
10d10 22 63 61 6e 20 6e 6f 74 20 70 6f 73 73 69 62 6c  "can not possibl
10d20 79 20 62 65 20 65 6d 70 74 79 2c 20 62 65 63 61  y be empty, beca
10d30 75 73 65 20 69 74 20 63 6f 6e 74 61 69 6e 73 20  use it contains 
10d40 22 0a 20 20 20 20 65 63 68 6f 20 22 61 74 20 6c  ".    echo "at l
10d50 65 61 73 74 20 6f 6e 65 20 66 69 6c 65 2c 20 77  east one file, w
10d60 68 69 63 68 20 69 73 20 22 0a 20 20 20 20 65 63  hich is ".    ec
10d70 68 6f 20 22 74 68 69 73 20 76 65 72 79 20 73 61  ho "this very sa
10d80 6d 65 20 42 61 73 68 20 73 63 72 69 70 74 20 74  me Bash script t
10d90 68 61 74 20 6f 75 74 70 75 74 73 20 74 68 65 20  hat outputs the 
10da0 63 75 72 72 65 6e 74 20 65 72 72 6f 72 20 6d 65  current error me
10db0 73 73 61 67 65 2e 22 0a 20 20 20 20 65 63 68 6f  ssage.".    echo
10dc0 20 22 47 55 49 44 3d 3d 27 34 62 64 63 63 31 63   "GUID=='4bdcc1c
10dd0 34 2d 33 34 36 34 2d 34 30 32 35 2d 38 32 33 31  4-3464-4025-8231
10de0 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22 0a  -315260c151e7'".
10df0 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
10e00 23 2d 2d 2d 2d 0a 20 20 20 20 63 64 20 24 53 5f  #----.    cd $S_
10e10 46 50 5f 4f 52 49 47 0a 20 20 20 20 65 78 69 74  FP_ORIG.    exit
10e20 20 31 0a 66 69 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d   1.fi..#--------
10e30 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10e40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10e50 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10e60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10e70 2d 2d 0a 0a 66 75 6e 5f 61 63 74 69 76 69 74 79  --..fun_activity
10e80 5f 63 6f 72 65 5f 6f 76 65 72 77 72 69 74 65 5f  _core_overwrite_
10e90 6c 6f 63 61 6c 5f 77 69 74 68 5f 72 65 6d 6f 74  local_with_remot
10ea0 65 28 29 20 7b 0a 20 20 20 20 66 75 6e 5f 66 6f  e() {.    fun_fo
10eb0 73 73 69 6c 5f 72 65 70 6f 73 69 74 6f 72 79 5f  ssil_repository_
10ec0 66 69 6c 65 5f 6f 72 5f 73 79 6d 6c 69 6e 6b 5f  file_or_symlink_
10ed0 65 78 69 73 74 73 0a 20 20 20 20 69 66 20 5b 20  exists.    if [ 
10ee0 22 24 53 42 5f 46 4f 53 53 49 4c 46 49 4c 45 5f  "$SB_FOSSILFILE_
10ef0 45 58 49 53 54 53 22 20 3d 3d 20 22 74 22 20 5d  EXISTS" == "t" ]
10f00 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 66  ; then.        f
10f10 75 6e 5f 73 61 6e 64 62 6f 78 5f 66 6f 6c 64 65  un_sandbox_folde
10f20 72 5f 6f 72 5f 73 79 6d 6c 69 6e 6b 5f 65 78 69  r_or_symlink_exi
10f30 73 74 73 0a 20 20 20 20 20 20 20 20 69 66 20 5b  sts.        if [
10f40 20 22 24 53 42 5f 53 41 4e 44 42 4f 58 5f 44 49   "$SB_SANDBOX_DI
10f50 52 5f 45 58 49 53 54 53 22 20 3d 3d 20 22 66 22  R_EXISTS" == "f"
10f60 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
10f70 20 20 20 20 20 6d 6b 64 69 72 20 24 53 5f 46 50       mkdir $S_FP
10f80 5f 53 41 4e 44 42 4f 58 20 0a 20 20 20 20 20 20  _SANDBOX .      
10f90 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20    else.         
10fa0 20 20 20 69 66 20 5b 20 22 24 53 42 5f 53 41 4e     if [ "$SB_SAN
10fb0 44 42 4f 58 5f 44 49 52 5f 45 58 49 53 54 53 22  DBOX_DIR_EXISTS"
10fc0 20 21 3d 20 22 74 22 20 5d 3b 20 74 68 65 6e 0a   != "t" ]; then.
10fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10fe0 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
10ff0 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 54 68          echo "Th
11000 69 73 20 42 61 73 68 20 73 63 72 69 70 74 20 69  is Bash script i
11010 73 20 66 6c 61 77 65 64 2e 22 0a 20 20 20 20 20  s flawed.".     
11020 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20             echo 
11030 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  "".             
11040 20 20 20 65 63 68 6f 20 22 20 20 20 20 53 42 5f     echo "    SB_
11050 53 41 4e 44 42 4f 58 5f 44 49 52 5f 45 58 49 53  SANDBOX_DIR_EXIS
11060 54 53 3d 3d 24 53 42 5f 53 41 4e 44 42 4f 58 5f  TS==$SB_SANDBOX_
11070 44 49 52 5f 45 58 49 53 54 53 22 20 0a 20 20 20  DIR_EXISTS" .   
11080 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68               ech
11090 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20  o "".           
110a0 20 20 20 20 20 65 63 68 6f 20 22 41 62 6f 72 74       echo "Abort
110b0 69 6e 67 20 73 63 72 69 70 74 2e 22 0a 20 20 20  ing script.".   
110c0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68               ech
110d0 6f 20 22 47 55 49 44 3d 3d 27 31 37 37 64 31 39  o "GUID=='177d19
110e0 38 33 2d 66 37 62 30 2d 34 35 36 39 2d 62 61 33  83-f7b0-4569-ba3
110f0 31 2d 33 31 35 32 36 30 63 31 35 31 65 37 27 22  1-315260c151e7'"
11100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11110 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20   echo "".       
11120 20 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20           #----. 
11130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
11140 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20  d $S_FP_ORIG.   
11150 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 69               exi
11160 74 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 20  t 1.            
11170 66 69 0a 20 20 20 20 20 20 20 20 66 69 0a 20 20  fi.        fi.  
11180 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 69    else.        i
11190 66 20 5b 20 22 24 53 42 5f 46 4f 53 53 49 4c 46  f [ "$SB_FOSSILF
111a0 49 4c 45 5f 45 58 49 53 54 53 22 20 21 3d 20 22  ILE_EXISTS" != "
111b0 66 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20  f" ]; then.     
111c0 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20         echo "". 
111d0 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20             echo 
111e0 22 54 68 69 73 20 42 61 73 68 20 73 63 72 69 70  "This Bash scrip
111f0 74 20 69 73 20 66 6c 61 77 65 64 2e 22 0a 20 20  t is flawed.".  
11200 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
11210 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63  ".            ec
11220 68 6f 20 22 20 20 20 20 53 42 5f 46 4f 53 53 49  ho "    SB_FOSSI
11230 4c 46 49 4c 45 5f 45 58 49 53 54 53 3d 3d 24 53  LFILE_EXISTS==$S
11240 42 5f 46 4f 53 53 49 4c 46 49 4c 45 5f 45 58 49  B_FOSSILFILE_EXI
11250 53 54 53 22 20 0a 20 20 20 20 20 20 20 20 20 20  STS" .          
11260 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20    echo "".      
11270 20 20 20 20 20 20 65 63 68 6f 20 22 41 62 6f 72        echo "Abor
11280 74 69 6e 67 20 73 63 72 69 70 74 2e 22 0a 20 20  ting script.".  
11290 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
112a0 47 55 49 44 3d 3d 27 38 34 34 39 36 64 38 62 2d  GUID=='84496d8b-
112b0 31 31 33 30 2d 34 63 64 64 2d 61 63 31 31 2d 33  1130-4cdd-ac11-3
112c0 31 35 32 36 30 63 31 35 31 65 37 27 22 0a 20 20  15260c151e7'".  
112d0 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
112e0 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 2d  ".            #-
112f0 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ---.            
11300 63 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20  cd $S_FP_ORIG.  
11310 20 20 20 20 20 20 20 20 20 20 65 78 69 74 20 31            exit 1
11320 0a 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20  .        fi.    
11330 66 69 0a 20 20 20 20 66 75 6e 5f 61 73 73 65 72  fi.    fun_asser
11340 74 5f 72 65 70 6f 73 69 74 6f 72 79 5f 6c 6f 63  t_repository_loc
11350 61 6c 5f 63 6f 70 79 5f 65 78 69 73 74 65 6e 63  al_copy_existenc
11360 65 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a  e.    #--------.
11370 20 20 20 20 23 20 54 68 65 20 63 68 65 63 6b 73      # The checks
11380 20 61 72 65 20 70 61 72 74 79 20 74 6f 20 63 6f   are party to co
11390 70 65 20 77 69 74 68 20 74 68 65 20 60 77 68 6f  pe with the `who
113a0 61 6d 69 60 3d 3d 22 72 6f 6f 74 22 20 63 61 73  ami`=="root" cas
113b0 65 2e 0a 20 20 20 20 66 75 6e 5f 6c 61 73 74 5f  e..    fun_last_
113c0 6d 69 6e 75 74 65 5f 63 68 65 63 6b 73 5f 74 31  minute_checks_t1
113d0 20 22 24 53 5f 46 50 5f 53 41 4e 44 42 4f 58 22   "$S_FP_SANDBOX"
113e0 0a 20 20 20 20 66 75 6e 5f 6c 61 73 74 5f 6d 69  .    fun_last_mi
113f0 6e 75 74 65 5f 63 68 65 63 6b 73 5f 74 31 20 22  nute_checks_t1 "
11400 24 53 5f 46 50 5f 41 52 43 48 49 56 45 53 22 0a  $S_FP_ARCHIVES".
11410 20 20 20 20 66 75 6e 5f 6c 61 73 74 5f 6d 69 6e      fun_last_min
11420 75 74 65 5f 63 68 65 63 6b 73 5f 74 31 20 22 24  ute_checks_t1 "$
11430 53 5f 46 50 5f 41 52 43 48 49 56 45 53 5f 54 53  S_FP_ARCHIVES_TS
11440 22 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a  ".    #--------.
11450 20 20 20 20 63 68 6d 6f 64 20 2d 66 20 2d 52 20      chmod -f -R 
11460 75 2b 72 78 20 24 53 5f 46 50 5f 53 41 4e 44 42  u+rx $S_FP_SANDB
11470 4f 58 0a 20 20 20 20 66 75 6e 5f 66 6f 6c 64 65  OX.    fun_folde
11480 72 5f 69 73 5f 65 6d 70 74 79 5f 74 31 20 22 24  r_is_empty_t1 "$
11490 53 5f 46 50 5f 53 41 4e 44 42 4f 58 22 0a 20 20  S_FP_SANDBOX".  
114a0 20 20 69 66 20 5b 20 22 24 53 42 5f 46 4f 4c 44    if [ "$SB_FOLD
114b0 45 52 5f 49 53 5f 45 4d 50 54 59 22 20 3d 3d 20  ER_IS_EMPTY" == 
114c0 22 66 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20  "f" ]; then.    
114d0 20 20 20 20 23 20 54 68 69 73 20 69 66 2d 73 74      # This if-st
114e0 61 74 65 6d 65 6e 74 20 69 73 20 6e 65 65 64 65  atement is neede
114f0 64 20 62 65 63 61 75 73 65 20 74 68 65 20 0a 20  d because the . 
11500 20 20 20 20 20 20 20 23 20 20 20 20 20 20 63 70         #      cp
11510 20 2d 66 20 2d 52 20 41 6e 45 6d 70 74 79 44 69   -f -R AnEmptyDi
11520 72 65 63 74 6f 72 79 2f 2a 20 54 6f 53 6f 6d 65  rectory/* ToSome
11530 77 68 65 72 65 2f 0a 20 20 20 20 20 20 20 20 23  where/.        #
11540 20 67 69 76 65 73 20 61 6e 20 65 72 72 6f 72 2e   gives an error.
11550 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20  .        #----. 
11560 20 20 20 20 20 20 20 6d 6b 64 69 72 20 2d 70 20         mkdir -p 
11570 24 53 5f 46 50 5f 41 52 43 48 49 56 45 53 5f 54  $S_FP_ARCHIVES_T
11580 53 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a  S.        #----.
11590 20 20 20 20 20 20 20 20 23 20 54 68 65 20 22 63          # The "c
115a0 68 6d 6f 64 20 2d 66 20 2d 52 20 22 20 69 73 20  hmod -f -R " is 
115b0 6e 6f 74 20 75 73 65 64 20 62 65 63 61 75 73 65  not used because
115c0 20 69 74 20 77 6f 75 6c 64 0a 20 20 20 20 20 20   it would.      
115d0 20 20 23 20 77 61 73 74 65 20 74 69 6d 65 20 6f    # waste time o
115e0 6e 20 66 6f 6c 64 65 72 73 20 74 68 61 74 20 61  n folders that a
115f0 72 65 20 6e 61 6d 65 64 20 62 79 20 0a 20 20 20  re named by .   
11600 20 20 20 20 20 23 20 74 68 65 20 6f 6c 64 65 72       # the older
11610 20 24 53 5f 46 50 5f 41 52 43 48 49 56 45 53 5f   $S_FP_ARCHIVES_
11620 54 53 20 76 61 6c 75 65 73 2e 0a 20 20 20 20 20  TS values..     
11630 20 20 20 63 68 6d 6f 64 20 2d 66 20 30 37 30 30     chmod -f 0700
11640 20 24 53 5f 46 50 5f 41 52 43 48 49 56 45 53 0a   $S_FP_ARCHIVES.
11650 20 20 20 20 20 20 20 20 63 68 6d 6f 64 20 2d 66          chmod -f
11660 20 30 37 30 30 20 24 53 5f 46 50 5f 41 52 43 48   0700 $S_FP_ARCH
11670 49 56 45 53 5f 54 53 20 0a 20 20 20 20 20 20 20  IVES_TS .       
11680 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 23   #----.        #
11690 20 54 68 65 20 73 65 70 61 72 61 74 65 20 63 70   The separate cp
116a0 20 61 6e 64 20 72 6d 20 6f 66 20 74 68 65 20 73   and rm of the s
116b0 61 6e 64 62 6f 78 0a 20 20 20 20 20 20 20 20 23  andbox.        #
116c0 20 63 6f 6e 74 65 6e 74 73 20 69 73 20 74 6f 20   contents is to 
116d0 73 6f 6d 65 77 68 61 74 20 72 65 74 61 69 6e 20  somewhat retain 
116e0 74 68 65 20 6f 72 69 67 69 6e 61 6c 0a 20 20 20  the original.   
116f0 20 20 20 20 20 23 20 66 69 6c 65 20 70 72 65 6d       # file prem
11700 69 73 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 73  issions of the s
11710 61 6e 64 62 6f 78 20 63 6f 6e 74 65 6e 74 73 2e  andbox contents.
11720 0a 20 20 20 20 20 20 20 20 63 70 20 2d 66 20 2d  .        cp -f -
11730 52 20 24 53 5f 46 50 5f 53 41 4e 44 42 4f 58 2f  R $S_FP_SANDBOX/
11740 2a 20 24 53 5f 46 50 5f 41 52 43 48 49 56 45 53  * $S_FP_ARCHIVES
11750 5f 54 53 2f 0a 20 20 20 20 20 20 20 20 66 75 6e  _TS/.        fun
11760 5f 6c 61 73 74 5f 6d 69 6e 75 74 65 5f 63 68 65  _last_minute_che
11770 63 6b 73 5f 74 31 20 22 24 53 5f 46 50 5f 53 41  cks_t1 "$S_FP_SA
11780 4e 44 42 4f 58 22 0a 20 20 20 20 20 20 20 20 63  NDBOX".        c
11790 68 6d 6f 64 20 2d 66 20 2d 52 20 75 2b 72 77 78  hmod -f -R u+rwx
117a0 20 24 53 5f 46 50 5f 53 41 4e 44 42 4f 58 0a 20   $S_FP_SANDBOX. 
117b0 20 20 20 20 20 20 20 72 6d 20 2d 66 72 20 24 53         rm -fr $S
117c0 5f 46 50 5f 53 41 4e 44 42 4f 58 2f 2a 0a 20 20  _FP_SANDBOX/*.  
117d0 20 20 66 69 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d    fi.    #------
117e0 2d 2d 0a 20 20 20 20 63 64 20 24 53 5f 46 50 5f  --.    cd $S_FP_
117f0 53 41 4e 44 42 4f 58 0a 20 20 20 20 66 6f 73 73  SANDBOX.    foss
11800 69 6c 20 6f 70 65 6e 20 24 53 5f 46 50 5f 44 49  il open $S_FP_DI
11810 52 2f 24 53 5f 46 50 5f 46 4f 53 53 49 4c 46 49  R/$S_FP_FOSSILFI
11820 4c 45 5f 4e 41 4d 45 20 23 20 66 75 6c 6c 20 70  LE_NAME # full p
11830 61 74 68 20 66 6f 72 20 72 65 6c 69 61 62 69 6c  ath for reliabil
11840 69 74 79 20 0a 20 20 20 20 66 6f 73 73 69 6c 20  ity .    fossil 
11850 73 65 74 74 69 6e 67 73 20 61 75 74 6f 73 79 6e  settings autosyn
11860 63 20 6f 66 66 20 3b 0a 20 20 20 20 66 6f 73 73  c off ;.    foss
11870 69 6c 20 73 65 74 74 69 6e 67 73 20 62 69 6e 61  il settings bina
11880 72 79 2d 67 6c 6f 62 20 6f 6e 3b 0a 20 20 20 20  ry-glob on;.    
11890 66 6f 73 73 69 6c 20 73 65 74 74 69 6e 67 73 20  fossil settings 
118a0 63 61 73 65 2d 73 65 6e 73 69 74 69 76 65 20 54  case-sensitive T
118b0 52 55 45 20 3b 0a 20 20 20 20 66 6f 73 73 69 6c  RUE ;.    fossil
118c0 20 63 68 65 63 6b 6f 75 74 20 2d 2d 66 6f 72 63   checkout --forc
118d0 65 20 2d 2d 6c 61 74 65 73 74 0a 20 20 20 20 66  e --latest.    f
118e0 6f 73 73 69 6c 20 70 75 6c 6c 20 0a 20 20 20 20  ossil pull .    
118f0 66 6f 73 73 69 6c 20 63 6c 6f 73 65 0a 7d 20 23  fossil close.} #
11900 20 66 75 6e 5f 61 63 74 69 76 69 74 79 5f 63 6f   fun_activity_co
11910 72 65 5f 6f 76 65 72 77 72 69 74 65 5f 6c 6f 63  re_overwrite_loc
11920 61 6c 5f 77 69 74 68 5f 72 65 6d 6f 74 65 0a 0a  al_with_remote..
11930 0a 0a 69 66 20 5b 20 22 24 53 5f 41 43 54 49 56  ..if [ "$S_ACTIV
11940 49 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49  ITY_OF_THIS_SCRI
11950 50 54 22 20 3d 3d 20 22 6f 76 65 72 77 72 69 74  PT" == "overwrit
11960 65 5f 6c 6f 63 61 6c 5f 77 69 74 68 5f 72 65 6d  e_local_with_rem
11970 6f 74 65 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20  ote" ]; then.   
11980 20 66 75 6e 5f 61 63 74 69 76 69 74 79 5f 63 6f   fun_activity_co
11990 72 65 5f 6f 76 65 72 77 72 69 74 65 5f 6c 6f 63  re_overwrite_loc
119a0 61 6c 5f 77 69 74 68 5f 72 65 6d 6f 74 65 0a 20  al_with_remote. 
119b0 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 63 64 20     #----.    cd 
119c0 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20 20 65  $S_FP_ORIG.    e
119d0 78 69 74 20 30 0a 66 69 20 23 20 6f 76 65 72 77  xit 0.fi # overw
119e0 72 69 74 65 5f 6c 6f 63 61 6c 5f 77 69 74 68 5f  rite_local_with_
119f0 72 65 6d 6f 74 65 0a 0a 0a 0a 23 2d 2d 2d 2d 2d  remote....#-----
11a00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11a10 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11a20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11a30 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11a40 2d 2d 2d 2d 2d 0a 66 6f 73 73 69 6c 20 63 6c 6f  -----.fossil clo
11a50 73 65 20 32 3e 2f 64 65 76 2f 6e 75 6c 6c 0a 0a  se 2>/dev/null..
11a60 69 66 20 5b 20 22 24 53 5f 41 43 54 49 56 49 54  if [ "$S_ACTIVIT
11a70 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50 54  Y_OF_THIS_SCRIPT
11a80 22 20 3d 3d 20 22 63 6c 6f 6e 65 5f 70 75 62 6c  " == "clone_publ
11a90 69 63 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20  ic" ]; then.    
11aa0 66 75 6e 5f 61 73 73 65 72 74 5f 74 68 65 5f 6c  fun_assert_the_l
11ab0 61 63 6b 5f 6f 66 5f 72 65 70 6f 73 69 74 6f 72  ack_of_repositor
11ac0 79 5f 6c 6f 63 61 6c 5f 63 6f 70 79 5f 74 31 0a  y_local_copy_t1.
11ad0 20 20 20 20 63 64 20 24 53 5f 46 50 5f 44 49 52      cd $S_FP_DIR
11ae0 20 0a 20 20 20 20 66 6f 73 73 69 6c 20 63 6c 6f   .    fossil clo
11af0 6e 65 20 24 53 5f 55 52 4c 5f 52 45 4d 4f 54 45  ne $S_URL_REMOTE
11b00 5f 52 45 50 4f 53 49 54 4f 52 59 20 2e 2f 24 53  _REPOSITORY ./$S
11b10 5f 46 50 5f 46 4f 53 53 49 4c 46 49 4c 45 5f 4e  _FP_FOSSILFILE_N
11b20 41 4d 45 0a 20 20 20 20 66 75 6e 5f 69 6e 69 74  AME.    fun_init
11b30 69 61 6c 69 7a 65 5f 73 61 6e 64 62 6f 78 5f 74  ialize_sandbox_t
11b40 31 0a 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f  1.    cd $S_FP_O
11b50 52 49 47 0a 20 20 20 20 23 2d 2d 2d 2d 0a 20 20  RIG.    #----.  
11b60 20 20 73 79 6e 63 0a 20 20 20 20 66 75 6e 5f 61    sync.    fun_a
11b70 63 74 69 76 69 74 79 5f 63 6f 72 65 5f 6f 76 65  ctivity_core_ove
11b80 72 77 72 69 74 65 5f 6c 6f 63 61 6c 5f 77 69 74  rwrite_local_wit
11b90 68 5f 72 65 6d 6f 74 65 0a 20 20 20 20 63 64 20  h_remote.    cd 
11ba0 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20 20 73  $S_FP_ORIG.    s
11bb0 79 6e 63 0a 20 20 20 20 23 2d 2d 2d 2d 0a 20 20  ync.    #----.  
11bc0 20 20 65 78 69 74 20 30 0a 66 69 20 23 20 63 6c    exit 0.fi # cl
11bd0 6f 6e 65 5f 70 75 62 6c 69 63 0a 0a 0a 23 2d 2d  one_public...#--
11be0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11bf0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11c00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11c10 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11c20 2d 2d 2d 2d 2d 2d 2d 2d 0a 69 66 20 5b 20 22 24  --------.if [ "$
11c30 53 5f 41 43 54 49 56 49 54 59 5f 4f 46 5f 54 48  S_ACTIVITY_OF_TH
11c40 49 53 5f 53 43 52 49 50 54 22 20 3d 3d 20 22 63  IS_SCRIPT" == "c
11c50 6c 6f 6e 65 5f 61 6c 6c 22 20 5d 3b 20 74 68 65  lone_all" ]; the
11c60 6e 0a 20 20 20 20 66 75 6e 5f 61 73 73 65 72 74  n.    fun_assert
11c70 5f 74 68 65 5f 6c 61 63 6b 5f 6f 66 5f 72 65 70  _the_lack_of_rep
11c80 6f 73 69 74 6f 72 79 5f 6c 6f 63 61 6c 5f 63 6f  ository_local_co
11c90 70 79 5f 74 31 0a 20 20 20 20 63 64 20 24 53 5f  py_t1.    cd $S_
11ca0 46 50 5f 44 49 52 20 0a 20 20 20 20 23 2d 2d 2d  FP_DIR .    #---
11cb0 2d 2d 2d 2d 2d 0a 20 20 20 20 53 5f 55 53 45 52  -----.    S_USER
11cc0 4e 41 4d 45 3d 22 22 0a 20 20 20 20 77 68 69 6c  NAME="".    whil
11cd0 65 20 5b 20 22 24 53 5f 55 53 45 52 4e 41 4d 45  e [ "$S_USERNAME
11ce0 22 20 3d 3d 20 22 22 20 5d 0a 20 20 20 20 64 6f  " == "" ].    do
11cf0 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22  .        echo ""
11d00 0a 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 50  .        echo "P
11d10 6c 65 61 73 65 20 65 6e 74 65 72 20 61 20 75 73  lease enter a us
11d20 65 72 6e 61 6d 65 3a 20 22 0a 20 20 20 20 20 20  ername: ".      
11d30 20 20 53 5f 55 53 45 52 4e 41 4d 45 3d 22 60 72    S_USERNAME="`r
11d40 75 62 79 20 2d 65 20 5c 22 73 3d 67 65 74 73 2e  uby -e \"s=gets.
11d50 67 73 75 62 28 2f 5b 5c 6e 5c 72 5c 73 5d 2f 2c  gsub(/[\n\r\s]/,
11d60 27 27 29 3b 70 72 69 6e 74 28 73 29 5c 22 60 22  '');print(s)\"`"
11d70 20 0a 20 20 20 20 20 20 20 20 53 5f 55 52 4c 3d   .        S_URL=
11d80 22 60 65 78 70 6f 72 74 20 53 5f 55 53 45 52 4e  "`export S_USERN
11d90 41 4d 45 3d 5c 22 24 53 5f 55 53 45 52 4e 41 4d  AME=\"$S_USERNAM
11da0 45 5c 22 3b 20 53 5f 55 52 4c 3d 5c 22 24 53 5f  E\"; S_URL=\"$S_
11db0 55 52 4c 5f 52 45 4d 4f 54 45 5f 52 45 50 4f 53  URL_REMOTE_REPOS
11dc0 49 54 4f 52 59 5c 22 20 72 75 62 79 20 2d 65 20  ITORY\" ruby -e 
11dd0 27 73 5f 30 3d 45 4e 56 5b 5c 22 53 5f 55 52 4c  's_0=ENV[\"S_URL
11de0 5c 22 5d 2e 73 75 62 28 2f 5e 68 74 74 70 3a 5b  \"].sub(/^http:[
11df0 5c 5c 2f 5d 2b 2f 2c 5c 22 68 74 74 70 3a 2f 2f  \\/]+/,\"http://
11e00 5c 22 29 2e 73 75 62 28 2f 5e 68 74 74 70 73 3a  \").sub(/^https:
11e10 5b 5c 5c 2f 5d 2b 2f 2c 5c 22 68 74 74 70 73 3a  [\\/]+/,\"https:
11e20 2f 2f 5c 22 29 2e 73 75 62 28 5c 22 3a 2f 2f 5c  //\").sub(\"://\
11e30 22 2c 5c 22 3a 2f 2f 5c 22 2b 45 4e 56 5b 5c 22  ",\"://\"+ENV[\"
11e40 53 5f 55 53 45 52 4e 41 4d 45 5c 22 5d 2e 74 6f  S_USERNAME\"].to
11e50 5f 73 2b 5c 22 3a 6e 6f 6e 73 65 6e 73 65 70 61  _s+\":nonsensepa
11e60 73 73 77 6f 72 64 40 5c 22 29 3b 70 72 69 6e 74  ssword@\");print
11e70 28 73 5f 30 29 27 60 22 0a 20 20 20 20 64 6f 6e  (s_0)'`".    don
11e80 65 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a  e.    #--------.
11e90 20 20 20 20 66 6f 73 73 69 6c 20 63 6c 6f 6e 65      fossil clone
11ea0 20 2d 2d 70 72 69 76 61 74 65 20 24 53 5f 55 52   --private $S_UR
11eb0 4c 20 2e 2f 24 53 5f 46 50 5f 46 4f 53 53 49 4c  L ./$S_FP_FOSSIL
11ec0 46 49 4c 45 5f 4e 41 4d 45 0a 20 20 20 20 66 75  FILE_NAME.    fu
11ed0 6e 5f 69 6e 69 74 69 61 6c 69 7a 65 5f 73 61 6e  n_initialize_san
11ee0 64 62 6f 78 5f 74 31 0a 20 20 20 20 63 64 20 24  dbox_t1.    cd $
11ef0 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20 20 23 2d  S_FP_ORIG.    #-
11f00 2d 2d 2d 0a 20 20 20 20 73 79 6e 63 0a 20 20 20  ---.    sync.   
11f10 20 66 75 6e 5f 61 63 74 69 76 69 74 79 5f 63 6f   fun_activity_co
11f20 72 65 5f 6f 76 65 72 77 72 69 74 65 5f 6c 6f 63  re_overwrite_loc
11f30 61 6c 5f 77 69 74 68 5f 72 65 6d 6f 74 65 0a 20  al_with_remote. 
11f40 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49 47     cd $S_FP_ORIG
11f50 0a 20 20 20 20 73 79 6e 63 0a 20 20 20 20 23 2d  .    sync.    #-
11f60 2d 2d 2d 0a 20 20 20 20 65 78 69 74 20 30 0a 66  ---.    exit 0.f
11f70 69 20 23 20 63 6c 6f 6e 65 5f 61 6c 6c 0a 0a 0a  i # clone_all...
11f80 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  #---------------
11f90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11fa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11fb0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
11fc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 69 66 20 5b  -----------.if [
11fd0 20 22 24 53 5f 41 43 54 49 56 49 54 59 5f 4f 46   "$S_ACTIVITY_OF
11fe0 5f 54 48 49 53 5f 53 43 52 49 50 54 22 20 3d 3d  _THIS_SCRIPT" ==
11ff0 20 22 6f 76 65 72 77 72 69 74 65 5f 72 65 6d 6f   "overwrite_remo
12000 74 65 5f 77 69 74 68 5f 6c 6f 63 61 6c 22 20 5d  te_with_local" ]
12010 3b 20 74 68 65 6e 0a 20 20 20 20 66 75 6e 5f 61  ; then.    fun_a
12020 73 73 65 72 74 5f 72 65 70 6f 73 69 74 6f 72 79  ssert_repository
12030 5f 6c 6f 63 61 6c 5f 63 6f 70 79 5f 65 78 69 73  _local_copy_exis
12040 74 65 6e 63 65 0a 20 20 20 20 23 2d 2d 2d 2d 2d  tence.    #-----
12050 2d 2d 2d 0a 20 20 20 20 23 20 49 74 27 73 20 69  ---.    # It's i
12060 6d 70 6f 72 74 61 6e 74 20 74 68 61 74 20 74 68  mportant that th
12070 69 73 20 73 63 72 69 70 74 20 77 69 6c 6c 20 6e  is script will n
12080 6f 74 20 74 72 79 20 0a 20 20 20 20 23 20 74 6f  ot try .    # to
12090 20 72 65 63 75 72 73 69 76 65 6c 79 20 63 6f 70   recursively cop
120a0 79 2f 6d 6f 76 65 20 74 68 65 20 63 6f 6e 74 65  y/move the conte
120b0 6e 74 20 6f 66 20 74 68 65 20 22 2f 22 20 74 6f  nt of the "/" to
120c0 20 0a 20 20 20 20 23 20 61 20 73 75 62 66 6f 6c   .    # a subfol
120d0 64 65 72 20 6f 66 20 74 68 65 20 22 2f 22 2c 20  der of the "/", 
120e0 74 68 65 20 22 2f 74 6d 70 22 2e 20 0a 20 20 20  the "/tmp". .   
120f0 20 23 20 54 68 65 20 6f 74 68 65 72 20 66 6f 6c   # The other fol
12100 64 65 72 73 20 74 68 61 74 20 61 72 65 20 63 6f  ders that are co
12110 76 65 72 65 64 20 62 79 20 74 68 65 0a 20 20 20  vered by the.   
12120 20 23 20 74 65 73 74 20 61 72 65 20 61 20 62 69   # test are a bi
12130 74 20 6f 66 20 61 6e 20 6f 76 65 72 6b 69 6c 6c  t of an overkill
12140 20 68 65 72 65 2c 20 6d 61 79 20 62 65 20 65 76   here, may be ev
12150 65 6e 20 61 6e 0a 20 20 20 20 23 20 61 6e 6e 6f  en an.    # anno
12160 79 69 6e 67 20 61 6e 64 20 75 6e 6a 75 73 74 69  ying and unjusti
12170 66 69 65 64 20 72 65 73 74 72 69 63 74 69 6f 6e  fied restriction
12180 73 2c 20 62 75 74 20 0a 20 20 20 20 23 20 69 6e  s, but .    # in
12190 20 6d 6f 73 74 20 63 61 73 65 73 20 74 68 6f 73   most cases thos
121a0 65 20 72 65 73 74 72 69 63 74 69 6f 6e 73 20 64  e restrictions d
121b0 6f 20 6e 6f 74 20 68 75 72 74 20 65 69 74 68 65  o not hurt eithe
121c0 72 2e 0a 20 20 20 20 66 75 6e 5f 6c 61 73 74 5f  r..    fun_last_
121d0 6d 69 6e 75 74 65 5f 63 68 65 63 6b 73 5f 74 31  minute_checks_t1
121e0 20 22 24 53 5f 46 50 5f 53 41 4e 44 42 4f 58 22   "$S_FP_SANDBOX"
121f0 0a 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 53  .    #----.    S
12200 5f 54 4d 50 5f 30 3d 22 24 4d 4d 4d 56 5f 46 50  _TMP_0="$MMMV_FP
12210 5f 46 4f 53 53 49 4c 5f 4f 50 45 52 41 54 4f 52  _FOSSIL_OPERATOR
12220 5f 54 4d 50 2f 74 6d 70 5f 6d 6d 6d 76 5f 24 53  _TMP/tmp_mmmv_$S
12230 5f 56 45 52 53 49 4f 4e 5f 4f 46 5f 54 48 49 53  _VERSION_OF_THIS
12240 5f 53 43 52 49 50 54 22 0a 20 20 20 20 53 5f 54  _SCRIPT".    S_T
12250 4d 50 5f 31 3d 22 5f 5f 22 0a 20 20 20 20 23 2d  MP_1="__".    #-
12260 2d 0a 20 20 20 20 66 75 6e 63 5f 6d 6d 6d 76 5f  -.    func_mmmv_
12270 47 55 49 44 5f 74 31 0a 20 20 20 20 53 5f 54 4d  GUID_t1.    S_TM
12280 50 5f 46 4f 52 5f 4c 4f 43 41 4c 3d 22 24 53 5f  P_FOR_LOCAL="$S_
12290 54 4d 50 5f 30 24 53 5f 54 4d 50 5f 31 24 53 5f  TMP_0$S_TMP_1$S_
122a0 46 55 4e 43 5f 4d 4d 4d 56 5f 47 55 49 44 5f 54  FUNC_MMMV_GUID_T
122b0 31 5f 52 45 53 55 4c 54 22 0a 20 20 20 20 23 2d  1_RESULT".    #-
122c0 2d 0a 20 20 20 20 66 75 6e 63 5f 6d 6d 6d 76 5f  -.    func_mmmv_
122d0 47 55 49 44 5f 74 31 0a 20 20 20 20 53 5f 54 4d  GUID_t1.    S_TM
122e0 50 5f 46 4f 52 5f 43 4f 4d 4d 49 54 5f 4d 45 53  P_FOR_COMMIT_MES
122f0 53 41 47 45 3d 22 24 53 5f 54 4d 50 5f 30 24 53  SAGE="$S_TMP_0$S
12300 5f 54 4d 50 5f 31 24 53 5f 46 55 4e 43 5f 4d 4d  _TMP_1$S_FUNC_MM
12310 4d 56 5f 47 55 49 44 5f 54 31 5f 52 45 53 55 4c  MV_GUID_T1_RESUL
12320 54 22 0a 20 20 20 20 6d 6b 64 69 72 20 2d 70 20  T".    mkdir -p 
12330 24 53 5f 54 4d 50 5f 46 4f 52 5f 4c 4f 43 41 4c  $S_TMP_FOR_LOCAL
12340 0a 20 20 20 20 63 68 6d 6f 64 20 2d 66 20 2d 52  .    chmod -f -R
12350 20 75 2b 72 77 78 20 24 53 5f 46 50 5f 53 41 4e   u+rwx $S_FP_SAN
12360 44 42 4f 58 0a 20 20 20 20 6d 76 20 2d 66 20 24  DBOX.    mv -f $
12370 53 5f 46 50 5f 53 41 4e 44 42 4f 58 2f 2a 20 24  S_FP_SANDBOX/* $
12380 53 5f 54 4d 50 5f 46 4f 52 5f 4c 4f 43 41 4c 2f  S_TMP_FOR_LOCAL/
12390 20 23 20 74 68 65 20 2d 66 20 69 73 20 66 6f 72   # the -f is for
123a0 20 65 6d 70 74 79 20 73 61 6e 64 62 6f 78 0a 20   empty sandbox. 
123b0 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20     #--------.   
123c0 20 66 75 6e 5f 61 63 74 69 76 69 74 79 5f 63 6f   fun_activity_co
123d0 72 65 5f 6f 76 65 72 77 72 69 74 65 5f 6c 6f 63  re_overwrite_loc
123e0 61 6c 5f 77 69 74 68 5f 72 65 6d 6f 74 65 20 0a  al_with_remote .
123f0 20 20 20 20 66 75 6e 5f 6c 61 73 74 5f 6d 69 6e      fun_last_min
12400 75 74 65 5f 63 68 65 63 6b 73 5f 74 31 20 22 24  ute_checks_t1 "$
12410 53 5f 46 50 5f 53 41 4e 44 42 4f 58 22 20 23 20  S_FP_SANDBOX" # 
12420 73 68 6f 75 6c 64 20 74 68 65 72 65 20 62 65 20  should there be 
12430 66 6c 61 77 73 20 65 6c 73 65 77 68 65 72 65 0a  flaws elsewhere.
12440 20 20 20 20 63 68 6d 6f 64 20 2d 66 20 2d 52 20      chmod -f -R 
12450 75 2b 72 77 78 20 24 53 5f 46 50 5f 53 41 4e 44  u+rwx $S_FP_SAND
12460 42 4f 58 20 23 20 74 6f 20 62 65 20 61 62 6c 65  BOX # to be able
12470 20 74 6f 20 64 65 6c 65 74 65 20 74 68 65 20 6f   to delete the o
12480 6c 64 20 63 6f 6e 74 65 6e 74 0a 20 20 20 20 23  ld content.    #
12490 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 63 64 20  --------.    cd 
124a0 24 53 5f 46 50 5f 53 41 4e 44 42 4f 58 0a 20 20  $S_FP_SANDBOX.  
124b0 20 20 20 20 20 20 66 6f 73 73 69 6c 20 6f 70 65        fossil ope
124c0 6e 20 24 53 5f 46 50 5f 44 49 52 2f 24 53 5f 46  n $S_FP_DIR/$S_F
124d0 50 5f 46 4f 53 53 49 4c 46 49 4c 45 5f 4e 41 4d  P_FOSSILFILE_NAM
124e0 45 20 23 20 66 75 6c 6c 20 70 61 74 68 20 66 6f  E # full path fo
124f0 72 20 72 65 6c 69 61 62 69 6c 69 74 79 20 0a 20  r reliability . 
12500 20 20 20 20 20 20 20 66 6f 73 73 69 6c 20 73 65         fossil se
12510 74 74 69 6e 67 73 20 61 75 74 6f 73 79 6e 63 20  ttings autosync 
12520 6f 66 66 20 3b 0a 20 20 20 20 20 20 20 20 66 6f  off ;.        fo
12530 73 73 69 6c 20 73 65 74 74 69 6e 67 73 20 62 69  ssil settings bi
12540 6e 61 72 79 2d 67 6c 6f 62 20 6f 6e 3b 0a 20 20  nary-glob on;.  
12550 20 20 20 20 20 20 66 6f 73 73 69 6c 20 73 65 74        fossil set
12560 74 69 6e 67 73 20 63 61 73 65 2d 73 65 6e 73 69  tings case-sensi
12570 74 69 76 65 20 54 52 55 45 20 3b 0a 20 20 20 20  tive TRUE ;.    
12580 20 20 20 20 66 75 6e 5f 66 6f 6c 64 65 72 5f 69      fun_folder_i
12590 73 5f 65 6d 70 74 79 5f 74 31 20 22 24 53 5f 46  s_empty_t1 "$S_F
125a0 50 5f 53 41 4e 44 42 4f 58 22 0a 20 20 20 20 20  P_SANDBOX".     
125b0 20 20 20 53 42 5f 53 41 4e 44 42 4f 58 5f 43 4f     SB_SANDBOX_CO
125c0 4e 54 45 4e 54 5f 4d 49 47 48 54 5f 48 41 56 45  NTENT_MIGHT_HAVE
125d0 5f 42 45 45 4e 5f 43 48 41 4e 47 45 44 3d 22 66  _BEEN_CHANGED="f
125e0 22 0a 20 20 20 20 20 20 20 20 69 66 20 5b 20 22  ".        if [ "
125f0 24 53 42 5f 46 4f 4c 44 45 52 5f 49 53 5f 45 4d  $SB_FOLDER_IS_EM
12600 50 54 59 22 20 3d 3d 20 22 66 22 20 5d 3b 20 74  PTY" == "f" ]; t
12610 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  hen.            
12620 66 6f 73 73 69 6c 20 72 6d 20 2d 2d 68 61 72 64  fossil rm --hard
12630 20 2d 2d 63 61 73 65 2d 73 65 6e 73 69 74 69 76   --case-sensitiv
12640 65 20 54 52 55 45 20 2e 2f 2a 20 0a 20 20 20 20  e TRUE ./* .    
12650 20 20 20 20 20 20 20 20 53 42 5f 53 41 4e 44 42          SB_SANDB
12660 4f 58 5f 43 4f 4e 54 45 4e 54 5f 4d 49 47 48 54  OX_CONTENT_MIGHT
12670 5f 48 41 56 45 5f 42 45 45 4e 5f 43 48 41 4e 47  _HAVE_BEEN_CHANG
12680 45 44 3d 22 74 22 0a 20 20 20 20 20 20 20 20 20  ED="t".         
12690 20 20 20 66 75 6e 5f 6c 61 73 74 5f 6d 69 6e 75     fun_last_minu
126a0 74 65 5f 63 68 65 63 6b 73 5f 74 31 20 22 60 70  te_checks_t1 "`p
126b0 77 64 60 22 0a 20 20 20 20 20 20 20 20 20 20 20  wd`".           
126c0 20 69 66 20 5b 20 22 24 53 5f 46 50 5f 53 41 4e   if [ "$S_FP_SAN
126d0 44 42 4f 58 22 20 3d 3d 20 22 60 70 77 64 60 22  DBOX" == "`pwd`"
126e0 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20   ]; then.       
126f0 20 20 20 20 20 20 20 20 20 72 6d 20 2d 66 72 20           rm -fr 
12700 2e 2f 2a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ./*.            
12710 65 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20  else.           
12720 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20       echo "".   
12730 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68               ech
12740 6f 20 22 54 68 69 73 20 42 61 73 68 20 73 63 72  o "This Bash scr
12750 69 70 74 20 69 73 20 66 6c 61 77 65 64 2e 22 0a  ipt is flawed.".
12760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12770 65 63 68 6f 20 22 47 55 49 44 3d 3d 27 32 36 64  echo "GUID=='26d
12780 32 32 36 36 32 2d 38 38 37 38 2d 34 36 36 30 2d  22662-8878-4660-
12790 39 31 32 30 2d 33 31 35 32 36 30 63 31 35 31 65  9120-315260c151e
127a0 37 27 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  7'".            
127b0 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
127c0 20 20 20 20 20 20 20 20 20 20 20 20 23 2d 2d 2d              #---
127d0 2d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  -.              
127e0 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a    cd $S_FP_ORIG.
127f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12800 65 78 69 74 20 31 0a 20 20 20 20 20 20 20 20 20  exit 1.         
12810 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 66 69     fi.        fi
12820 0a 20 20 20 20 20 20 20 20 6d 76 20 2d 66 20 24  .        mv -f $
12830 53 5f 54 4d 50 5f 46 4f 52 5f 4c 4f 43 41 4c 2f  S_TMP_FOR_LOCAL/
12840 2a 20 24 53 5f 46 50 5f 53 41 4e 44 42 4f 58 2f  * $S_FP_SANDBOX/
12850 20 23 20 74 68 65 20 2d 66 20 69 73 20 66 6f 72   # the -f is for
12860 20 65 6d 70 74 79 20 73 6f 75 72 63 65 0a 20 20   empty source.  
12870 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20        #----.    
12880 20 20 20 20 66 75 6e 5f 6c 61 73 74 5f 6d 69 6e      fun_last_min
12890 75 74 65 5f 63 68 65 63 6b 73 5f 74 31 20 22 24  ute_checks_t1 "$
128a0 53 5f 54 4d 50 5f 46 4f 52 5f 4c 4f 43 41 4c 22  S_TMP_FOR_LOCAL"
128b0 0a 20 20 20 20 20 20 20 20 72 6d 20 2d 66 72 20  .        rm -fr 
128c0 24 53 5f 54 4d 50 5f 46 4f 52 5f 4c 4f 43 41 4c  $S_TMP_FOR_LOCAL
128d0 0a 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20  .        #----. 
128e0 20 20 20 20 20 20 20 66 75 6e 5f 66 6f 6c 64 65         fun_folde
128f0 72 5f 69 73 5f 65 6d 70 74 79 5f 74 31 20 22 24  r_is_empty_t1 "$
12900 53 5f 46 50 5f 53 41 4e 44 42 4f 58 22 0a 20 20  S_FP_SANDBOX".  
12910 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f        if [ "$SB_
12920 46 4f 4c 44 45 52 5f 49 53 5f 45 4d 50 54 59 22  FOLDER_IS_EMPTY"
12930 20 3d 3d 20 22 66 22 20 5d 3b 20 74 68 65 6e 0a   == "f" ]; then.
12940 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b              if [
12950 20 22 24 53 5f 46 50 5f 53 41 4e 44 42 4f 58 22   "$S_FP_SANDBOX"
12960 20 21 3d 20 22 60 70 77 64 60 22 20 5d 3b 20 74   != "`pwd`" ]; t
12970 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  hen.            
12980 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
12990 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
129a0 20 22 54 68 69 73 20 42 61 73 68 20 73 63 72 69   "This Bash scri
129b0 70 74 20 69 73 20 66 6c 61 77 65 64 2e 22 0a 20  pt is flawed.". 
129c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
129d0 63 68 6f 20 22 47 55 49 44 3d 3d 27 31 31 39 38  cho "GUID=='1198
129e0 65 32 66 33 2d 36 61 39 65 2d 34 31 38 64 2d 62  e2f3-6a9e-418d-b
129f0 35 39 30 2d 33 31 35 32 36 30 63 31 35 31 65 37  590-315260c151e7
12a00 27 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  '".             
12a10 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20     echo "".     
12a20 20 20 20 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d             #----
12a30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12a40 20 63 64 20 24 53 5f 46 50 5f 4f 52 49 47 0a 20   cd $S_FP_ORIG. 
12a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
12a60 78 69 74 20 31 0a 20 20 20 20 20 20 20 20 20 20  xit 1.          
12a70 20 20 66 69 0a 20 20 20 20 20 20 20 20 20 20 20    fi.           
12a80 20 66 69 6e 64 20 2e 20 2d 6e 61 6d 65 20 27 2a   find . -name '*
12a90 27 20 7c 20 78 61 72 67 73 20 66 6f 73 73 69 6c  ' | xargs fossil
12aa0 20 61 64 64 20 2d 2d 66 6f 72 63 65 20 2d 2d 64   add --force --d
12ab0 6f 74 66 69 6c 65 73 20 2d 2d 63 61 73 65 2d 73  otfiles --case-s
12ac0 65 6e 73 69 74 69 76 65 20 54 52 55 45 20 20 0a  ensitive TRUE  .
12ad0 20 20 20 20 20 20 20 20 20 20 20 20 53 42 5f 53              SB_S
12ae0 41 4e 44 42 4f 58 5f 43 4f 4e 54 45 4e 54 5f 4d  ANDBOX_CONTENT_M
12af0 49 47 48 54 5f 48 41 56 45 5f 42 45 45 4e 5f 43  IGHT_HAVE_BEEN_C
12b00 48 41 4e 47 45 44 3d 22 74 22 0a 20 20 20 20 20  HANGED="t".     
12b10 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 69 66     fi.        if
12b20 20 5b 20 22 24 53 42 5f 53 41 4e 44 42 4f 58 5f   [ "$SB_SANDBOX_
12b30 43 4f 4e 54 45 4e 54 5f 4d 49 47 48 54 5f 48 41  CONTENT_MIGHT_HA
12b40 56 45 5f 42 45 45 4e 5f 43 48 41 4e 47 45 44 22  VE_BEEN_CHANGED"
12b50 20 3d 3d 20 22 74 22 20 5d 3b 20 74 68 65 6e 0a   == "t" ]; then.
12b60 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b              if [
12b70 20 22 24 32 22 20 3d 3d 20 22 22 20 5d 3b 20 74   "$2" == "" ]; t
12b80 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  hen.            
12b90 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
12ba0 20 20 20 20 20 20 20 20 20 20 20 20 23 65 63 68              #ech
12bb0 6f 20 22 50 6c 65 61 73 65 20 65 6e 74 65 72 20  o "Please enter 
12bc0 61 20 6f 6e 65 2d 6c 69 6e 65 72 20 63 6f 6d 6d  a one-liner comm
12bd0 69 74 20 6d 65 73 73 61 67 65 3a 20 22 0a 20 20  it message: ".  
12be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 53                #S
12bf0 5f 54 4d 50 5f 30 3d 22 60 72 75 62 79 20 2d 65  _TMP_0="`ruby -e
12c00 20 5c 22 73 3d 67 65 74 73 2e 67 73 75 62 28 2f   \"s=gets.gsub(/
12c10 5b 5c 6e 5c 72 5c 73 5d 2f 2c 27 27 29 3b 70 72  [\n\r\s]/,'');pr
12c20 69 6e 74 28 73 29 5c 22 60 22 20 0a 20 20 20 20  int(s)\"`" .    
12c30 20 20 20 20 20 20 20 20 20 20 20 20 23 20 54 4f              # TO
12c40 44 4f 3a 20 69 6d 70 72 6f 76 65 20 74 68 69 73  DO: improve this
12c50 20 73 63 72 69 70 74 20 73 6f 20 74 68 61 74 20   script so that 
12c60 69 74 20 77 6f 75 6c 64 20 6e 6f 74 20 61 73 6b  it would not ask
12c70 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
12c80 20 20 23 20 66 6f 72 20 61 20 63 6f 6d 6d 69 74    # for a commit
12c90 20 6d 65 73 73 61 67 65 2c 20 77 68 65 6e 20 6e   message, when n
12ca0 6f 74 68 69 6e 67 20 63 68 61 6e 67 65 64 2e 20  othing changed. 
12cb0 49 74 20 72 65 71 75 69 72 65 73 0a 20 20 20 20  It requires.    
12cc0 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 6f              # so
12cd0 6d 65 20 72 65 63 75 72 73 69 76 65 20 61 6e 61  me recursive ana
12ce0 6c 79 73 69 73 20 6f 66 20 66 69 6c 65 73 2c 20  lysis of files, 
12cf0 77 68 69 63 68 20 6d 69 67 68 74 20 62 65 20 73  which might be s
12d00 6c 6f 77 2e 0a 20 20 20 20 20 20 20 20 20 20 20  low..           
12d10 20 20 20 20 20 23 20 54 68 69 73 20 73 63 72 69       # This scri
12d20 70 74 20 69 73 20 6e 6f 74 20 6f 70 74 69 6d 61  pt is not optima
12d30 6c 20 66 6f 72 20 73 70 65 65 64 20 65 76 65 6e  l for speed even
12d40 20 6e 6f 77 20 61 6e 64 20 74 68 61 74 20 77 6f   now and that wo
12d50 75 6c 64 0a 20 20 20 20 20 20 20 20 20 20 20 20  uld.            
12d60 20 20 20 20 23 20 6d 61 6b 65 20 69 74 20 65 76      # make it ev
12d70 65 6e 20 73 6c 6f 77 65 72 2e 20 4f 6e 20 74 68  en slower. On th
12d80 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 20 75 73  e other hand, us
12d90 75 61 6c 6c 79 20 77 68 65 6e 20 0a 20 20 20 20  ually when .    
12da0 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 68              # th
12db0 65 20 75 70 6c 6f 61 64 20 6f 70 65 72 61 74 69  e upload operati
12dc0 6f 6e 20 69 73 20 69 6e 69 74 69 61 74 65 64 2c  on is initiated,
12dd0 20 74 68 65 72 65 20 61 72 65 20 73 6f 6d 65 20   there are some 
12de0 63 68 61 6e 67 65 73 2c 0a 20 20 20 20 20 20 20  changes,.       
12df0 20 20 20 20 20 20 20 20 20 23 20 77 68 69 63 68           # which
12e00 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20   means that the 
12e10 73 6c 6f 77 20 61 6e 61 6c 79 73 69 73 20 77 6f  slow analysis wo
12e20 75 6c 64 20 62 65 20 75 73 65 6c 65 73 73 20 69  uld be useless i
12e30 6e 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n .             
12e40 20 20 20 23 20 6d 6f 73 74 20 66 72 65 71 75 65     # most freque
12e50 6e 74 20 63 61 73 65 73 2e 20 53 6f 20 74 68 69  nt cases. So thi
12e60 73 20 74 68 69 6e 67 20 6e 65 65 64 73 20 74 6f  s thing needs to
12e70 20 62 65 20 66 69 67 75 72 65 64 20 6f 75 74 20   be figured out 
12e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12e90 20 23 20 61 74 20 73 6f 6d 65 20 6c 61 74 65 72   # at some later
12ea0 20 74 69 6d 65 2c 20 77 68 65 6e 20 74 68 65 72   time, when ther
12eb0 65 20 69 73 20 6d 6f 72 65 20 65 78 70 65 72 69  e is more experi
12ec0 65 6e 63 65 20 77 69 74 68 20 74 68 65 0a 20 20  ence with the.  
12ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20                # 
12ee0 75 73 65 20 6f 66 20 74 68 69 73 20 73 63 72 69  use of this scri
12ef0 70 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20  pt..            
12f00 20 20 20 20 72 65 61 64 20 2d 70 20 22 50 6c 65      read -p "Ple
12f10 61 73 65 20 65 6e 74 65 72 20 61 20 6f 6e 65 2d  ase enter a one-
12f20 6c 69 6e 65 72 20 63 6f 6d 6d 69 74 20 6d 65 73  liner commit mes
12f30 73 61 67 65 3a 20 22 20 53 5f 54 4d 50 5f 30 0a  sage: " S_TMP_0.
12f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f50 65 63 68 6f 20 24 53 5f 54 4d 50 5f 30 20 3e 20  echo $S_TMP_0 > 
12f60 24 53 5f 54 4d 50 5f 46 4f 52 5f 43 4f 4d 4d 49  $S_TMP_FOR_COMMI
12f70 54 5f 4d 45 53 53 41 47 45 0a 20 20 20 20 20 20  T_MESSAGE.      
12f80 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20        else.     
12f90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b 20             if [ 
12fa0 22 24 32 22 20 3d 3d 20 22 75 73 65 5f 61 75 74  "$2" == "use_aut
12fb0 6f 67 65 6e 65 72 61 74 65 64 5f 63 6f 6d 6d 69  ogenerated_commi
12fc0 74 5f 6d 65 73 73 61 67 65 22 20 5d 3b 20 74 68  t_message" ]; th
12fd0 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  en.             
12fe0 20 20 20 20 20 20 20 65 63 68 6f 20 22 41 75 74         echo "Aut
12ff0 6f 67 65 6e 65 72 61 74 65 64 20 63 6f 6d 6d 69  ogenerated commi
13000 74 20 6d 65 73 73 61 67 65 20 74 69 6d 65 73 74  t message timest
13010 61 6d 70 3a 20 24 53 5f 54 49 4d 45 53 54 41 4d  amp: $S_TIMESTAM
13020 50 22 20 3e 20 24 53 5f 54 4d 50 5f 46 4f 52 5f  P" > $S_TMP_FOR_
13030 43 4f 4d 4d 49 54 5f 4d 45 53 53 41 47 45 0a 20  COMMIT_MESSAGE. 
13040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
13050 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  lse.            
13060 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 32          if [ "$2
13070 22 20 3d 3d 20 22 72 65 61 64 5f 63 6f 6d 6d 69  " == "read_commi
13080 74 5f 6d 65 73 73 61 67 65 5f 66 72 6f 6d 5f 66  t_message_from_f
13090 69 6c 65 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20  ile" ]; then.   
130a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
130b0 20 20 20 20 20 53 5f 46 50 5f 4d 45 53 53 41 47       S_FP_MESSAG
130c0 45 5f 46 49 4c 45 5f 43 41 4e 44 49 44 41 54 45  E_FILE_CANDIDATE
130d0 3d 22 24 33 22 20 23 20 66 69 6c 65 20 70 61 74  ="$3" # file pat
130e0 68 20 63 61 6e 64 69 64 61 74 65 0a 20 20 20 20  h candidate.    
130f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13100 20 20 20 20 23 20 49 6e 69 74 69 61 6c 20 66 69      # Initial fi
13110 6c 65 20 65 78 69 73 74 65 6e 63 65 20 61 6e 64  le existence and
13120 20 74 79 70 65 20 63 68 65 63 6b 73 20 66 6f 72   type checks for
13130 20 74 68 65 20 0a 20 20 20 20 20 20 20 20 20 20   the .          
13140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20                # 
13150 24 53 5f 46 50 5f 4d 45 53 53 41 47 45 5f 46 49  $S_FP_MESSAGE_FI
13160 4c 45 5f 43 41 4e 44 49 44 41 54 45 20 0a 20 20  LE_CANDIDATE .  
13170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13180 20 20 20 20 20 20 23 20 77 65 72 65 20 63 6f 6e        # were con
13190 64 75 63 74 65 64 20 61 74 20 74 68 65 20 73 74  ducted at the st
131a0 61 72 74 20 6f 66 20 74 68 65 20 73 63 72 69 70  art of the scrip
131b0 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
131c0 20 20 20 20 20 20 20 20 20 20 20 23 20 62 75 74             # but
131d0 20 74 68 65 20 24 53 5f 46 50 5f 4d 45 53 53 41   the $S_FP_MESSA
131e0 47 45 5f 46 49 4c 45 5f 43 41 4e 44 49 44 41 54  GE_FILE_CANDIDAT
131f0 45 20 20 6d 69 67 68 74 20 68 61 76 65 0a 20 20  E  might have.  
13200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13210 20 20 20 20 20 20 23 20 72 65 66 65 72 65 6e 63        # referenc
13220 65 64 20 61 20 66 69 6c 65 20 69 6e 20 74 68 65  ed a file in the
13230 20 73 61 6e 64 62 6f 78 20 61 6e 64 20 0a 20 20   sandbox and .  
13240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13250 20 20 20 20 20 20 23 20 74 68 61 74 20 66 69 6c        # that fil
13260 65 20 6d 69 67 68 74 20 68 61 76 65 20 62 65 65  e might have bee
13270 6e 20 6a 75 73 74 20 72 65 6d 6f 76 65 64 2f 64  n just removed/d
13280 65 6c 65 74 65 64 2e 0a 20 20 20 20 20 20 20 20  eleted..        
13290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132a0 23 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  #.              
132b0 20 20 20 20 20 20 20 20 20 20 23 20 54 68 65 72            # Ther
132c0 65 20 69 73 20 6e 6f 20 74 68 72 65 61 74 20 74  e is no threat t
132d0 68 61 74 20 74 68 65 20 66 69 6c 65 20 67 6f 74  hat the file got
132e0 20 63 68 61 6e 67 65 64 20 74 6f 20 61 20 66 6f   changed to a fo
132f0 6c 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20  lder.           
13300 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6f               # o
13310 72 20 61 20 73 79 6d 6c 69 6e 6b 20 73 77 69 74  r a symlink swit
13320 63 68 65 64 20 66 72 6f 6d 20 61 20 66 69 6c 65  ched from a file
13330 20 74 6f 20 61 20 66 6f 6c 64 65 72 2c 0a 20 20   to a folder,.  
13340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13350 20 20 20 20 20 20 23 20 61 74 20 6c 65 61 73 74        # at least
13360 20 74 68 61 74 27 73 20 74 68 65 20 63 61 73 65   that's the case
13370 20 66 6f 72 20 74 68 65 20 73 69 6e 67 6c 65 20   for the single 
13380 74 68 72 65 61 64 65 64 20 6d 6f 64 65 6c 2e 0a  threaded model..
13390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
133a0 20 20 20 20 20 20 20 20 69 66 20 5b 20 21 20 2d          if [ ! -
133b0 65 20 22 24 53 5f 46 50 5f 4d 45 53 53 41 47 45  e "$S_FP_MESSAGE
133c0 5f 46 49 4c 45 5f 43 41 4e 44 49 44 41 54 45 22  _FILE_CANDIDATE"
133d0 20 5d 3b 20 74 68 65 6e 20 0a 20 20 20 20 20 20   ]; then .      
133e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
133f0 20 20 20 20 20 20 23 20 6d 69 73 73 69 6e 67 20        # missing 
13400 6f 72 20 61 20 62 72 6f 6b 65 6e 20 73 79 6d 6c  or a broken syml
13410 69 6e 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ink.            
13420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13430 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20  echo "".        
13440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13450 20 20 20 20 65 63 68 6f 20 22 54 68 65 20 63 6f      echo "The co
13460 6d 6d 69 74 20 6d 65 73 73 61 67 65 20 66 69 6c  mmit message fil
13470 65 20 69 73 20 6d 69 73 73 69 6e 67 20 6f 72 20  e is missing or 
13480 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
13490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
134a0 68 6f 20 22 72 65 66 65 72 65 6e 63 65 73 20 61  ho "references a
134b0 20 62 72 6f 6b 65 6e 20 73 79 6d 6c 69 6e 6b 2e   broken symlink.
134c0 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
134d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
134e0 68 6f 20 22 54 68 65 20 66 69 6c 65 20 6f 72 20  ho "The file or 
134f0 73 79 6d 6c 69 6e 6b 20 74 6f 20 69 74 20 77 61  symlink to it wa
13500 73 20 66 69 6e 65 20 61 74 20 22 0a 20 20 20 20  s fine at ".    
13510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13520 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 74 68          echo "th
13530 65 20 73 74 61 72 74 20 6f 66 20 74 68 69 73 20  e start of this 
13540 73 63 72 69 70 74 2c 20 69 74 20 70 61 73 73 65  script, it passe
13550 64 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 65  d the various te
13560 73 74 73 2c 20 22 0a 20 20 20 20 20 20 20 20 20  sts, ".         
13570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13580 20 20 20 65 63 68 6f 20 22 62 75 74 20 66 6f 72     echo "but for
13590 20 73 6f 6d 65 20 72 65 61 73 6f 6e 20 69 74 20   some reason it 
135a0 67 6f 74 20 64 65 6c 65 74 65 64 20 6f 72 20 69  got deleted or i
135b0 74 73 20 74 61 72 67 65 74 20 2e 20 22 0a 20 20  ts target . ".  
135c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135d0 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
135e0 67 6f 74 20 64 65 6c 65 74 65 64 2e 20 49 66 20  got deleted. If 
135f0 74 68 65 20 63 6f 6d 6d 69 74 20 6d 65 73 73 61  the commit messa
13600 67 65 20 66 69 6c 65 20 6f 72 22 0a 20 20 20 20  ge file or".    
13610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13620 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 74 68          echo "th
13630 65 20 73 79 6d 6c 69 6e 6b 20 74 61 72 67 65 74  e symlink target
13640 20 72 65 73 69 64 65 64 20 77 69 74 68 69 6e 20   resided within 
13650 74 68 65 20 73 61 6e 64 62 6f 78 2c 20 74 68 65  the sandbox, the
13660 6e 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  n ".            
13670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13680 65 63 68 6f 20 22 61 20 72 65 63 6f 6d 6d 65 6e  echo "a recommen
13690 64 61 74 69 6f 6e 20 69 73 20 74 6f 20 75 73 65  dation is to use
136a0 20 61 20 66 69 6c 65 20 74 68 61 74 20 72 65 73   a file that res
136b0 69 64 65 73 20 22 0a 20 20 20 20 20 20 20 20 20  ides ".         
136c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136d0 20 20 20 65 63 68 6f 20 22 6f 75 74 73 69 64 65     echo "outside
136e0 20 6f 66 20 74 68 65 20 73 61 6e 64 62 6f 78 2e   of the sandbox.
136f0 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
13700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
13710 68 6f 20 22 47 55 49 44 3d 3d 27 64 34 31 33 64  ho "GUID=='d413d
13720 35 35 61 2d 65 38 39 37 2d 34 39 34 30 2d 62 33  55a-e897-4940-b3
13730 33 30 2d 33 31 35 32 36 30 63 31 35 31 65 37 27  30-315260c151e7'
13740 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
13750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
13760 68 6f 20 22 22 0a 20 20 20 20 20 20 20 20 20 20  ho "".          
13770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13780 20 20 23 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20    #----.        
13790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137a0 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49      cd $S_FP_ORI
137b0 47 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  G.              
137c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78                ex
137d0 69 74 20 31 0a 20 20 20 20 20 20 20 20 20 20 20  it 1.           
137e0 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a               fi.
137f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13800 20 20 20 20 20 20 20 20 69 66 20 5b 20 2d 64 20          if [ -d 
13810 22 24 53 5f 46 50 5f 4d 45 53 53 41 47 45 5f 46  "$S_FP_MESSAGE_F
13820 49 4c 45 5f 43 41 4e 44 49 44 41 54 45 22 20 5d  ILE_CANDIDATE" ]
13830 3b 20 74 68 65 6e 20 0a 20 20 20 20 20 20 20 20  ; then .        
13840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13850 20 20 20 20 23 20 66 6f 6c 64 65 72 20 6f 72 20      # folder or 
13860 61 20 73 79 6d 6c 69 6e 6b 20 74 6f 20 61 20 66  a symlink to a f
13870 6f 6c 64 65 72 0a 20 20 20 20 20 20 20 20 20 20  older.          
13880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13890 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20 20 20    echo "".      
138a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138b0 20 20 20 20 20 20 65 63 68 6f 20 22 54 68 65 20        echo "The 
138c0 63 6f 6d 6d 69 74 20 6d 65 73 73 61 67 65 20 66  commit message f
138d0 69 6c 65 20 70 61 74 68 20 64 6f 65 73 20 6e 6f  ile path does no
138e0 74 20 72 65 66 65 72 65 6e 63 65 20 22 0a 20 20  t reference ".  
138f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13900 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22            echo "
13910 61 20 66 69 6c 65 2e 20 49 74 20 72 65 66 65 72  a file. It refer
13920 65 6e 63 65 73 20 61 20 66 6f 6c 64 65 72 20 6f  ences a folder o
13930 72 20 61 20 73 79 6d 6c 69 6e 6b 20 74 6f 20 61  r a symlink to a
13940 20 66 6f 6c 64 65 72 2e 22 0a 20 20 20 20 20 20   folder.".      
13950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13960 20 20 20 20 20 20 65 63 68 6f 20 22 54 68 65 20        echo "The 
13970 66 69 6c 65 20 6f 72 20 73 79 6d 6c 69 6e 6b 20  file or symlink 
13980 74 6f 20 69 74 20 77 61 73 20 66 69 6e 65 20 61  to it was fine a
13990 74 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  t ".            
139a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
139b0 65 63 68 6f 20 22 74 68 65 20 73 74 61 72 74 20  echo "the start 
139c0 6f 66 20 74 68 69 73 20 73 63 72 69 70 74 2c 20  of this script, 
139d0 69 74 20 70 61 73 73 65 64 20 74 68 65 20 76 61  it passed the va
139e0 72 69 6f 75 73 20 74 65 73 74 73 2c 20 22 0a 20  rious tests, ". 
139f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a00 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20             echo 
13a10 22 62 75 74 20 66 6f 72 20 73 6f 6d 65 20 72 65  "but for some re
13a20 61 73 6f 6e 20 74 68 65 72 65 20 77 65 72 65 20  ason there were 
13a30 63 68 61 6e 67 65 73 2e 20 22 0a 20 20 20 20 20  changes. ".     
13a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a50 20 20 20 20 20 20 20 65 63 68 6f 20 22 47 55 49         echo "GUI
13a60 44 3d 3d 27 66 34 62 64 31 39 32 62 2d 37 31 63  D=='f4bd192b-71c
13a70 30 2d 34 32 61 62 2d 39 39 63 30 2d 33 31 35 32  0-42ab-99c0-3152
13a80 36 30 63 31 35 31 65 37 27 22 0a 20 20 20 20 20  60c151e7'".     
13a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13aa0 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20         echo "". 
13ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ac0 20 20 20 20 20 20 20 20 20 20 20 23 2d 2d 2d 2d             #----
13ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 64 20               cd 
13af0 24 53 5f 46 50 5f 4f 52 49 47 0a 20 20 20 20 20  $S_FP_ORIG.     
13b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b10 20 20 20 20 20 20 20 65 78 69 74 20 31 0a 20 20         exit 1.  
13b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b30 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20        fi.       
13b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b50 20 63 61 74 20 24 53 5f 46 50 5f 4d 45 53 53 41   cat $S_FP_MESSA
13b60 47 45 5f 46 49 4c 45 5f 43 41 4e 44 49 44 41 54  GE_FILE_CANDIDAT
13b70 45 20 3e 20 24 53 5f 54 4d 50 5f 46 4f 52 5f 43  E > $S_TMP_FOR_C
13b80 4f 4d 4d 49 54 5f 4d 45 53 53 41 47 45 0a 20 20  OMMIT_MESSAGE.  
13b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ba0 20 20 23 20 65 6c 73 65 0a 20 20 20 20 20 20 20    # else.       
13bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20               #  
13bc0 20 20 20 44 75 65 20 74 6f 20 74 68 65 20 63 68     Due to the ch
13bd0 65 63 6b 73 20 61 74 20 74 68 65 20 73 74 61 72  ecks at the star
13be0 74 20 6f 66 20 74 68 65 20 73 63 72 69 70 74 20  t of the script 
13bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13c00 20 20 20 20 20 23 20 20 20 20 20 74 68 69 73 20       #     this 
13c10 65 6c 73 65 20 62 72 61 6e 63 68 20 69 73 20 75  else branch is u
13c20 73 65 6c 65 73 73 2e 0a 20 20 20 20 20 20 20 20  seless..        
13c30 20 20 20 20 20 20 20 20 20 20 20 20 66 69 0a 20              fi. 
13c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
13c50 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  i.            fi
13c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 2d 2d  .            #--
13c70 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20  ------.         
13c80 20 20 20 66 6f 73 73 69 6c 20 63 6f 6d 6d 69 74     fossil commit
13c90 20 2d 2d 6d 65 73 73 61 67 65 2d 66 69 6c 65 20   --message-file 
13ca0 24 53 5f 54 4d 50 5f 46 4f 52 5f 43 4f 4d 4d 49  $S_TMP_FOR_COMMI
13cb0 54 5f 4d 45 53 53 41 47 45 0a 20 20 20 20 20 20  T_MESSAGE.      
13cc0 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20        #----.    
13cd0 20 20 20 20 20 20 20 20 66 75 6e 5f 6c 61 73 74          fun_last
13ce0 5f 6d 69 6e 75 74 65 5f 63 68 65 63 6b 73 5f 74  _minute_checks_t
13cf0 31 20 22 24 53 5f 54 4d 50 5f 46 4f 52 5f 43 4f  1 "$S_TMP_FOR_CO
13d00 4d 4d 49 54 5f 4d 45 53 53 41 47 45 22 0a 20 20  MMIT_MESSAGE".  
13d10 20 20 20 20 20 20 20 20 20 20 72 6d 20 2d 66 20            rm -f 
13d20 24 53 5f 54 4d 50 5f 46 4f 52 5f 43 4f 4d 4d 49  $S_TMP_FOR_COMMI
13d30 54 5f 4d 45 53 53 41 47 45 0a 20 20 20 20 20 20  T_MESSAGE.      
13d40 20 20 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20        #----.    
13d50 20 20 20 20 66 69 0a 20 20 20 20 23 2d 2d 2d 2d      fi.    #----
13d60 2d 2d 2d 2d 0a 20 20 20 20 66 6f 73 73 69 6c 20  ----.    fossil 
13d70 70 75 73 68 20 2d 2d 70 72 69 76 61 74 65 0a 20  push --private. 
13d80 20 20 20 66 6f 73 73 69 6c 20 70 75 73 68 20 0a     fossil push .
13d90 20 20 20 20 66 6f 73 73 69 6c 20 70 75 6c 6c 20      fossil pull 
13da0 2d 2d 70 72 69 76 61 74 65 0a 20 20 20 20 66 6f  --private.    fo
13db0 73 73 69 6c 20 63 6c 6f 73 65 0a 20 20 20 20 23  ssil close.    #
13dc0 2d 2d 2d 2d 0a 20 20 20 20 63 64 20 24 53 5f 46  ----.    cd $S_F
13dd0 50 5f 4f 52 49 47 0a 20 20 20 20 65 78 69 74 20  P_ORIG.    exit 
13de0 30 0a 66 69 20 23 20 6f 76 65 72 77 72 69 74 65  0.fi # overwrite
13df0 5f 72 65 6d 6f 74 65 5f 77 69 74 68 5f 6c 6f 63  _remote_with_loc
13e00 61 6c 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  al...#----------
13e10 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
13e20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
13e30 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
13e40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
13e50 0a 69 66 20 5b 20 22 24 53 5f 41 43 54 49 56 49  .if [ "$S_ACTIVI
13e60 54 59 5f 4f 46 5f 54 48 49 53 5f 53 43 52 49 50  TY_OF_THIS_SCRIP
13e70 54 22 20 3d 3d 20 22 64 65 6c 65 74 65 5f 6c 6f  T" == "delete_lo
13e80 63 61 6c 5f 63 6f 70 79 22 20 5d 3b 20 74 68 65  cal_copy" ]; the
13e90 6e 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a  n.    #--------.
13ea0 20 20 20 20 53 42 5f 54 48 45 52 45 5f 49 53 5f      SB_THERE_IS_
13eb0 53 4f 4d 45 54 48 49 4e 47 5f 54 4f 5f 44 45 4c  SOMETHING_TO_DEL
13ec0 45 54 45 3d 22 66 22 0a 20 20 20 20 69 66 20 5b  ETE="f".    if [
13ed0 20 22 24 53 42 5f 46 4f 53 53 49 4c 46 49 4c 45   "$SB_FOSSILFILE
13ee0 5f 45 58 49 53 54 53 22 20 3d 3d 20 22 74 22 20  _EXISTS" == "t" 
13ef0 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20  ]; then.        
13f00 53 42 5f 54 48 45 52 45 5f 49 53 5f 53 4f 4d 45  SB_THERE_IS_SOME
13f10 54 48 49 4e 47 5f 54 4f 5f 44 45 4c 45 54 45 3d  THING_TO_DELETE=
13f20 22 74 22 0a 20 20 20 20 66 69 0a 20 20 20 20 69  "t".    fi.    i
13f30 66 20 5b 20 22 24 53 42 5f 53 41 4e 44 42 4f 58  f [ "$SB_SANDBOX
13f40 5f 44 49 52 5f 45 58 49 53 54 53 22 20 3d 3d 20  _DIR_EXISTS" == 
13f50 22 74 22 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20  "t" ]; then.    
13f60 20 20 20 20 53 42 5f 54 48 45 52 45 5f 49 53 5f      SB_THERE_IS_
13f70 53 4f 4d 45 54 48 49 4e 47 5f 54 4f 5f 44 45 4c  SOMETHING_TO_DEL
13f80 45 54 45 3d 22 74 22 0a 20 20 20 20 66 69 0a 20  ETE="t".    fi. 
13f90 20 20 20 69 66 20 5b 20 22 24 53 42 5f 41 52 43     if [ "$SB_ARC
13fa0 48 49 56 45 5f 44 49 52 5f 45 58 49 53 54 53 22  HIVE_DIR_EXISTS"
13fb0 20 3d 3d 20 22 74 22 20 5d 3b 20 74 68 65 6e 0a   == "t" ]; then.
13fc0 20 20 20 20 20 20 20 20 53 42 5f 54 48 45 52 45          SB_THERE
13fd0 5f 49 53 5f 53 4f 4d 45 54 48 49 4e 47 5f 54 4f  _IS_SOMETHING_TO
13fe0 5f 44 45 4c 45 54 45 3d 22 74 22 0a 20 20 20 20  _DELETE="t".    
13ff0 66 69 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d  fi.    #--------
14000 0a 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f 54  .    if [ "$SB_T
14010 48 45 52 45 5f 49 53 5f 53 4f 4d 45 54 48 49 4e  HERE_IS_SOMETHIN
14020 47 5f 54 4f 5f 44 45 4c 45 54 45 22 20 3d 3d 20  G_TO_DELETE" == 
14030 22 74 22 20 5d 3b 20 74 68 65 6e 20 0a 20 20 20  "t" ]; then .   
14040 20 20 20 20 20 69 66 20 5b 20 22 24 32 22 20 21       if [ "$2" !
14050 3d 20 22 24 53 5f 41 52 47 4e 41 4d 45 5f 41 43  = "$S_ARGNAME_AC
14060 54 49 56 49 54 59 5f 53 48 52 45 44 5f 41 52 47  TIVITY_SHRED_ARG
14070 5f 32 22 20 5d 3b 20 74 68 65 6e 20 0a 20 20 20  _2" ]; then .   
14080 20 20 20 20 20 20 20 20 20 23 20 49 6e 63 6c 75           # Inclu
14090 64 65 73 20 74 68 65 20 24 32 3d 3d 22 22 20 63  des the $2=="" c
140a0 61 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  ase.            
140b0 23 20 69 64 20 65 73 74 20 69 66 20 74 68 65 20  # id est if the 
140c0 63 6f 6e 74 72 6f 6c 20 66 6c 6f 77 20 69 73 20  control flow is 
140d0 69 6e 20 68 65 72 65 2c 20 74 68 65 6e 20 74 68  in here, then th
140e0 65 72 65 20 0a 20 20 20 20 20 20 20 20 20 20 20  ere .           
140f0 20 23 20 69 73 20 61 20 6e 65 65 64 20 74 6f 20   # is a need to 
14100 70 72 6f 6d 70 74 20 66 6f 72 20 63 6f 6e 66 69  prompt for confi
14110 72 6d 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20  rmation..       
14120 20 20 20 20 20 23 20 54 68 65 20 73 6b 69 70 70       # The skipp
14130 69 6e 67 20 6f 66 20 74 68 65 20 70 72 6f 6d 70  ing of the promp
14140 74 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 66  t is necessary f
14150 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  or.            #
14160 20 73 6f 66 74 77 61 72 65 20 74 68 61 74 20 75   software that u
14170 73 65 20 74 68 69 73 20 73 63 72 69 70 74 20 61  se this script a
14180 73 20 69 74 73 20 73 75 62 2d 63 6f 6d 70 6f 6e  s its sub-compon
14190 65 6e 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20  ent..           
141a0 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20   #--------.     
141b0 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20         echo "". 
141c0 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 20             echo 
141d0 22 54 68 65 20 63 6f 6d 6d 61 6e 64 20 5c 22 64  "The command \"d
141e0 65 6c 65 74 65 5f 6c 6f 63 61 6c 5f 63 6f 70 79  elete_local_copy
141f0 5c 22 20 64 65 6c 65 74 65 73 20 22 0a 20 20 20  \" deletes ".   
14200 20 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 74           echo "t
14210 68 65 20 72 65 70 6f 73 69 74 6f 72 79 20 66 69  he repository fi
14220 6c 65 2c 20 74 68 65 20 73 61 6e 64 62 6f 78 20  le, the sandbox 
14230 61 6e 64 20 22 0a 20 20 20 20 20 20 20 20 20 20  and ".          
14240 20 20 65 63 68 6f 20 22 74 68 65 20 61 73 73 6f    echo "the asso
14250 63 69 61 74 65 64 20 61 75 74 6f 6d 61 74 69 63  ciated automatic
14260 61 6c 6c 79 20 63 72 65 61 74 65 64 20 61 72 63  ally created arc
14270 68 69 76 65 73 2e 22 0a 20 20 20 20 20 20 20 20  hives.".        
14280 20 20 20 20 65 63 68 6f 20 22 22 0a 20 20 20 20      echo "".    
14290 20 20 20 20 20 20 20 20 72 65 61 64 20 2d 70 20          read -p 
142a0 22 50 72 6f 63 65 65 64 20 77 69 74 68 20 64 65  "Proceed with de
142b0 6c 65 74 69 6f 6e 3f 20 20 28 59 65 73 2f 77 68  letion?  (Yes/wh
142c0 61 74 65 76 65 72 5f 65 6c 73 65 29 20 20 22 20  atever_else)  " 
142d0 53 5f 54 4d 50 5f 30 0a 20 20 20 20 20 20 20 20  S_TMP_0.        
142e0 20 20 20 20 53 5f 54 4d 50 5f 31 3d 22 60 65 63      S_TMP_1="`ec
142f0 68 6f 20 24 53 5f 54 4d 50 5f 30 20 7c 20 67 61  ho $S_TMP_0 | ga
14300 77 6b 20 27 7b 70 72 69 6e 74 20 74 6f 6c 6f 77  wk '{print tolow
14310 65 72 28 24 31 29 7d 27 60 22 0a 20 20 20 20 20  er($1)}'`".     
14320 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 53 5f         if [ "$S_
14330 54 4d 50 5f 31 22 20 3d 3d 20 22 79 65 73 22 20  TMP_1" == "yes" 
14340 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20  ]; then.        
14350 20 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a          echo "".
14360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14370 70 72 69 6e 74 66 20 22 44 65 6c 65 74 69 6e 67  printf "Deleting
14380 20 2e 2e 2e 20 22 0a 20 20 20 20 20 20 20 20 20   ... ".         
14390 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20     else.        
143a0 20 20 20 20 20 20 20 20 66 75 6e 5f 65 78 69 74          fun_exit
143b0 5f 77 69 74 68 6f 75 74 5f 61 6e 79 5f 65 72 72  _without_any_err
143c0 6f 72 73 5f 74 31 0a 20 20 20 20 20 20 20 20 20  ors_t1.         
143d0 20 20 20 66 69 0a 20 20 20 20 20 20 20 66 69 0a     fi.       fi.
143e0 20 20 20 20 66 69 0a 20 20 20 20 23 2d 2d 2d 2d      fi.    #----
143f0 2d 2d 2d 2d 0a 20 20 20 20 63 64 20 24 53 5f 46  ----.    cd $S_F
14400 50 5f 4f 52 49 47 20 23 20 74 6f 20 6d 61 6b 65  P_ORIG # to make
14410 20 73 75 72 65 20 74 68 61 74 20 77 65 27 72 65   sure that we're
14420 20 6e 6f 74 20 69 6e 20 74 68 65 20 73 61 6e 64   not in the sand
14430 62 6f 78 20 64 69 72 65 63 74 6f 72 79 20 61 6e  box directory an
14440 64 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d .             
14450 20 20 20 20 20 23 20 74 6f 20 6d 61 6b 65 20 73       # to make s
14460 75 72 65 20 74 68 61 74 20 77 65 27 72 65 20 6e  ure that we're n
14470 6f 74 20 69 6e 20 74 68 65 20 61 72 63 68 69 76  ot in the archiv
14480 65 20 64 69 72 65 63 74 6f 72 79 0a 20 20 20 20  e directory.    
14490 23 2d 2d 2d 2d 0a 20 20 20 20 23 20 54 68 65 20  #----.    # The 
144a0 6e 65 78 74 20 33 20 63 68 65 63 6b 73 20 63 61  next 3 checks ca
144b0 6e 20 62 65 65 20 73 65 65 6e 20 74 6f 20 66 6f  n bee seen to fo
144c0 72 6d 20 61 20 63 6f 6d 70 6c 65 74 65 20 67 72  rm a complete gr
144d0 61 70 68 2c 20 0a 20 20 20 20 23 20 69 6e 20 74  aph, .    # in t
144e0 68 69 73 20 63 61 73 65 20 61 20 74 72 69 61 6e  his case a trian
144f0 67 6c 65 2c 20 77 69 74 68 20 63 6f 72 6e 65 72  gle, with corner
14500 20 70 6f 69 6e 74 73 20 20 0a 20 20 20 20 23 20   points  .    # 
14510 53 5f 46 50 5f 53 41 4e 44 42 4f 58 2c 20 53 5f  S_FP_SANDBOX, S_
14520 46 50 5f 41 52 43 48 49 56 45 53 2c 20 53 5f 46  FP_ARCHIVES, S_F
14530 50 5f 46 4f 53 53 49 4c 46 49 4c 45 20 63 6f 6e  P_FOSSILFILE con
14540 6e 65 63 74 65 64 0a 20 20 20 20 23 20 77 69 74  nected.    # wit
14550 68 20 6c 69 6e 65 73 20 6f 66 20 74 79 70 65 20  h lines of type 
14560 22 21 3d 22 2e 0a 20 20 20 20 53 5f 47 55 49 44  "!="..    S_GUID
14570 3d 22 35 62 36 61 31 39 34 31 2d 65 39 30 34 2d  ="5b6a1941-e904-
14580 34 66 34 62 2d 38 38 31 61 2d 33 31 35 32 36 30  4f4b-881a-315260
14590 63 31 35 31 65 37 22 0a 20 20 20 20 66 75 6e 63  c151e7".    func
145a0 5f 6d 6d 6d 76 5f 61 73 73 65 72 74 5f 66 69 6c  _mmmv_assert_fil
145b0 65 5f 70 61 74 68 73 5f 64 69 66 66 65 72 5f 74  e_paths_differ_t
145c0 31 20 22 24 53 5f 46 50 5f 46 4f 53 53 49 4c 46  1 "$S_FP_FOSSILF
145d0 49 4c 45 22 20 22 24 53 5f 46 50 5f 53 41 4e 44  ILE" "$S_FP_SAND
145e0 42 4f 58 22 20 22 24 53 5f 47 55 49 44 22 0a 0a  BOX" "$S_GUID"..
145f0 20 20 20 20 53 5f 47 55 49 44 3d 22 35 32 66 62      S_GUID="52fb
14600 61 33 37 30 2d 33 37 31 34 2d 34 32 36 31 2d 38  a370-3714-4261-8
14610 63 64 61 2d 33 31 35 32 36 30 63 31 35 31 65 37  cda-315260c151e7
14620 22 0a 20 20 20 20 66 75 6e 63 5f 6d 6d 6d 76 5f  ".    func_mmmv_
14630 61 73 73 65 72 74 5f 66 69 6c 65 5f 70 61 74 68  assert_file_path
14640 73 5f 64 69 66 66 65 72 5f 74 31 20 22 24 53 5f  s_differ_t1 "$S_
14650 46 50 5f 53 41 4e 44 42 4f 58 22 20 22 24 53 5f  FP_SANDBOX" "$S_
14660 46 50 5f 41 52 43 48 49 56 45 53 22 20 22 24 53  FP_ARCHIVES" "$S
14670 5f 47 55 49 44 22 0a 0a 20 20 20 20 53 5f 47 55  _GUID"..    S_GU
14680 49 44 3d 22 33 38 31 39 65 64 37 31 2d 34 39 33  ID="3819ed71-493
14690 33 2d 34 63 66 30 2d 62 63 33 39 2d 33 31 35 32  3-4cf0-bc39-3152
146a0 36 30 63 31 35 31 65 37 22 0a 20 20 20 20 66 75  60c151e7".    fu
146b0 6e 63 5f 6d 6d 6d 76 5f 61 73 73 65 72 74 5f 66  nc_mmmv_assert_f
146c0 69 6c 65 5f 70 61 74 68 73 5f 64 69 66 66 65 72  ile_paths_differ
146d0 5f 74 31 20 22 24 53 5f 46 50 5f 41 52 43 48 49  _t1 "$S_FP_ARCHI
146e0 56 45 53 22 20 22 24 53 5f 46 50 5f 46 4f 53 53  VES" "$S_FP_FOSS
146f0 49 4c 46 49 4c 45 22 20 22 24 53 5f 47 55 49 44  ILFILE" "$S_GUID
14700 22 0a 20 20 20 20 23 2d 2d 2d 2d 0a 20 20 20 20  ".    #----.    
14710 23 20 54 68 65 20 6e 65 78 74 20 33 20 63 68 65  # The next 3 che
14720 63 6b 73 20 74 75 72 6e 20 74 68 65 20 74 72 69  cks turn the tri
14730 61 6e 67 6c 65 20 74 6f 20 61 20 74 65 74 72 61  angle to a tetra
14740 68 65 64 72 6f 6e 2c 20 77 68 65 72 65 20 20 0a  hedron, where  .
14750 20 20 20 20 23 20 74 68 65 20 53 5f 46 50 5f 4f      # the S_FP_O
14760 52 49 47 20 69 73 20 74 68 65 20 22 74 6f 70 20  RIG is the "top 
14770 6f 66 20 74 68 65 20 70 79 72 61 6d 69 64 22 2e  of the pyramid".
14780 0a 20 20 20 20 53 5f 47 55 49 44 3d 22 65 62 35  .    S_GUID="eb5
14790 66 32 36 34 35 2d 38 65 30 36 2d 34 63 64 63 2d  f2645-8e06-4cdc-
147a0 38 33 34 39 2d 33 31 35 32 36 30 63 31 35 31 65  8349-315260c151e
147b0 37 22 0a 20 20 20 20 66 75 6e 63 5f 6d 6d 6d 76  7".    func_mmmv
147c0 5f 61 73 73 65 72 74 5f 66 69 6c 65 5f 70 61 74  _assert_file_pat
147d0 68 73 5f 64 69 66 66 65 72 5f 74 31 20 22 24 53  hs_differ_t1 "$S
147e0 5f 46 50 5f 4f 52 49 47 22 20 22 24 53 5f 46 50  _FP_ORIG" "$S_FP
147f0 5f 46 4f 53 53 49 4c 46 49 4c 45 22 20 22 24 53  _FOSSILFILE" "$S
14800 5f 47 55 49 44 22 0a 20 20 20 20 0a 20 20 20 20  _GUID".    .    
14810 53 5f 47 55 49 44 3d 22 34 61 33 65 61 31 34 35  S_GUID="4a3ea145
14820 2d 32 65 33 61 2d 34 39 38 61 2d 62 30 31 39 2d  -2e3a-498a-b019-
14830 33 31 35 32 36 30 63 31 35 31 65 37 22 0a 20 20  315260c151e7".  
14840 20 20 66 75 6e 63 5f 6d 6d 6d 76 5f 61 73 73 65    func_mmmv_asse
14850 72 74 5f 66 69 6c 65 5f 70 61 74 68 73 5f 64 69  rt_file_paths_di
14860 66 66 65 72 5f 74 31 20 22 24 53 5f 46 50 5f 4f  ffer_t1 "$S_FP_O
14870 52 49 47 22 20 22 24 53 5f 46 50 5f 41 52 43 48  RIG" "$S_FP_ARCH
14880 49 56 45 53 22 20 22 24 53 5f 47 55 49 44 22 0a  IVES" "$S_GUID".
14890 0a 20 20 20 20 53 5f 47 55 49 44 3d 22 37 32 62  .    S_GUID="72b
148a0 64 30 61 31 35 2d 64 30 38 62 2d 34 62 64 66 2d  d0a15-d08b-4bdf-
148b0 39 35 35 38 2d 33 31 35 32 36 30 63 31 35 31 65  9558-315260c151e
148c0 37 22 0a 20 20 20 20 66 75 6e 63 5f 6d 6d 6d 76  7".    func_mmmv
148d0 5f 61 73 73 65 72 74 5f 66 69 6c 65 5f 70 61 74  _assert_file_pat
148e0 68 73 5f 64 69 66 66 65 72 5f 74 31 20 22 24 53  hs_differ_t1 "$S
148f0 5f 46 50 5f 4f 52 49 47 22 20 22 24 53 5f 46 50  _FP_ORIG" "$S_FP
14900 5f 53 41 4e 44 42 4f 58 22 20 22 24 53 5f 47 55  _SANDBOX" "$S_GU
14910 49 44 22 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d  ID".    #-------
14920 2d 0a 20 20 20 20 63 64 20 24 53 5f 46 50 5f 4f  -.    cd $S_FP_O
14930 52 49 47 20 23 20 6a 75 73 74 20 69 6e 20 63 61  RIG # just in ca
14940 73 65 0a 20 20 20 20 53 42 5f 4f 4b 5f 54 4f 5f  se.    SB_OK_TO_
14950 55 53 45 5f 52 4d 5f 49 4e 5f 53 54 45 41 44 5f  USE_RM_IN_STEAD_
14960 4f 46 5f 53 48 52 45 44 3d 22 74 22 20 23 20 73  OF_SHRED="t" # s
14970 68 72 65 64 20 69 73 20 73 74 69 6c 6c 20 75 73  hred is still us
14980 65 64 2c 20 69 66 20 61 76 61 69 6c 61 62 6c 65  ed, if available
14990 0a 20 20 20 20 69 66 20 5b 20 22 24 53 42 5f 46  .    if [ "$SB_F
149a0 4f 53 53 49 4c 46 49 4c 45 5f 45 58 49 53 54 53  OSSILFILE_EXISTS
149b0 22 20 3d 3d 20 22 74 22 20 5d 3b 20 74 68 65 6e  " == "t" ]; then
149c0 0a 20 20 20 20 20 20 20 20 66 75 6e 5f 6c 61 73  .        fun_las
149d0 74 5f 6d 69 6e 75 74 65 5f 63 68 65 63 6b 73 5f  t_minute_checks_
149e0 74 31 20 22 60 70 77 64 60 22 0a 20 20 20 20 20  t1 "`pwd`".     
149f0 20 20 20 66 75 6e 63 5f 6d 6d 6d 76 5f 73 68 72     func_mmmv_shr
14a00 65 64 5f 74 31 20 22 24 53 5f 46 50 5f 46 4f 53  ed_t1 "$S_FP_FOS
14a10 53 49 4c 46 49 4c 45 22 20 22 24 53 42 5f 4f 4b  SILFILE" "$SB_OK
14a20 5f 54 4f 5f 55 53 45 5f 52 4d 5f 49 4e 5f 53 54  _TO_USE_RM_IN_ST
14a30 45 41 44 5f 4f 46 5f 53 48 52 45 44 22 0a 20 20  EAD_OF_SHRED".  
14a40 20 20 66 69 0a 20 20 20 20 69 66 20 5b 20 22 24    fi.    if [ "$
14a50 53 42 5f 53 41 4e 44 42 4f 58 5f 44 49 52 5f 45  SB_SANDBOX_DIR_E
14a60 58 49 53 54 53 22 20 3d 3d 20 22 74 22 20 5d 3b  XISTS" == "t" ];
14a70 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 66 75   then.        fu
14a80 6e 5f 6c 61 73 74 5f 6d 69 6e 75 74 65 5f 63 68  n_last_minute_ch
14a90 65 63 6b 73 5f 74 31 20 22 60 70 77 64 60 22 0a  ecks_t1 "`pwd`".
14aa0 20 20 20 20 20 20 20 20 66 75 6e 63 5f 6d 6d 6d          func_mmm
14ab0 76 5f 73 68 72 65 64 5f 74 31 20 22 24 53 5f 46  v_shred_t1 "$S_F
14ac0 50 5f 53 41 4e 44 42 4f 58 22 20 22 24 53 42 5f  P_SANDBOX" "$SB_
14ad0 4f 4b 5f 54 4f 5f 55 53 45 5f 52 4d 5f 49 4e 5f  OK_TO_USE_RM_IN_
14ae0 53 54 45 41 44 5f 4f 46 5f 53 48 52 45 44 22 0a  STEAD_OF_SHRED".
14af0 20 20 20 20 66 69 0a 20 20 20 20 69 66 20 5b 20      fi.    if [ 
14b00 22 24 53 42 5f 41 52 43 48 49 56 45 5f 44 49 52  "$SB_ARCHIVE_DIR
14b10 5f 45 58 49 53 54 53 22 20 3d 3d 20 22 74 22 20  _EXISTS" == "t" 
14b20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20  ]; then.        
14b30 66 75 6e 5f 6c 61 73 74 5f 6d 69 6e 75 74 65 5f  fun_last_minute_
14b40 63 68 65 63 6b 73 5f 74 31 20 22 60 70 77 64 60  checks_t1 "`pwd`
14b50 22 0a 20 20 20 20 20 20 20 20 66 75 6e 63 5f 6d  ".        func_m
14b60 6d 6d 76 5f 73 68 72 65 64 5f 74 31 20 22 24 53  mmv_shred_t1 "$S
14b70 5f 46 50 5f 41 52 43 48 49 56 45 53 22 20 22 24  _FP_ARCHIVES" "$
14b80 53 42 5f 4f 4b 5f 54 4f 5f 55 53 45 5f 52 4d 5f  SB_OK_TO_USE_RM_
14b90 49 4e 5f 53 54 45 41 44 5f 4f 46 5f 53 48 52 45  IN_STEAD_OF_SHRE
14ba0 44 22 0a 20 20 20 20 66 69 0a 20 20 20 20 23 2d  D".    fi.    #-
14bb0 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 69 66 20 5b  -------.    if [
14bc0 20 22 24 53 42 5f 54 48 45 52 45 5f 49 53 5f 53   "$SB_THERE_IS_S
14bd0 4f 4d 45 54 48 49 4e 47 5f 54 4f 5f 44 45 4c 45  OMETHING_TO_DELE
14be0 54 45 22 20 3d 3d 20 22 74 22 20 5d 3b 20 74 68  TE" == "t" ]; th
14bf0 65 6e 20 0a 20 20 20 20 20 20 20 20 69 66 20 5b  en .        if [
14c00 20 22 24 32 22 20 21 3d 20 22 24 53 5f 41 52 47   "$2" != "$S_ARG
14c10 4e 41 4d 45 5f 41 43 54 49 56 49 54 59 5f 53 48  NAME_ACTIVITY_SH
14c20 52 45 44 5f 41 52 47 5f 32 22 20 5d 3b 20 74 68  RED_ARG_2" ]; th
14c30 65 6e 20 0a 20 20 20 20 20 20 20 20 20 20 20 20  en .            
14c40 65 63 68 6f 20 22 e2 9c 93 22 0a 20 20 20 20 20  echo "...".     
14c50 20 20 20 20 20 20 20 65 63 68 6f 20 22 22 0a 20         echo "". 
14c60 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 66 69         fi.    fi
14c70 0a 20 20 20 20 23 2d 2d 2d 2d 2d 2d 2d 2d 0a 20  .    #--------. 
14c80 20 20 20 63 64 20 24 53 5f 46 50 5f 4f 52 49 47     cd $S_FP_ORIG
14c90 0a 20 20 20 20 65 78 69 74 20 30 0a 66 69 20 23  .    exit 0.fi #
14ca0 20 64 65 6c 65 74 65 5f 6c 6f 63 61 6c 5f 63 6f   delete_local_co
14cb0 70 79 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  py...#----------
14cc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
14cd0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
14ce0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
14cf0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
14d00 0a 23 20 41 6c 6c 20 70 6f 73 73 69 62 6c 65 20  .# All possible 
14d10 61 63 74 69 6f 6e 73 20 6d 75 73 74 20 68 61 76  actions must hav
14d20 65 20 62 65 65 6e 20 64 65 73 63 72 69 62 65 64  e been described
14d30 0a 23 20 61 62 6f 76 65 20 74 68 69 73 20 63 6f  .# above this co
14d40 64 65 20 62 6c 6f 63 6b 2e 0a 65 63 68 6f 20 22  de block..echo "
14d50 22 0a 65 63 68 6f 20 22 54 68 69 73 20 42 61 73  ".echo "This Bas
14d60 68 20 73 63 72 69 70 74 20 69 73 20 66 6c 61 77  h script is flaw
14d70 65 64 2e 22 0a 65 63 68 6f 20 22 47 55 49 44 3d  ed.".echo "GUID=
14d80 3d 27 34 35 65 64 38 31 62 33 2d 63 66 64 61 2d  ='45ed81b3-cfda-
14d90 34 38 31 62 2d 39 61 34 30 2d 33 31 35 32 36 30  481b-9a40-315260
14da0 63 31 35 31 65 37 27 22 0a 65 63 68 6f 20 22 22  c151e7'".echo ""
14db0 0a 23 2d 2d 2d 2d 0a 63 64 20 24 53 5f 46 50 5f  .#----.cd $S_FP_
14dc0 4f 52 49 47 0a 65 78 69 74 20 31 0a 0a 23 3d 3d  ORIG.exit 1..#==
14dd0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
14de0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
14df0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
14e00 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
14e10 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a                    ========..