📄 sty.h
字号:
/* $Header: /usr/cvsroot/target/h/wrn/wm/demo/sty.h,v 1.1.1.1 2001/11/05 17:47:37 tneale Exp $ *//* * Copyright (C) 1999-2005 Wind River Systems, Inc. * All rights reserved. Provided under license only. * Distribution or other use of this software is only * permitted pursuant to the terms of a license agreement * from Wind River Systems (and is otherwise prohibited). * Refer to that license agreement for terms of use. *//**************************************************************************** * Copyright 2000-2001 Wind River Systems, Inc. * Copyright 1993-1997 Epilogue Technology Corporation. * Copyright 1998 Integrated Systems, Inc. * All rights reserved. ****************************************************************************//* * $Log: sty.h,v $ * Revision 1.1.1.1 2001/11/05 17:47:37 tneale * Tornado shuffle * * Revision 2.8 2001/01/19 22:23:37 paul * Update copyright. * * Revision 2.7 2000/03/17 00:12:14 meister * Update copyright message * * Revision 2.6 1998/11/23 20:47:29 wes * If building with GCC, use a gcc extension to declare sty_printf() as * being printf-like so sty_printf args can be sanity-checked at build * time. Most visible with stuff relating to the BUG macro.. * * Revision 2.5 1998/02/25 04:57:18 sra * Update copyrights. * * Revision 2.4 1997/03/20 06:53:24 sra * DFARS-safe copyright text. Zap! * * Revision 2.3 1997/02/25 10:58:16 sra * Update copyright notice, dust under the bed. * * Revision 2.2 1997/02/19 08:10:29 sra * More fun merging snmptalk into snark, general snark cleanup. * * Revision 2.1 1996/03/22 10:05:39 sra * Update copyrights prior to Attache 3.2 release. * * Revision 2.0 1995/05/10 22:38:15 sra * Attache release 3.0. * * Revision 1.3 1995/01/06 00:52:48 sra * Update copyright notice for 2.1 release. * * Revision 1.2 1994/09/04 23:55:50 sra * Get rid of most of the ancient NO_PP cruft. * * Revision 1.1 1993/07/05 21:53:06 sra * Initial revision * *//* * Software terminal definitions for Snark. * Based on ideas in Bridgham's doskbd code. * Keymaps not implemented yet, maybe some day. *//* [clearcase]modification history-------------------01b,10may05,job increase maximum input line size01a,20apr05,job update copyright notices*/#ifndef _SNARK_STY_H_#define _SNARK_STY_H_/* * GCC has a mode which lets it catch a number of common errors * made involving printf-like format strings. * It also has a language extension which lets you declare a function as * taking a printf-like format string. * If we're using a suitably new version of GCC (2.5 or newer), use * this extension. */#if !defined(__GNUC__) || __GNUC__ < 2 || \ (__GNUC__ == 2 && __GNUC_MINOR__ < 5)#define STY_ATTRIBUTE(x) /* delete __attribute__ if non-gcc or gcc1 */#else#define STY_ATTRIBUTE(x) __attribute__(x)#endif#define STY_RING_SIZE 1024#define STY_LINE_SIZE 2048#define STY_HISTORY_SIZE 20struct sty;struct sty_driver;struct sty { unsigned flags; /* state flags */ unsigned char ring_buf[STY_RING_SIZE]; /* input character ring buffer */ unsigned ring_start, ring_end; /* portion of ring buffer in use */ char line_buf[STY_LINE_SIZE]; /* input line buffer */ unsigned line_len; /* length of current line */ char *history[STY_HISTORY_SIZE]; /* command line history */ fastint_t history_ptr; /* current command history line */ struct sty_driver *driver; /* device driver */ void *driver_cookie; /* cookie for driver code */ void *app_cookie; /* cookie for application */ void (*app_receiver)(struct sty *, char *, void *); char *prompt; /* prompt string, null ok if none */};#define STY_FLAG_ECHOING 0x1#define STY_FLAG_BLOCKED 0x2#define STY_FLAG_ABORTED 0x4#define STY_FLAG_INTERRUPTED 0x8#define STY_FLAG_RAWMODE 0x10struct sty_driver { void (*write)(struct sty *, unsigned char *, size_t, void *); void (*close)(struct sty *, void *);};/* * The "console", which might be a keyboard/display pair, a log file, * a null sty driver, a telnet session, a serial line, or something weirder. * * In general, it is NOT a good idea to just assume that the cty is the * right sty to use for interactive commands. The cty is primarily for * use by code which has no sty context (eg, the BUG() macros), and for * the initial startup code. * * By default, the cty is a keyboard/display pair. */extern struct sty *cty;#ifndef CTY_SETUP#define CTY_SETUP() stykb_open()#endif/* * Declare listener to catch newly opened stys. * Returns old listener. */typedef void (*sty_listener_t)(struct sty *);extern sty_listener_t sty_listen(sty_listener_t);/* * Open an sty. Caller provides memory. * Installs driver, flags, and cookie, then calls sty listener, if any. */extern void sty_open(struct sty *, struct sty_driver *, unsigned, void *);/* * Close an sty. Calls driver close routine, clears driver. */extern void sty_close(struct sty *);/* * Initialize sty system. */extern void sty_init(void);/* * Request a "line" of text from the sty. At the moment a "line" * really is a line, because EOL is the only break sequence. * This could change if/when keymaps are implemented. */extern void sty_read (struct sty *, void (*)(struct sty *, char *, void *), char *, void *);/* * Output routines. */extern void sty_write (struct sty *, char *, size_t);extern void sty_putc (struct sty *, int);extern void sty_puts (struct sty *, char *);extern int sty_printf (struct sty *, char *, ...) STY_ATTRIBUTE((__format__(__printf__, 2, 3)));/* * Hand some text from driver to low-level sty code. */extern void sty_receive (struct sty *, unsigned char *, unsigned);/* * Ask how much buffer space this sty has left (for TELNET, mostly). */extern unsigned sty_window (struct sty *);/* * Clear sty input buffer. */extern void sty_discard (struct sty *);/* * Install a new cty. */extern void cty_set(struct sty *sty);/* * This should really go somewhere else, no good place for it though. */extern void stykb_open (void);#endif /* _SNARK_STY_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -