summaryrefslogtreecommitdiff
path: root/src/lfn.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lfn.c')
-rw-r--r--src/lfn.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/lfn.c b/src/lfn.c
index 4c4ec3e..bacf873 100644
--- a/src/lfn.c
+++ b/src/lfn.c
@@ -124,7 +124,7 @@ static char *cnv_unicode(const unsigned char *uni, int maxlen, int use_q)
cp = out = use_q ? qalloc(&mem_queue, len + 1) : alloc(len + 1);
for (up = uni; (up - uni) / 2 < maxlen && (up[0] || up[1]); up += 2) {
- if ((x = wctombs(cp, BYTES_TO_WCHAR(up[0], up[1]))) != (size_t) - 1)
+ if ((x = wctombs((char *)cp, BYTES_TO_WCHAR(up[0], up[1]))) != (size_t) - 1)
cp += x;
else if (UNICODE_CONVERTABLE(up[0], up[1]))
*cp++ = up[0];
@@ -388,7 +388,7 @@ void lfn_add_slot(DIR_ENT * de, loff_t dir_offset)
sizeof(lfn->reserved), &lfn->reserved);
}
}
- if (lfn->start != CT_LE_W(0)) {
+ if (lfn->start != htole16(0)) {
printf("Start cluster field in VFAT long filename slot is not 0 "
"(but 0x%04x).\n", lfn->start);
if (interactive)
@@ -396,7 +396,7 @@ void lfn_add_slot(DIR_ENT * de, loff_t dir_offset)
else
printf("Auto-setting to 0.\n");
if (!interactive || get_key("12", "?") == '1') {
- lfn->start = CT_LE_W(0);
+ lfn->start = htole16(0);
fs_write(dir_offset + offsetof(LFN_ENT, start),
sizeof(lfn->start), &lfn->start);
}
@@ -462,8 +462,10 @@ char *lfn_get(DIR_ENT * de, loff_t * lfn_offset)
}
}
- for (sum = 0, i = 0; i < 11; i++)
+ for (sum = 0, i = 0; i < 8; i++)
sum = (((sum & 1) << 7) | ((sum & 0xfe) >> 1)) + de->name[i];
+ for (i = 0; i < 3; i++)
+ sum = (((sum & 1) << 7) | ((sum & 0xfe) >> 1)) + de->ext[i];
if (sum != lfn_checksum) {
/* checksum doesn't match, long name doesn't apply to this alias */
/* Causes: 1) alias renamed */