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:

#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;
}
Zu beachten ist hier, dass der Rückgabewert von stat(2) nicht überprüft wird! Soll ja aber auch nur ein Beispiel sein.

  • Zuletzt geändert: 2019-03-31 15:21