LINUX.ORG.RU

Взято из надёжного источника:

def short_name(long_name):
    name, ext = long_name.rsplit('.', 2)
    name = name [0, 8]
    short_name = name + '.' + ext
    if os.exists(short_name):
        try:
            os.unlink(short_name)
            print("Some errors were occured and fixed")
        except:
            pass

    return short_name

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Отличный вариант! Только что опробовал - работает безукоризненно!

LamerOk ★★★★★
()
Ответ на: комментарий от gavv

Охрененный алгоритм. Краткий пересказ такой:

#ifdef WIN32
вызываем виндовую хрень
#else
strcpy(shortname, longname);
#endif

Reset ★★★★★
()

За описание алгоритма спасибо ( нужно будет попробовать реализовать). И еще вопрос - возможно ли чтение из под пользователя самой таблицы файлов (если возможно то куда копать), ибо там хранится и длинное и короткое имя файла (для fat32 ессно).

Croman13n3c
() автор топика
Ответ на: комментарий от Croman13n3c

> И еще вопрос - возможно ли чтение из под пользователя самой таблицы файлов

если юзверь (или группа, в которую входит юзверь) имеет r для /dev/sd${ЧЕГОТОТАМ}, то конечно же возможно. а если для него ещё и w есть, то он вообще практически господь бог и может сконвертировать раздел в ntfs ext3!!

arsi ★★★★★
()
Ответ на: комментарий от true_admin

В случае совпадения имен алгоритм должен выдавать имена типа filena~1.txt. У тебя этого нет, так что не правильно.

wieker ★★
()
Ответ на: комментарий от wieker

в случае совпадения имён там врубается патентованный алгоритм разрешения коллизий.

true_admin ★★★★★
()

А можно скромный вопрос: где это сейчас используется?

Eddy_Em ☆☆☆☆☆
()

Используется в плеере Transcend MP860. У него такой формат плэйлиста ( составлять его в устройстве жуть неудобно - только потреково).

Croman13n3c
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.