さて、Linux (C++ を使用) で関数を実行しています。この関数では、具体的なアクセス許可を持つディレクトリ内のファイルを取得する必要があります。たとえば、X ディレクトリ内のすべてのファイルを読み取りアクセス許可で取得します。
これを行うために、stat() 関数と st_mode 変数を使用しています。問題は、stat 関数が正しく stat 構造体を返すようにできないように見えることです (そこから必要な st_mode を取得します)。
関数は次のとおりです (まだ完全ではありません)。
void Search::filePermissionSelection ()
{
dirStream = opendir (directory.c_str());
if (dirStream == NULL)
{
cout << "error reading directory" << endl;
exit (0);
}
else
{
struct stat statResult;
int error = 0;
while ((dirDirent = readdir (dirStream)) != NULL)
{
error = stat (dirDirent->d_name, &statResult);
cout << dirDirent->d_name << " -> Value: " << error << endl;
if (error == 0)
{
if (statResult.st_mode & S_IRUSR) cout << "Read permission ";
if (statResult.st_mode & S_IWUSR) cout << "Write permission ";
if (statResult.st_mode & S_IXUSR) cout << "Exec permission";
cout << endl;
}
}
closedir (dirStream);
}
}