11 const MaxFilenameLen = 200
13 func PathShortener(pth string) string {
14 parts := strings.Split(pth, "/")
15 for i, part := range parts {
16 if len(part) <= MaxFilenameLen {
21 for (n < len(part)) && (len(string(short)) <= MaxFilenameLen) {
22 r, w := utf8.DecodeRuneInString(part[n:])
24 short = append(short, r)
26 h := sha1.Sum([]byte(part))
27 parts[i] = string(short[:len(short)-1]) + "-" + hex.EncodeToString(h[:])
29 return path.Join(parts...)