「もっとがんばってもらわないと」とか言われても、 どっちにがんばればいいものやら。
結局シンボリックリンクを追うのは stat(2) に任せることにしたので段数を指定する必要はなくなりました。 が、そのかわりに Windows でドツボにはまると。
ruby-dev では Tietew さんの試験パッチが出てますが、 せっかくの機会なので Windows API を使う練習をしてみました。
// fileid.c -- print file ID (works only with NTFS) // Usage: ./fileid.exe filename #include <windows.h> #include <stdio.h> int main(int argc, char **argv) { HANDLE f; BY_HANDLE_FILE_INFORMATION info; BOOL ok; if (argc < 2) { puts("too few argc"); exit(1); } f = CreateFile(argv[1], 0, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (f == INVALID_HANDLE_VALUE) { puts("CreateFile failed"); exit(1); } ok = GetFileInformationByHandle(f, &info); if (!ok) { puts("GetFileInformation failed"); CloseHandle(f); exit(1); } printf("%08x %08x\n", info.nFileIndexHigh, info.nFileIndexLow); CloseHandle(f); exit(0); }
stdio 使っていいのかな。 ま、動いてるみたいだから今回はこれでいいや。
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.