Skip to content

Commit f338f50

Browse files
remutroLukeUsher
authored andcommitted
some refactoring
1 parent f0b119d commit f338f50

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

nall/nall/directory.cpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -130,19 +130,23 @@ NALL_HEADER_INLINE auto directory::resolveSymLink(const string& pathname) -> str
130130
REPARSE_DATA_BUFFER* reparseData = (REPARSE_DATA_BUFFER*)buffer;
131131
u16 substituteNameOffset = 0, substituteNameLength = 0;
132132
wchar_t* pathBuffer = nullptr;
133-
if(reparseData->ReparseTag == IO_REPARSE_TAG_SYMLINK) {
134-
pathBuffer = reparseData->SymbolicLinkReparseBuffer.PathBuffer;
135-
substituteNameOffset = reparseData->SymbolicLinkReparseBuffer.SubstituteNameOffset / sizeof(wchar_t);
136-
substituteNameLength = reparseData->SymbolicLinkReparseBuffer.SubstituteNameLength / sizeof(wchar_t);
137-
result = (slice((const char*)utf8_t(pathBuffer) + substituteNameOffset, 0, substituteNameLength)).transform("\\", "/");
138-
if(result.beginsWith("/??/")) result = result.slice(4);
139-
} else if (reparseData->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) {
140-
pathBuffer = reparseData->MountPointReparseBuffer.PathBuffer;
141-
substituteNameOffset = reparseData->MountPointReparseBuffer.SubstituteNameOffset / sizeof(wchar_t);
142-
substituteNameLength = reparseData->MountPointReparseBuffer.SubstituteNameLength / sizeof(wchar_t);
143-
result = (slice((const char*)utf8_t(pathBuffer) + substituteNameOffset, 0, substituteNameLength)).transform("\\", "/");
144-
if(result.beginsWith("/??/")) result = result.slice(4);
133+
switch(reparseData->ReparseTag) {
134+
case IO_REPARSE_TAG_SYMLINK:
135+
pathBuffer = reparseData->SymbolicLinkReparseBuffer.PathBuffer;
136+
substituteNameOffset = reparseData->SymbolicLinkReparseBuffer.SubstituteNameOffset / sizeof(wchar_t);
137+
substituteNameLength = reparseData->SymbolicLinkReparseBuffer.SubstituteNameLength / sizeof(wchar_t);
138+
break;
139+
case IO_REPARSE_TAG_MOUNT_POINT:
140+
pathBuffer = reparseData->MountPointReparseBuffer.PathBuffer;
141+
substituteNameOffset = reparseData->MountPointReparseBuffer.SubstituteNameOffset / sizeof(wchar_t);
142+
substituteNameLength = reparseData->MountPointReparseBuffer.SubstituteNameLength / sizeof(wchar_t);
143+
break;
144+
default:
145+
CloseHandle(hFile);
146+
return result;
145147
}
148+
result = (slice((const char*)utf8_t(pathBuffer) + substituteNameOffset, 0, substituteNameLength)).transform("\\", "/");
149+
if(result.beginsWith("/??/")) result = result.slice(4);
146150
}
147151
CloseHandle(hFile);
148152
}

0 commit comments

Comments
 (0)