| # module 'macpath' |
| |
| import mac |
| |
| import string |
| |
| from stat import * |
| |
| def isabs(s): |
| return ':' in s and s[0] <> ':' |
| |
| def cat(s, t): |
| if (not s) or isabs(t): return t |
| if t[:1] = ':': t = t[1:] |
| if ':' not in s: |
| s = ':' + s |
| if s[-1:] <> ':': |
| s = s + ':' |
| return s + t |
| |
| norm_error = 'path cannot be normalized' |
| |
| def norm(s): |
| if ':' not in s: |
| return ':' + s |
| f = string.splitfields(s, ':') |
| pre = [] |
| post = [] |
| if not f[0]: |
| pre = f[:1] |
| f = f[1:] |
| if not f[len(f)-1]: |
| post = f[-1:] |
| f = f[:-1] |
| res = [] |
| for seg in f: |
| if seg: |
| res.append(seg) |
| else: |
| if not res: raise norm_error # starts with '::' |
| del res[len(res)-1] |
| if not (pre or res): |
| raise norm_error # starts with 'vol::' |
| if pre: res = pre + res |
| if post: res = res + post |
| s = res[0] |
| for seg in res[1:]: |
| s = s + ':' + seg |
| return s |
| |
| def isdir(s): |
| try: |
| st = mac.stat(s) |
| except mac.error: |
| return 0 |
| return S_ISDIR(st[ST_MODE]) |
| |
| def isfile(s): |
| try: |
| st = mac.stat(s) |
| except mac.error: |
| return 0 |
| return S_ISREG(st[ST_MODE]) |
| |
| def exists(s): |
| try: |
| st = mac.stat(s) |
| except mac.error: |
| return 0 |
| return 1 |