blob: 30d2f27ad91a5f3428e272aaa137f1660734e627 [file] [log] [blame]
Guido van Rossum217a5fa1990-12-26 15:40:07 +00001# module 'macpath'
2
3import mac
4
5import string
6
7from stat import *
8
9def isabs(s):
10 return ':' in s and s[0] <> ':'
11
12def cat(s, t):
13 if (not s) or isabs(t): return t
14 if t[:1] = ':': t = t[1:]
15 if ':' not in s:
16 s = ':' + s
17 if s[-1:] <> ':':
18 s = s + ':'
19 return s + t
20
21norm_error = 'path cannot be normalized'
22
23def norm(s):
24 if ':' not in s:
25 return ':' + s
26 f = string.splitfields(s, ':')
27 pre = []
28 post = []
29 if not f[0]:
30 pre = f[:1]
31 f = f[1:]
32 if not f[len(f)-1]:
33 post = f[-1:]
34 f = f[:-1]
35 res = []
36 for seg in f:
37 if seg:
38 res.append(seg)
39 else:
40 if not res: raise norm_error # starts with '::'
41 del res[len(res)-1]
42 if not (pre or res):
43 raise norm_error # starts with 'vol::'
44 if pre: res = pre + res
45 if post: res = res + post
46 s = res[0]
47 for seg in res[1:]:
48 s = s + ':' + seg
49 return s
50
51def isdir(s):
52 try:
53 st = mac.stat(s)
54 except mac.error:
55 return 0
56 return S_ISDIR(st[ST_MODE])
57
58def isfile(s):
59 try:
60 st = mac.stat(s)
61 except mac.error:
62 return 0
63 return S_ISREG(st[ST_MODE])
64
65def exists(s):
66 try:
67 st = mac.stat(s)
68 except mac.error:
69 return 0
70 return 1