Apple documentationで説明されているように、ディレクトリのスナップショットを作成しようとしています。
scandir()
関数を使いたい。これはドキュメントからのものです:
scandir(const char *dirname, struct dirent ***namelist, int (*select)(const struct dirent *),
int (*compar)(const struct dirent **, const struct dirent **));
正しい使い方がわかりません。スナップショット機能を実装する方法は次のとおりです。
-(void)createFolderSnapshotWithPath:(NSString *)pathString
{
NSLog(@"snap");
const char *pathsToWatch=[pathString UTF8String];
struct dirent snapshot;
scandir(pathsToWatch, &snapshot, NULL, NULL); // I have a warning here because
// &snapshot used wrong here
NSLog(@"snap result: %llu | %s | %i",snapshot.d_ino, snapshot.d_name, snapshot.d_type);
// snapshot.d_type returns 0 which means unknown type (DT_UNKNOWN)
}
ここにあるdirent struct
:
struct dirent {
ino_t d_ino; /* file number of entry */
__uint16_t d_reclen; /* length of this record */
__uint8_t d_type; /* file type, see below */
__uint8_t d_namlen; /* length of string in d_name */
char d_name[__DARWIN_MAXNAMLEN + 1]; /* name must be no longer than this */
};
dirent struct
ホットから適切な作成方法と、それを関数で適切に使用する方法がわかりませんscandir()
。
その関数に必要なのは、後で別のスナップショットと比較するときに使用できる配列だけです。