fileutil.ml (1353B)
1 (* Unison file synchronizer: src/fileutil.ml *) 2 (* Copyright 1999-2020, Benjamin C. Pierce 3 4 This program is free software: you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation, either version 3 of the License, or 7 (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 *) 17 18 19 (* Convert backslashes in a string to forward slashes. Useful in Windows. *) 20 let backslashes2forwardslashes s0 = 21 try 22 ignore(String.index s0 '\\'); (* avoid alloc if possible *) 23 let n = String.length s0 in 24 let s = Bytes.create n in 25 for i = 0 to n-1 do 26 let c = String.get s0 i in 27 if c = '\\' 28 then Bytes.set s i '/' 29 else Bytes.set s i c 30 done; 31 Bytes.to_string s 32 with Not_found -> s0 33 34 let rec removeTrailingSlashes s = 35 let len = String.length s in 36 if len>0 && String.get s (len-1) = '/' 37 then removeTrailingSlashes (String.sub s 0 (len-1)) 38 else s