[fpc-pascal]How to get the Home Directory of the user?

Hélio Cavichiolo Jr helio at definitylinux.com.br
Fri Sep 6 20:06:06 CEST 2002


How to check if a call to getpwnam had success?
How to change user information?

I made this program to test but the 'if' never matches.
Entering a valid user, I had to remove de 'if' to see user's gecos, by the
other hand, entering an invalid user, the program crashes on the 'if'.

program test;

uses
  pwdlibc;

var
  pwd : pPasswd;
  user: pChar;

begin
  user := '';
  write('Usuário: ');
  readln(user);
  pwd := Getpwnam(user);
  if user = pwd^.pw_name then
    begin
      writeln('(',pwd^.pw_name,')');
      writeln('(',pwd^.pw_gecos,')');
    end
  else
    writeln(user,' not found!');
end.

> Hi,
> this is how you can get some info's from a logged User:
>
> unit pwdlibc;
> {---------------------------------------------------------------------------
>                                  CncWare
>                             (c) Copyright 1999
> ----------------------------------------------------------------------------
>   Filename..: pwdlibc.pp
>   Programmer: Ken J. Wright
>   Date......: 10/01/1999
>
>   Purpose - Link to the Linux 'c' library for system passwd functions.
>
> -------------------------------< Revisions
>>---------------------------------
> Revision|   Date   | Prog| Description
> ----------------------------------------------------------------------------
> -
> 1.00    | 10/01/99 | kjw | Initial release.
> ----------------------------------------------------------------------------
> -
> }
>
> interface
>
> {$linklib c}
>
> {$PACKRECORDS 4}
> Type
>    pPasswd = ^passwd;
>    passwd  = Record
>       pw_name,                         { Username }
>       pw_passwd : pChar;               { Password }
>       pw_uid,                          { User ID }
>       pw_gid : longint;                { Group ID }
>       pw_gecos,                        { Real Name }
>       pw_dir,                          { Home directory }
>       pw_shell : pChar;                { Shell program }
>    End;
>
>    pGroup = ^group;
>    group  = Record
>       gr_name,                         { Group name }
>       gr_passwd : pChar;               { Password }
>       gr_gid : longint;                { Group ID }
>       gr_mem : pChar;                  { Member list }
>    End;
>
> { returns a pointer to a passwd record }
> Function getpwuid(uid : longint) : pPasswd; cdecl;
> Function getpwnam(nam : pChar) : pPasswd; cdecl;
>
> { returns a pointer to a group record }
> Function getgrgid(gid : longint) : pGroup; cdecl;
> Function getgrnam(nam : pChar) : pGroup; cdecl;
>
> implementation
>
> Function getpwuid(uid : longint) : pPasswd; cdecl; External;
> Function getpwnam(nam : pChar) : pPasswd; cdecl; External;
> Function getgrgid(gid : longint) : pGroup; cdecl; External;
> Function getgrnam(nam : pChar) : pGroup; cdecl; External;
>
> end.
>
> my regards,
> Stefan
>
>
>
>>Hello, Every body
>>
>>  Can you tell me how to get the Home Directory of a user in free
>> pascal
> under
>>linux? Thank you very much.
>>
>>  Yours,
>>  mili
>
>
>
>
>
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal


-- 
Helio Cavichiolo Jr
Analista de Sistemas
Esc Telecomunicações Ltda
D e f i n i t y   L i n u x






More information about the fpc-pascal mailing list