2005-03-06 08:16:52 +03:00
/*
* udev_libc_wrapper - wrapping of functions missing in a specific libc
* or not working in a statically compiled binary
*
* Copyright ( C ) 2005 Kay Sievers < kay . sievers @ vrfy . org >
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation version 2 of the License .
*
* This program is distributed in the hope that it will be useful , but
* WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* General Public License for more details .
*
* You should have received a copy of the GNU General Public License along
* with this program ; if not , write to the Free Software Foundation , Inc . ,
* 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*
*/
# ifndef _UDEV_LIBC_WRAPPER_H_
# define _UDEV_LIBC_WRAPPER_H_
2005-08-15 13:57:04 +04:00
# include <string.h>
# include <unistd.h>
# include <linux/types.h>
/* needed for our signal handlers to work */
2005-03-10 02:58:01 +03:00
# undef asmlinkage
2005-03-07 06:29:43 +03:00
# ifdef __i386__
2005-03-10 02:58:01 +03:00
# define asmlinkage __attribute__((regparm(0)))
# else
# define asmlinkage
# endif
2005-08-15 13:57:04 +04:00
/* headers are broken on some lazy platforms */
2005-03-10 02:58:01 +03:00
# ifndef __FD_SET
# define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
# endif
# ifndef __FD_CLR
# define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
# endif
# ifndef __FD_ISSET
# define __FD_ISSET(d, set) (((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) != 0)
2005-03-07 06:29:43 +03:00
# endif
2005-03-10 02:58:01 +03:00
# ifndef __FD_ZERO
# define __FD_ZERO(set) ((void) memset ((void*) (set), 0, sizeof (fd_set)))
2005-03-07 06:29:43 +03:00
# endif
2005-08-15 13:57:04 +04:00
/* missing in some lazy distros */
2005-08-04 14:24:41 +04:00
# ifndef NETLINK_KOBJECT_UEVENT
# define NETLINK_KOBJECT_UEVENT 15
# endif
2005-10-11 23:06:50 +04:00
# ifndef SO_RCVBUFFORCE
# define SO_RCVBUFFORCE 33
# endif
2005-06-26 20:55:24 +04:00
# ifdef __KLIBC__
static inline int clearenv ( void )
{
environ [ 0 ] = NULL ;
return 0 ;
}
# endif
2005-03-06 08:16:52 +03:00
extern uid_t lookup_user ( const char * user ) ;
extern gid_t lookup_group ( const char * group ) ;
2005-03-07 06:29:43 +03:00
extern size_t strlcpy ( char * dst , const char * src , size_t size ) ;
extern size_t strlcat ( char * dst , const char * src , size_t size ) ;
2005-03-06 08:16:52 +03:00
# endif /* _UDEV_LIBC_WRAPPER_H_ */