[fpc-pascal]How to get the Home Directory of the user?
Michael Van Canneyt
michael.vancanneyt at wisa.be
Fri Sep 6 20:57:49 CEST 2002
On Fri, 6 Sep 2002, [iso-8859-1] Hélio Cavichiolo Jr wrote:
> 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'.
You are trying to compare strings with pchars; this will not work.
>
> program test;
>
> uses
> pwdlibc;
>
> var
> pwd : pPasswd;
> user: pChar;
You should define this as a string. Define a second pchar 'puser';
user : string;
puser : pchar;
>
> begin
> user := '';
> write('Usuário: ');
> readln(user);
Add here
user:=user+#0;
puser:=@user[1];
> pwd := Getpwnam(user);
> if user = pwd^.pw_name then
Change the above by
if strcmp(puser,pwd^.pw_name)=0 then
and it should work.
Michael.
> 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
>
>
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
>
More information about the fpc-pascal
mailing list