github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/kbfs/data/util.go (about)

     1  // Copyright 2019 Keybase Inc. All rights reserved.
     2  // Use of this source code is governed by a BSD
     3  // license that can be found in the LICENSE file.
     4  
     5  package data
     6  
     7  // SplitFileExtension splits filename into a base name and the extension.
     8  func SplitFileExtension(path string) (string, string) {
     9  	for i := len(path) - 1; i > 0; i-- {
    10  		switch path[i] {
    11  		case '.':
    12  			// Handle some multipart extensions
    13  			if i >= 4 && path[i-4:i] == ".tar" {
    14  				i -= 4
    15  			}
    16  			// A leading dot is not an extension
    17  			if i == 0 || path[i-1] == '/' || path[i-1] == '\\' {
    18  				return path, ""
    19  			}
    20  			return path[:i], path[i:]
    21  		case '/', '\\', ' ':
    22  			return path, ""
    23  		}
    24  	}
    25  	return path, ""
    26  }