How to determine if the user has permission to write in a specified directory lazarus / 32-Linux ---------------------------------------------------------------------- laztest · 2010-01-26 21:59 I want my software to determine if the user has write permission for a folder they specify. I initially thought I could use getfileattr, however on Linux this returns the wrong answer if the folder is writeable but only for a different user (e.g. the user is not the owner of the folder, and does not have write permissions). The code below returns the correct answer, but it seems very clumsy. Can anyone think of an elegant way to do this? const {$IFDEF UNIX} PathDelim = '/'; {$ELSE} PathDelim = '\'; {$ENDIF} function DirectoryWriteable (lDir: string): boolean; //uses SysUtils //when passed folder e.g. /usr/lib/ will return true if //user has permission to create files in that folder... Var   i : Longint;   lFilename: string; Begin   result := false;   if length(lDir) < 1 then      exit;   if lDir[length(lDir)] <>  PathDelim then       lFilename := lDir + pathdelim + 'dummy.dum'   else       lFilename := lDir + 'dummy.dum';   if fileexists (lFilename) then      exit; //do not overwrite existing file   i:=FileCreate (lFilename);   if i=-1 then     Halt(1);   FileClose(i);   DeleteFile(lFilename);   result := true; end; procedure TForm1.Button1Click(Sender: TObject); //uses FileCtrl var   Dir : string; begin   Dir :=  GetCurrentDir;  // Set the starting directory   // Ask the user to select using a completely different dialog!   if NOT SelectDirectory(Dir, [sdAllowCreate], 0) then      exit;   if DirectoryWriteable(Dir) then      showmessage('Writeable '+Dir)   else       showmessage('Not writeable '+Dir); end; ---------------------------------------------------------------------- theo · 2010-01-26 22:49 http://www.freepascal.org/docs-html/rtl/baseunix/fpaccess.html ---------------------------------------------------------------------- laztest · 2010-01-28 02:52 Theo-   Thanks for the fast response. This was the solution I was looking for.