|
|||||||||||||||||||||||||||
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 |
|
||||||||||||||
|
||||||||||||||