17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*b2a1c443Svb  * Common Development and Distribution License (the "License").
6*b2a1c443Svb  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
207c478bd9Sstevel@tonic-gate  */
217c478bd9Sstevel@tonic-gate /*
22*b2a1c443Svb  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
237c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
247c478bd9Sstevel@tonic-gate  */
257c478bd9Sstevel@tonic-gate 
267c478bd9Sstevel@tonic-gate #ifndef	_MDB_CMDBUF_H
277c478bd9Sstevel@tonic-gate #define	_MDB_CMDBUF_H
287c478bd9Sstevel@tonic-gate 
297c478bd9Sstevel@tonic-gate #include <sys/types.h>
307c478bd9Sstevel@tonic-gate 
317c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
327c478bd9Sstevel@tonic-gate extern "C" {
337c478bd9Sstevel@tonic-gate #endif
347c478bd9Sstevel@tonic-gate 
357c478bd9Sstevel@tonic-gate typedef struct mdb_cmdbuf {
367c478bd9Sstevel@tonic-gate 	char **cmd_history;	/* Circular array of history buffers */
377c478bd9Sstevel@tonic-gate 	char *cmd_linebuf;	/* Temporary history for current buffer */
387c478bd9Sstevel@tonic-gate 	char *cmd_buf;		/* Current line buffer */
397c478bd9Sstevel@tonic-gate 	size_t cmd_linelen;	/* Maximum line length */
407c478bd9Sstevel@tonic-gate 	size_t cmd_histlen;	/* Maximum history entries */
41*b2a1c443Svb 	size_t cmd_halloc;	/* Number of allocated history entries */
427c478bd9Sstevel@tonic-gate 	size_t cmd_buflen;	/* Number of bytes in current line buffer */
437c478bd9Sstevel@tonic-gate 	size_t cmd_bufidx;	/* Byte position in current line buffer */
447c478bd9Sstevel@tonic-gate 	ssize_t cmd_hold;	/* Oldest history entry index */
457c478bd9Sstevel@tonic-gate 	ssize_t cmd_hnew;	/* Newest history entry index */
467c478bd9Sstevel@tonic-gate 	ssize_t cmd_hcur;	/* Current history entry index */
477c478bd9Sstevel@tonic-gate 	ssize_t cmd_hlen;	/* Number of valid history buffers */
487c478bd9Sstevel@tonic-gate } mdb_cmdbuf_t;
497c478bd9Sstevel@tonic-gate 
507c478bd9Sstevel@tonic-gate #ifdef _MDB
517c478bd9Sstevel@tonic-gate 
527c478bd9Sstevel@tonic-gate extern void mdb_cmdbuf_create(mdb_cmdbuf_t *);
537c478bd9Sstevel@tonic-gate extern void mdb_cmdbuf_destroy(mdb_cmdbuf_t *);
547c478bd9Sstevel@tonic-gate 
557c478bd9Sstevel@tonic-gate extern const char *mdb_cmdbuf_accept(mdb_cmdbuf_t *);
567c478bd9Sstevel@tonic-gate 
577c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_caninsert(mdb_cmdbuf_t *, size_t);
587c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_atstart(mdb_cmdbuf_t *);
597c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_atend(mdb_cmdbuf_t *);
607c478bd9Sstevel@tonic-gate 
617c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_insert(mdb_cmdbuf_t *, int);
627c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_backspace(mdb_cmdbuf_t *, int);
637c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_delchar(mdb_cmdbuf_t *, int);
647c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_fwdchar(mdb_cmdbuf_t *, int);
657c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_backchar(mdb_cmdbuf_t *, int);
667c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_transpose(mdb_cmdbuf_t *, int);
677c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_home(mdb_cmdbuf_t *, int);
687c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_end(mdb_cmdbuf_t *, int);
697c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_fwdword(mdb_cmdbuf_t *, int);
707c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_backword(mdb_cmdbuf_t *, int);
717c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_killfwdword(mdb_cmdbuf_t *, int);
727c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_killbackword(mdb_cmdbuf_t *, int);
737c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_kill(mdb_cmdbuf_t *, int);
747c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_reset(mdb_cmdbuf_t *, int);
757c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_prevhist(mdb_cmdbuf_t *, int);
767c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_nexthist(mdb_cmdbuf_t *, int);
777c478bd9Sstevel@tonic-gate extern int mdb_cmdbuf_findhist(mdb_cmdbuf_t *, int);
787c478bd9Sstevel@tonic-gate 
797c478bd9Sstevel@tonic-gate #endif /* _MDB */
807c478bd9Sstevel@tonic-gate 
817c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
827c478bd9Sstevel@tonic-gate }
837c478bd9Sstevel@tonic-gate #endif
847c478bd9Sstevel@tonic-gate 
857c478bd9Sstevel@tonic-gate #endif	/* _MDB_CMDBUF_H */
86