[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