view usr/src/cmd/lp/lib/msgs/llib-llpmsg @ 4:1a15d5aaf794

synchronized with onnv_86 (6202) in onnv-gate
author Koji Uno <koji.uno@sun.com>
date Mon, 31 Aug 2009 14:38:03 +0900
parents c9caec207d52
children
line wrap: on
line source

/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/* LINTLIBRARY */
/* PROTOLIB1 */

/*
 * Copyright (c) 1998 by Sun Microsystems, Inc.
 * All rights reserved.
 */

/*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
/*	  All Rights Reserved  	*/

#pragma ident	"%Z%%M%	%I%	%E% SMI"


# include	<sys/types.h>
# include	<poll.h>
# include	<stdarg.h>
# include	<stropts.h>


typedef	struct	strbuf	strbuf_t;	/*  STREAMS buffer */

typedef	struct mque
{
    struct mque	  *next;
    struct strbuf *dat;
} MQUE;

typedef struct
{
    short	type;			/* type of connection */
    int		readfd;			/* STREAM fd to read from */
    int		writefd;		/* STREAM fd to write to */
    int		wait;			/* number of systems waiting for */
    char	*file;			/* pipe name if type==MD_FIFO */
    short	state;			/* Current state of client */
    short	admin;			/* Non zero if admin  */
    short	event;			/* Event returned from poll */
    MQUE *	mque;			/* backlogged message ptr */
    uid_t	uid;			/* Clients UID */
    gid_t	gid;			/* Clients GID */
    void	(**on_discon)();	/* Clean up functions */
} MESG;

#define	MSGMAX		2048
typedef struct
{
	int	full;
	char	save [MSGMAX],
		*psave,
		*psave_end;
} fifobuffer_t;

MESG		* mcreate ( char * );
int		mlisteninit ( MESG * );
MESG		* mlisten ( void );
int		mlistenadd ( MESG *, short );
int		mon_discon ( MESG *, void (*)());
MESG		* mlistenreset ( void );
int		mdestroy ( MESG * );

MESG		* mconnect ( char *, int, int );
int		mgetm ( MESG *, int, ... );
int		mwrite ( MESG *, char * );
int		mputm ( MESG *, int, ... );
int		mread ( MESG *, char *, int );
short		msize ( char * );
short		mpeek ( MESG * );
int		mdisconnect ( MESG * );

void		__mbfree ( void );

int		mclose ( void );
int		mneeds ( void );
int		mopen ( void );
int		mrecv ( char *, int );
int		msend ( char * );

int		Putmsg (MESG *, strbuf_t *, strbuf_t *, int);
int		Getmsg (MESG *, strbuf_t *, strbuf_t *, int *);
int		read3_2 (MESG * md, char *msgbuf, int size);
int		write3_2 (MESG *, char *, int);
int		read_fifo (int, char *, unsigned int);
int		write_fifo (int, char *, unsigned int);
int		ResetFifoBuffer (int);
fifobuffer_t	*GetFifoBuffer (int);

char		* htos ( char *, unsigned short );
char		* ltos ( char *, unsigned long );
unsigned long	stol ( char * );
unsigned short	stoh ( char * );
int		_getmessage ( char *, short, va_list );
int		_putmessage ( char *, short, va_list );
int		getmessage ( char *, short, ... );
int		putmessage ( char *, short, ... );