Ce n'est pas mon code; J'essaie de comprendre ce que cela fait exactement. C'est une partie d'un grand système ancien écrit en C (en fait, il a été écrit il y a 4 ans, mais probablement écrit par une mentalité de programmeur de la fin des années 80). Partie du code:Est-ce que ce code supprime une extension de fichier?
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 n'est défini nulle part ailleurs dans la fonction. J'ai compilé le code ci-dessus, et en imprimant le DestFile montre que rien n'a changé. La seule chose que je peux penser que cela fait est de supprimer l'extension de fichier (* Ptr = 0) mais ma connaissance de C est très limitée ...
Des idées? Il semble que chaque fois qu'il obtient un fichier avec .gz ou .z, il renomme le fichier au même nom.
Notez que la fonction rename() pourrait échouer, mais ce code ne serait pas le plus sage - tester si les fonctions qui peuvent échouer échouent, en particulier lorsque des fichiers sont impliqués. –