Lines Matching refs:lfn
1666 static void lfn_init(long_file_name* lfn) in lfn_init() argument
1668 lfn->sequence_number = lfn->len = 0; in lfn_init()
1669 lfn->checksum = 0x100; in lfn_init()
1673 static int parse_long_name(long_file_name* lfn, in parse_long_name() argument
1684 lfn->sequence_number = pointer[0] & 0x3f; in parse_long_name()
1685 lfn->checksum = pointer[13]; in parse_long_name()
1686 lfn->name[0] = 0; in parse_long_name()
1687 lfn->name[lfn->sequence_number * 13] = 0; in parse_long_name()
1688 } else if ((pointer[0] & 0x3f) != --lfn->sequence_number) { in parse_long_name()
1691 } else if (pointer[13] != lfn->checksum) { in parse_long_name()
1699 offset = 13 * (lfn->sequence_number - 1); in parse_long_name()
1711 lfn->name2[offset + i] = c; in parse_long_name()
1716 lfn->len = offset + i; in parse_long_name()
1721 gchar *utf8 = g_utf16_to_utf8(lfn->name2, lfn->len, NULL, &olen, NULL); in parse_long_name()
1725 lfn->len = olen; in parse_long_name()
1726 memcpy(lfn->name, utf8, olen + 1); in parse_long_name()
1735 long_file_name* lfn, direntry_t* direntry) in parse_short_name() argument
1748 lfn->name[i] = qemu_tolower(direntry->name[i]); in parse_short_name()
1750 lfn->name[i] = direntry->name[i]; in parse_short_name()
1757 lfn->name[i++] = '.'; in parse_short_name()
1758 lfn->name[i + j + 1] = '\0'; in parse_short_name()
1764 lfn->name[i + j] = qemu_tolower(c); in parse_short_name()
1766 lfn->name[i + j] = c; in parse_short_name()
1770 lfn->name[i + j + 1] = '\0'; in parse_short_name()
1772 if (lfn->name[0] == DIR_KANJI_FAKE) { in parse_short_name()
1773 lfn->name[0] = DIR_KANJI; in parse_short_name()
1775 lfn->len = strlen((char*)lfn->name); in parse_short_name()
2020 long_file_name lfn; in check_directory_consistency() local
2044 lfn_init(&lfn); in check_directory_consistency()
2075 subret = parse_long_name(&lfn, direntries + i); in check_directory_consistency()
2083 if (fat_chksum(direntries+i) != lfn.checksum) { in check_directory_consistency()
2084 subret = parse_short_name(s, &lfn, direntries + i); in check_directory_consistency()
2089 if (subret > 0 || !strcmp((char*)lfn.name, ".") in check_directory_consistency()
2090 || !strcmp((char*)lfn.name, "..")) in check_directory_consistency()
2093 lfn.checksum = 0x100; /* cannot use long name twice */ in check_directory_consistency()
2095 if (!valid_filename(lfn.name)) { in check_directory_consistency()
2099 if (path_len + 1 + lfn.len >= PATH_MAX) { in check_directory_consistency()
2100 fprintf(stderr, "Name too long: %s/%s\n", path, lfn.name); in check_directory_consistency()
2104 (char*)lfn.name); in check_directory_consistency()
3052 long_file_name lfn; in vvfat_write() local
3054 lfn_init(&lfn); in vvfat_write()