public string basename() { string n = this.name(); int dot = n.LastIndexOf('.'); if (dot < 2) { if (dot < 0) return n; if (n == ".") return n; if (n == "..") return n; } return n.Substring(0, dot); }