File: ed.h

package info (click to toggle)
ed 0.7-3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 1,120 kB
  • ctags: 223
  • sloc: ansic: 2,384; sh: 534; makefile: 145
file content (139 lines) | stat: -rw-r--r-- 5,047 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*  Global declarations for the ed editor.  */
/*  GNU ed - The GNU line editor.
    Copyright (C) 1993, 1994 Andrew Moore, Talke Studio
    Copyright (C) 2006, 2007 Antonio Diaz Diaz.

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

enum Gflags
  {
  GLB = 0x01,			/* global command */
  GLS = 0x02,			/* list after command */
  GNP = 0x04,			/* enumerate after command */
  GPR = 0x08,			/* print after command */
  GSG = 0x10			/* global substitute */
  };


typedef struct line		/* Line node */
  {
  struct line *q_forw;
  struct line *q_back;
  long pos;			/* position of text in scratch buffer */
  int len;			/* length of line */
  }
line_t;


typedef struct
  {
  enum { UADD = 0, UDEL = 1, UMOV = 2, VMOV = 3 } type;
  line_t *head;			/* head of list */
  line_t *tail;			/* tail of list */
  }
undo_t;

#ifndef max
#define max( a,b ) (( a ) > ( b ) ? ( a ) : ( b ) )
#endif
#ifndef min
#define min( a,b ) (( a ) < ( b ) ? ( a ) : ( b ) )
#endif


/* defined in buf.c */
char append_lines( const char *ibufp2, const int addr, const char isglobal );
char close_sbuf( void );
char copy_lines( const int first_addr, const int second_addr, const int addr );
int current_addr( void );
int dec_addr( int addr );
char delete_lines( const int from, const int to, const char isglobal );
int get_line_node_addr( const line_t *lp );
char *get_sbuf_line( const line_t *lp );
char newline_added( void );
int inc_addr( int addr );
int inc_current_addr( void );
char init_buffers( void );
char isbinary( void );
char modified( void );
char join_lines( const int from, const int to, const char isglobal );
int last_addr( void );
char move_lines( const int first_addr, const int second_addr, const int addr,
                 const char isglobal );
char open_sbuf( void );
int path_max( const char *filename );
char put_lines( const int addr );
const char *put_sbuf_line( const char *cs, const int addr );
line_t *search_line_node( const int n );
void set_binary( void );
void set_current_addr( const int addr );
void set_modified( const char m );
void set_newline_added( void );
char yank_lines( const int from, const int to );
void clear_undo_stack( void );
void disable_undo( void );
char pop_undo_stack( const char isglobal );
undo_t *push_undo_stack( const int type, const int from, const int to );

/* defined in glbl.c */
void clear_active_list( void );
const line_t *next_active_node( void );
char set_active_node( const line_t *lp );
void unset_active_nodes( const line_t *np, const line_t *mp );

/* defined in io.c */
char display_lines( int from, const int to, const int gflags, const char traditional );
const char *get_extended_line( const char *ibufp2, int *lenp, const char nonl );
const char *get_tty_line( int *lenp );
int read_file( const char *filename, const int addr, const char scripted );
int write_file( const char *filename, const char *mode,
                const int from, const int to, const char scripted );

/* defined in main.c */
char is_regular_file( int fd );
char is_valid_filename( const char *name, const char restricted );
void show_strerror( const char *filename, int errcode );

/* defined in main_loop.c */
int main_loop( const char loose, const char restricted, const char scripted,
               const char traditional );
void set_def_filename( const char *s );
void set_error_msg( const char *msg );
void set_prompt( const char *s );
void set_verbose( void );
void unmark_line_node( const line_t *lp );

/* defined in re.c */
char build_active_list( const char **ibufpp, const int first_addr,
                        const int second_addr, const char match );
char extract_subst_tail( const char **ibufpp, int *gflagsp, int *snump,
                         const char isglobal );
int get_matching_node_addr( const char **ibufpp, const char forward );
char new_compiled_pattern( const char **ibufpp );
char prev_pattern( void );
char search_and_replace( const int first_addr, const int second_addr,
                         const int gflags, const int snum, const char isglobal );

/* defined in signal.c */
void enable_interrupts( void );
void disable_interrupts( void );
void set_signals( void );
void set_window_lines( const int lines );
int window_columns( void );
int window_lines( void );
char parse_int( int *i, const char *str, const char **tail );
char resize_buffer( char **buf, int *size, int min_size );
const char *skip_blanks( const char *s );
const char *strip_escapes( const char *s );