Это не мой код; Я пытаюсь выяснить, что именно это делает. Это часть большой, древней системы, написанной на C (фактически она была написана 4 года назад, но, скорее всего, написана менталитетом конца 80-х годов). Часть кода:Удаляет ли этот код расширение файла?
char DestFile[256];
char DestFile2[256];
//This part is just to show an example
strcpy(DestFile, "/foo/boo/goo.gz")
strcpy (DestFile2, DestFile);
Ptr = strrchr (DestFile2, '.');
if (Ptr != 0) {
if ((strcmp (Ptr, ".gz") == 0) ||
(strcmp (Ptr, ".Z") == 0)) {
*Ptr = 0;
rename (DestFile, DestFile2);
}
}
DestFile2 не установлен нигде в функции. Я скомпилировал вышеприведенный код, и распечатка DestFile показывает, что ничего не изменилось. Единственное, что я могу придумать, это удаление расширения файла (* Ptr = 0), но мои знания C очень ограничены ...
Любые идеи? Кажется, каждый раз, когда он получает файл с .gz или .z, он переименовывает файл в одно и то же имя.
Обратите внимание, что функция rename() может выйти из строя, но этот код не будет более мудрее - проверьте, не сработают ли функции, которые могут выйти из строя, особенно когда файлы задействованы. – 2008-11-15 17:00:25