Skip to content
Snippets Groups Projects
Select Git revision
  • 7df42b8238933a8f694153a91e6efdd416f3b70b
  • master default protected
  • devel
  • adaptive_step_size
4 results

set_suffix.go

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    set_suffix.go 1.13 KiB
    // a utility
    package mc_work
    
    import (
    	"errors"
    	"path/filepath"
    )
    
    // setSuffix takes a name and makes sure the desired suffix is at the end
    // of the filename.
    func setSuffix(fname, suffix string) (string, error) {
    	if len(fname) == 0 {
    		return "", errors.New("setSuffix given empty fname")
    	}
    	if suffix == "" { // no suffix might not be an error. Just
    		if fname[len(fname)-1] == '.' { // remove any trailing dot
    			fname = fname[0 : len(fname)-1]
    		}
    		if len(fname) > 0 {
    			return fname, nil
    		}
    		return "", errors.New("setSuffix got empty filename")
    	}
    
    	if suffix[0] != '.' {
    		suffix = "." + suffix
    	}
    	oldExt := filepath.Ext(fname)
    	switch oldExt {
    	case suffix:
    		return fname, nil
    	case "":
    		return fname + suffix, nil
    	default:
    		return fname[0:len(fname)-len(oldExt)] + suffix, nil
    	}
    }
    
    // removeQuotes removes leading and trailing quotes from a string.
    // We do not check for single, unmatched quotes. If you want a file
    // called "fname you should use some other program.
    func removeQuotes (s string) string {
    	for ; len(s) > 0 && s[0] == '"'  ;{
    		s = s[1:]
    	}
    	for ; len(s) > 0 && s[len(s)-1] == '"' ; {
    		s = s[:len(s)-1]
    	}
    	return s
    }