Change how case folding is done

The old way involved a lot more sequence duplication.  Now just turn the
bytes object into a mutable bytearray, iterate through the mask and
change what we need, then change it back.
This commit is contained in:
T. Joseph Carter 2017-06-22 04:37:34 -07:00
parent 3ebf568a6f
commit 79719bb5e0

14
cppo
View File

@ -144,11 +144,11 @@ def getFileName(arg1, arg2):
fileName = readchars(g.image_data, start+1, nameLength) fileName = readchars(g.image_data, start+1, nameLength)
caseMask = getCaseMask(arg1, arg2) caseMask = getCaseMask(arg1, arg2)
if caseMask and not g.casefold_upper: if caseMask and not g.casefold_upper:
fileName = bytearray(fileName)
for i in range(0, len(fileName)): for i in range(0, len(fileName)):
if caseMask[i] == "1": if caseMask[i] == "1":
fileName = (fileName[:i] + fileName[i] = fileName[i].lower()
fileName[i:i+1].lower() + fileName = bytes(fileName)
fileName[i+1:])
return fileName return fileName
def getCaseMask(arg1, arg2): def getCaseMask(arg1, arg2):
@ -329,12 +329,12 @@ def getWorkingDirName(arg1, arg2=None):
caseMask = to_bin(caseMaskDec - 32768).zfill(15) caseMask = to_bin(caseMaskDec - 32768).zfill(15)
else: # subdirectory, get casemask from arg2 (not available in header) else: # subdirectory, get casemask from arg2 (not available in header)
caseMask = arg2 caseMask = arg2
if not g.casefold_upper and caseMask != None: if caseMask and not g.casefold_upper:
workingDirName = bytearray(workingDirName)
for i in range(0, len(workingDirName)): for i in range(0, len(workingDirName)):
if caseMask[i] == "1": if caseMask[i] == "1":
workingDirName = (workingDirName[:i] + workingDirName[i] = workingDirName[i].lower()
workingDirName[i:i+1].lower() + workingDirName = bytes(workingDirName)
workingDirName[i+1:])
return workingDirName return workingDirName
def getDirEntryCount(arg1): def getDirEntryCount(arg1):