history

青木日記 RSS

<前の日 | この月 | 次の日>

2003-11-19

stat(昼飯)

  • 米 (期限内)
  • さけ切り身 (今日まで。今回はちゃんと期限内に食べ終わったぜ!)
  • 味噌 (期限内、買ったばっかり!)
  • 大根 (賞味期限が付いてないんだけど、そろそろ怪しい)

「もっとがんばってもらわないと」とか言われても、 どっちにがんばればいいものやら。

NTFS で inode

結局シンボリックリンクを追うのは 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 使っていいのかな。 ま、動いてるみたいだから今回はこれでいいや。

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS