[fpc-pascal]How to get the Home Directory of the user?
Hélio Cavichiolo Jr
helio at definitylinux.com.br
Mon Sep 9 17:22:08 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?
And the above questions, anyone knows the answers?
>>
>> 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
I think you mean strcomp from strings unit, right?
It works if user exists, otherwise the program crashes. I think there is
another way to know when the Getpwname returns ok or fail.
>
> and it should work.
>
> Michael.
>> begin
>> writeln('(',pwd^.pw_name,')');
>> writeln('(',pwd^.pw_gecos,')');
>> end
>> else
>> writeln(user,' not found!');
>> end.
>>
--
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