📄 cl_buf.h
字号:
/***********************************************************
cl_buf.h - description
-------------------
description : Buffer
begin : Wed April 25 2001
copyright : (C) 2001 Dragon Co.
email : martin@dragon.com
*************************************************************/
#ifndef _CL_BUF_H_
#define _CL_BUF_H_
#ifdef _cplusplus
extern"C"{
#endif
/* Buffer master. */
struct buffer
{
/* Type of this buffer. */
int type;
/* Data list. */
struct buffer_data *head;
struct buffer_data *tail;
/* Current allocated data. */
unsigned long alloc;
/* Total length of buffer. */
unsigned long size;
/* For allocation. */
struct buffer_data *unused_head;
struct buffer_data *unused_tail;
/* Current total length of this buffer. */
unsigned long length;
};
/* Data container. */
struct buffer_data
{
struct buffer *parent;
struct buffer_data *next;
struct buffer_data *prev;
/* Acctual data stream. */
unsigned char *data;
/* Current pointer. */
unsigned long cp;
/* Start pointer. */
unsigned long sp;
};
/* Buffer type index. */
#define BUFFER_STRING 0
#define BUFFER_STREAM 1
#define BUFFER_VTY 2
#define PUTC(val, pnt) (*(u_char *)(pnt)++) = (u_char)(val)
#define PUTW(val, pnt) do { u_int16_t t = htons((u_int16_t)(val)); memcpy ((pnt), &t, 2); (pnt) += 2; } while (0)
#define PUTL(val, pnt) do { u_int32_t t = htonl((u_int32_t)(val)); memcpy ((pnt), &t, 4); (pnt) += 4; } while (0)
/* Buffer prototypes. */
struct buffer *buffer_new ( size_t);
int buffer_write (struct buffer *, u_char *, size_t);
void buffer_free (struct buffer *);
char *buffer_getstr (struct buffer *);
int buffer_putc (struct buffer *, u_char);
int buffer_putstr (struct buffer *, u_char *);
void buffer_reset (struct buffer *);
int buffer_flush_all (struct buffer *, int);
int buffer_flush_window (struct buffer *, int, int, int, int, int);
int buffer_empty (struct buffer *);
#ifdef _cplusplus
}
#endif
#endif /* _CL_BUF_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -