Feststellen, ob sich zwei Dateien auf dem gleichen Dateisystem befinden
Da das Kopieren der Daten beim Verschieben nur nötig ist, wenn sich das Ziel auf einer anderen Partition befindet - ansonsten kann man ja rename(2) benutzen - benötigt man eine Möglichkeit, festzustellen, ob sich Quelle und Ziel auf der gleichen Partition befinden. Ein Blick in die Man-Page von stat(2) hilft einem da auf die Sprünge und rausgekommen ist folgende Funktion:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int samefilesystem( const char *path1, const char *path2) { struct stat stat1,stat2; stat(path1,&stat1); stat(path2,&stat2); return stat1.st_dev==stat2.st_dev; } |