SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] getpwent læser /etc/{passwd,shadow}mere end een gang



Ole Tange <sslug@sslug> writes:

> Hvordan får jeg getpwent til at opføre sig som i gamle dage?

Du koder din egen getpwent:

#!perl
while(@a=my_getpwent()){}

use Inline C => <<'END_OF_C_CODE';
#
#include <pwd.h>
#include <sys/types.h>

void my_getpwent() {
  struct passwd *pwent = getpwent();
  Inline_Stack_Vars;

  Inline_Stack_Reset;
  if (pwent) {
    Inline_Stack_Push(newSVpv(pwent->pw_name,strlen(pwent->pw_name)));
    Inline_Stack_Push(newSVpv(pwent->pw_passwd,strlen(pwent->pw_passwd)));
    Inline_Stack_Push(newSViv(pwent->pw_uid));
    Inline_Stack_Push(newSViv(pwent->pw_gid));
    Inline_Stack_Push(newSVpv(pwent->pw_gecos,strlen(pwent->pw_gecos)));
    Inline_Stack_Push(newSVpv(pwent->pw_dir,strlen(pwent->pw_dir)));
    Inline_Stack_Push(newSVpv(pwent->pw_shell,strlen(pwent->pw_shell)));
  }
  Inline_Stack_Done;
}
END_OF_CODE
__END__

Det vil nok være en god ide at gøre det i et modul der kan oversættes
en gang for alle i stedet for at skulle oversætte C-koden hver gang du
kører scriptet.

-- 
 Peter Makholm     |              I have no caps-lock but I must scream...
 sslug@sslug |                                               -- Greg
 http://hacking.dk |                                                      


 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:54
Denne side vedligeholdes af MHonArc .