ctype and functions that return a pointer to a structure

hg hg at nospam.org
Sun Jul 1 23:53:42 CEST 2007


Lenard Lindstrom wrote:

> hg wrote:
>> Hi,
>> 
>> I have the following code:
>> ******************************************
>> from ctypes import *
>> g_lib = cdll.LoadLibrary("libc.so.6")
>> class Struct_Password(Structure):
>>     """
>>      
>>     """
>>     _fields_ = [ ('name', c_char_p),
>>                 ('code', c_char_p),
>>                 ('date', c_long),
>>                 ('min',  c_long),
>>                 ('max',  c_long),
>>                 ('warn', c_long),
>>                 ('inact', c_long),
>>                 ('expire', c_long),
>>                 ('flag', c_ulong)
>>             ]
>> l_res =  g_lib.getspnam('john')
>> l_struct = cast(l_res, POINTER( Struct_Password() ) )
> 
> l_struct = cast(l_res, POINTER( Struct_Password ) )
> 
> POINTER wants a ctypes type as an argument. Struct_Password() is a
> Structure instance.
> 
> A better way to do it is define the return type for getspnam:
> 
> g_lib.getspnam.restype = POINTER( Struct_Password )
> 
> Now the function returns a structure pointer so the cast is unnecessary.
> 
> ---
> Lenard Lindstrom
> <len-l at telus.net>

Many thanks,

hg




More information about the Python-list mailing list