inital commit
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package mutex
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const maxMutexLength = 64
|
||||
|
||||
func sanitizeName(name string) (string, error) {
|
||||
trimmed := strings.TrimSpace(name)
|
||||
if trimmed == "" {
|
||||
return "", fmt.Errorf("empty mutex name")
|
||||
}
|
||||
|
||||
var builder strings.Builder
|
||||
for _, r := range trimmed {
|
||||
if (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z') || (r >= '0' && r <= '9') || r == '-' || r == '_' || r == '.' {
|
||||
builder.WriteRune(r)
|
||||
}
|
||||
}
|
||||
|
||||
sanitized := builder.String()
|
||||
if sanitized == "" {
|
||||
return "", fmt.Errorf("mutex name has no valid characters")
|
||||
}
|
||||
|
||||
if len(sanitized) > maxMutexLength {
|
||||
sanitized = sanitized[:maxMutexLength]
|
||||
}
|
||||
|
||||
return sanitized, nil
|
||||
}
|
||||
Reference in New Issue
Block a user