Ich habe da eine Klasse, die einen Verzeichnisbaum anzeigt (siehe Anhang). Da sollen dann Verzeicnisse, in die ich nicht rein darf, ausgegraut werden. Bisher habe ich dafür die Funktion access() bemüht, etwa so:
1 2 3 4 5 6 7 8 | Fl_Tree_Item * ti; Fl_Tree_Item * tt; ... tt = tree->add( ti, (*list)->d_name ); if( access( (*list)->d_name, X_OK ) ) { tt->deactivate(); } ... |
Dazu habe ich jetzt aber 2 Fragen.
Ich frage mich, ob es nicht besser wäre, anstelle von access() euidaccess() zu verwenden, wo dann die effektive User-ID verwendet wird. Wobei ich zugeben muss, dass mir nicht ganz klar ist, wann das zum tragen kommt.
Zweitens wird in der Doku zu beiden Funktionen vor einer möglichen race condition gwarnt, weil zwichen Abfrage und möglichen Zugriff noch einiges passieren kann. Da ich aber noch gar nicht wirklich zugreifen will und die Abfrage auch nur auf Verzeichnisse anwende, kann ich da erstmal kein ernsthaftes Problem erkennen.
Oder übersehe ich da wieder etwas?