Sophie

Sophie

distrib > Mandriva > 2009.1 > x86_64 > by-pkgid > d90d9d7fd893f8089d43570a6d730497 > files > 26

afbackup-debug-3.4-2mdv2008.0.x86_64.rpm

/****************** Start of $RCSfile: sysutils.h,v $  ****************
*
* $Source: /home/alb/afbackup/afbackup-3.3.9beta4/RCS/sysutils.h,v $
* $Id: sysutils.h,v 1.6 2005/07/31 15:42:11 alb Exp alb $
* $Date: 2005/07/31 15:42:11 $
* $Author: alb $
*
*
******* description ***********************************************
*
*
*
*******************************************************************/

#ifndef __SYSUTILS_H
#define	__SYSUTILS_H	__SYSUTILS_H

#include <signal.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdarg.h>
#include <syslog.h>
#include <netdb.h>

#include <genutils.h>

#ifdef	__FreeBSD__
#ifndef O_SYNC
#define O_SYNC O_FSYNC
#endif
#endif

#ifndef	MAXHOSTNAMELEN
#define	MAXHOSTNAMELEN	200	/* should be almost sufficient */
#endif

typedef struct _complete_user_spec {
  uid_t		uid;
  gid_t		gid;
  int		ngids;
  gid_t		*gids;
} UGIDS;

typedef	struct	__mnt_ent_ {
  dev_t		dev;
  UChar		*dir;
  UChar		*typestr;
  UChar		*devstr;
} MntEnt;

#ifdef __QNX__

#define	ITIMER_REAL		0		/* Real time */
#define	ITIMER_VIRTUAL		1		/* Per-process time */
#define	ITIMER_PROF		2		/* Per-process user time */

#if 0
/* seems to exist already */
struct timeval {
        int		tv_sec;			/* seconds */
        int		tv_usec;		/* microseconds */
};

struct	itimerval {
	struct		timeval it_interval;	/* timer interval */
	struct		timeval it_value;	/* current value */
};
#endif	/* 0 */

#ifdef	__cplusplus
extern	"C"	{
#endif

extern	int	setitimer(int, struct itimerval *, struct itimerval *);
extern	int	getitimer(int, struct itimerval *);

#ifdef	__cplusplus
}
#endif

#endif	/* defined(__QNX__) */

#ifdef	__cplusplus
extern	"C"	{
#endif

extern	Int32	get_fs_space(UChar *, Real64 *);
extern	Int32	get_fs_status(UChar *, Int32 *, Real64 *, Real64 *, Real64 *);
extern	MntEnt	*get_all_mounts(Int32 *);
extern	MntEnt	*find_mnt_by_devno_dir(MntEnt *, Int32, dev_t, UChar *);
#define	find_mnt_by_devno(mnts, nmnts, devno)	\
			find_mnt_by_devno_dir(mnts, nmnts, devno, NULL)
extern	UChar	*get_fstype_by_devno_dir(dev_t, UChar *);
#define	get_fstype_by_devno(devno)	\
			get_fstype_by_devno_dir(devno, NULL)
extern	void	free_mounts(MntEnt *);
extern	Int32	free_fds();
extern	Flag	is_a_tty(int);
extern	void	gvsyslog(UChar *, int, int, int, UChar *, va_list);
extern	void	genlogmsg(UChar *, int, int, UChar *, ...);
extern	int	fd_system_fork(char *, int *);
extern	int	fp_system_fork(char *, FILE **);
extern	int	fdpopen(char *, int, int *);
extern	Int32	bytes_free_real_mem_pag(Int32, Int32);
extern	int	open_to_pipe(UChar *, UChar *, UChar, int *, int);
extern	int	open_from_pipe(UChar *, UChar *, UChar, int *);
extern	Int32	open_from_to_pipe(UChar *, int *, UChar, int *);
extern	int	open_to_pipe_sigblk(UChar *, UChar *, UChar,
					int *, int, sigset_t *);
extern	int	open_from_pipe_sigblk(UChar *, UChar *, UChar,
					int *, sigset_t *);
extern	Int32	open_from_to_pipe_sigblk(UChar *, int *, UChar,
					int *, sigset_t *);
extern	int	open_as_user(char *, int, uid_t, gid_t, ...);
extern	FILE	*fopen_as_user(char *, char *, uid_t, gid_t);
extern	FILE	*popen_as_user(char *, char *, uid_t, gid_t);
extern	int	detach_from_tty();
extern	void	ms_sleep(Int32);
extern	int	set_eff_ugids(uid_t, gid_t, int, gid_t *);
extern	int	get_groups(int *, gid_t **);
extern	Int32	set_env(UChar *, UChar *);
extern	Int32	unset_env(UChar *);

extern	Int32	to_other_user(uid_t, gid_t, UGIDS *);
extern	Int32	to_org_user(UGIDS *);
extern	int	create_unix_socket(UChar *);
extern	int	open_uxsock_conn(UChar *);

extern	Uns32	syslog_facility_from_string(UChar *);

#ifdef	__cplusplus
}
#endif

/* according to experience and man-pages, FD_CLOEXEC is
 * always the only bit that can be modified with F_SETFD
 * and it always seems to be defined to 1 */
#ifndef	FD_CLOEXEC
#define	FD_CLOEXEC	1
#endif
#define	set_closeonexec(fd) fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC)


#endif	/* ! defined(__SYSUTILS_H) */

/************ end of $RCSfile: sysutils.h,v $ ******************/