~diresu/blender/blender-command-port

« back to all changes in this revision

Viewing changes to release/scripts/bpymodules/BPySys.py

  • Committer: Dietrich Bollmann
  • Date: 2008-12-07 02:35:00 UTC
  • mfrom: (184.1.39)
  • Revision ID: diresu@web.de-20081207023500-lhwm7k6zfsgmrtzi
* Update from launchpad blender/trunk import

to state of blender repository from 2008-12-06 00:13:23 +0100 revision 17724.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
        for ch in invalid:      name = name.replace(ch, '_')
13
13
        return name
14
14
 
 
15
def caseInsensitivePath(path, RET_FOUND=False):
 
16
        '''
 
17
        Get a case insensitive path on a case sensitive system
 
18
        
 
19
        RET_FOUND is for internal use only, to avoid too many calls to os.path.exists
 
20
        # Example usage
 
21
        getCaseInsensitivePath('/hOmE/mE/sOmEpAtH.tXt')
 
22
        '''
 
23
        import os # todo, what happens with no os?
 
24
        
 
25
        if os==None:
 
26
                if RET_FOUND:   ret = path, True
 
27
                else:                   ret = path
 
28
                return ret
 
29
        
 
30
        if path=='' or os.path.exists(path):
 
31
                if RET_FOUND:   ret = path, True
 
32
                else:                   ret = path
 
33
                return ret
 
34
        
 
35
        f = os.path.basename(path) # f may be a directory or a file
 
36
        d = os.path.dirname(path)
 
37
        
 
38
        suffix = ''
 
39
        if not f: # dir ends with a slash?
 
40
                if len(d) < len(path):
 
41
                        suffix = path[:len(path)-len(d)]
 
42
 
 
43
                f = os.path.basename(d)
 
44
                d = os.path.dirname(d)
 
45
        
 
46
        if not os.path.exists(d):
 
47
                d, found = caseInsensitivePath(d, True)
 
48
                
 
49
                if not found:
 
50
                        if RET_FOUND:   ret = path, False
 
51
                        else:                   ret = path
 
52
                        return ret
 
53
        
 
54
        # at this point, the directory exists but not the file
 
55
        
 
56
        try: # we are expecting 'd' to be a directory, but it could be a file
 
57
                files = os.listdir(d)
 
58
        except:
 
59
                if RET_FOUND:   ret = path, False
 
60
                else:                   ret = path
 
61
 
 
62
        f_low = f.lower()
 
63
        
 
64
        try:    f_nocase = [fl for fl in files if fl.lower() == f_low][0]
 
65
        except: f_nocase = None
 
66
        
 
67
        if f_nocase:
 
68
                if RET_FOUND:   ret = os.path.join(d, f_nocase) + suffix, True
 
69
                else:                   ret = os.path.join(d, f_nocase) + suffix
 
70
                return ret
 
71
        else:
 
72
                if RET_FOUND:   ret = path, False
 
73
                else:                   ret = path
 
74
                return ret # cant find the right one, just return the path as is.
 
 
b'\\ No newline at end of file'