Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports-kde
Path: blob/main/editors/bpatch/files/patch-bpatch.c
16461 views
1
--- bpatch.c.orig 1990-01-17 15:33:33.000000000 +0100
2
+++ bpatch.c 2012-11-30 15:20:18.000000000 +0100
3
@@ -90,10 +90,15 @@
4
/*E*/
5
/*S includes, globals, and defines */
6
/*Page Eject*/
7
-#include <curses.h>
8
+#include <ncurses.h>
9
#include <fcntl.h>
10
#include <signal.h>
11
#include <ctype.h>
12
+#include <stdlib.h>
13
+#include <string.h>
14
+#include <unistd.h>
15
+#include <stdio.h>
16
+#include <termios.h>
17
#include <sys/types.h>
18
#include <sys/stat.h>
19
20
@@ -103,14 +108,18 @@
21
void icc ();
22
void copyrec ();
23
void schwapp ();
24
-
25
-/* added declarations, mostly for cleanliness */
26
-extern long lseek();
27
-extern long atol();
28
-extern char *strncpy();
29
-extern void exit();
30
-extern unsigned sleep(); /* signal problems ??? if sleep called */
31
-extern void perror();
32
+void breakp ();
33
+void reset ();
34
+int ckfile (char *, long *);
35
+int bread (int, char *, int, int);
36
+void errmsg (char *, unsigned);
37
+void show (int, char[16][16], char *, long, int, long, char, int, int, int, int, int, int);
38
+void dbg_msg (register char *);
39
+void dohelp ();
40
+void search (register int);
41
+int arrow (register int, register int*, register int *);
42
+void outstr (char *);
43
+void outch (register char);
44
45
/* set up for calls to outstr and errmsg, etc, */
46
/* by use of sprintf to fill outbuf */
47
@@ -190,7 +199,7 @@
48
#ifdef MOD_HAX
49
#else /* use original code... */
50
/* plus some more for restoring terminal function */
51
- struct termio asis, aswas;
52
+ struct termios asis, aswas;
53
#endif /* MOD_HAX */
54
55
/*S main - control all the work from here */
56
@@ -202,6 +211,7 @@
57
*
58
*********************************************************************/
59
/*E*/
60
+int
61
main (argc, argv)
62
int argc;
63
char *argv[];
64
@@ -210,12 +220,10 @@
65
extern WINDOW *newwin ();
66
67
register char *cp; /* general purpose char ptr */
68
- extern char *gets (); /* get string from stdin */
69
char m = '\017'; /* mask for hex edit */
70
char response[512]; /* general purpose buffer */
71
int z; /* character read in */
72
73
- int breakp (); /* signal trapping function */
74
int c; /* current screen column */
75
int change = 0; /* true if cmd line option toggled */
76
int fid; /* file descriptor */
77
@@ -234,8 +242,7 @@
78
extern char *optarg; /* getopt pointer to opt arg */
79
80
extern long getnum ();
81
- extern char *instr (); /* get a string from the cmd line */
82
- extern int reset (); /* exit function - reset terminal */
83
+ extern char *myinstr (); /* get a string from the cmd line */
84
85
/* ------------------------------------------------------------ */
86
/* set up signal handling */
87
@@ -333,19 +340,27 @@
88
alphawin = subwin (stdscr, 16, 16, 4, 57);
89
keypad (alphawin, TRUE);
90
errwin = subwin (stdscr, 1, 80, 23, 0);
91
+ if (errwin == NULL)
92
+ errwin = stdscr;
93
+ if (hexwin == NULL || alphawin == NULL)
94
+ {
95
+ fprintf(stderr, "Can't create all necessary curses windows.\n");
96
+ reset (0);
97
+ exit (2);
98
+ }
99
100
#ifdef MOD_HAX
101
/* This is not exactly what the original code does,
102
but it's good enough. -r$ */
103
raw();
104
#else /* use original code... */
105
- ioctl (0, TCGETA, &asis);
106
+ tcgetattr (0, &asis);
107
aswas = asis; /* save termio stuff for later restore */
108
asis.c_cc[VINTR] = '\0';
109
asis.c_iflag &= ~IXON;
110
asis.c_iflag &= ~IXOFF;
111
asis.c_iflag &= ~IXANY;
112
- ioctl (0, TCSETA, &asis);
113
+ tcsetattr (0, TCSANOW, &asis);
114
#endif /* MOD_HAX */
115
}
116
117
@@ -398,7 +413,7 @@
118
{
119
position = lseek (fid, ((long )recno) * 256, 0);
120
121
- if ((bytes = bread (fid, record, 256, block)) < 0)
122
+ if ((bytes = bread (fid, (char *)record, 256, block)) < 0)
123
{
124
sprintf(outbuf, "error on reading file %s", filename);
125
errmsg (outbuf, SLEEP_TIME);
126
@@ -478,7 +493,9 @@
127
}
128
pbrk = 0;
129
fprintf (stderr, "\007");
130
- gets (response);
131
+ fgets (response, 512, stdin);
132
+ if ((cp = strchr (response, '\n')))
133
+ *cp = 0;
134
135
if (pbrk) status = EOF;
136
}
137
@@ -617,7 +634,7 @@
138
139
case '\006': /* new file (^F) */
140
close (fid);
141
- fid = ckfile (cp = instr (), &size);
142
+ fid = ckfile (cp = myinstr (), &size);
143
if (fid < 0)
144
{
145
fid = ckfile (filename, &size);
146
@@ -832,7 +849,8 @@
147
touchwin (alphawin);
148
wrefresh (alphawin);
149
150
- while ((z = wgetch (alphawin)) != DEL)
151
+ while ((z = wgetch (alphawin)) != KEY_DC &&
152
+ z != KEY_BACKSPACE)
153
{
154
if (!arrow (z, &r, &c))
155
{
156
@@ -902,7 +920,8 @@
157
touchwin (hexwin);
158
wrefresh (hexwin);
159
160
- while ((z = wgetch (hexwin)) != DEL)
161
+ while ((z = wgetch (hexwin)) != KEY_DC
162
+ && z != KEY_BACKSPACE)
163
{
164
if (!arrow (z, &r, &c))
165
{
166
@@ -1083,21 +1102,9 @@
167
/*E*/
168
/*checked typing of parameters as declared in fucntion */
169
/* versus declarations at call */
170
-show (bytes, record, filename, size, recno, position,
171
- m,reclen, dump, ebcdic, swab_opt, block, honly)
172
-int bytes;
173
-char record[16][16];
174
-char *filename;
175
-long size;
176
-int recno;
177
-long position;
178
-char m;
179
-int reclen;
180
-int dump;
181
-int ebcdic;
182
-int swab_opt;
183
-int block;
184
-int honly;
185
+void
186
+show (int bytes, char record[16][16], char *filename, long size, int recno, long position,
187
+ char m, int reclen, int dump, int ebcdic, int swab_opt, int block, int honly)
188
{
189
int i;
190
int j;
191
@@ -1281,7 +1288,7 @@
192
/*S breakp - set pbrk on interrupt */
193
/*H breakp */
194
/*E*/
195
-int breakp (i)
196
+void breakp (i)
197
int i;
198
{
199
int s;
200
@@ -1448,6 +1455,7 @@
201
/*S ckfile - check on existence, accessibility, and type of file */
202
/*H ckfile */
203
/*E*/
204
+int
205
ckfile (filename, sizep)
206
char *filename;
207
long *sizep;
208
@@ -1515,6 +1523,7 @@
209
/*S dohelp - display help text */
210
/*H dohelp */
211
/*E*/
212
+void
213
dohelp ()
214
{
215
static char *helptxt[] = {
216
@@ -1592,6 +1601,7 @@
217
/*S reset - reset terminal to original state */
218
/*H reset */
219
/*E*/
220
+void
221
reset (sig)
222
int sig;
223
{
224
@@ -1600,7 +1610,7 @@
225
move (23, 0);
226
refresh ();
227
#ifndef MOD_HAX
228
- ioctl (0, TCSETA, &aswas);
229
+ tcsetattr (0, TCSANOW, &aswas);
230
#endif
231
endwin ();
232
}
233
@@ -1610,17 +1620,17 @@
234
fprintf (stderr, "killed with signal %d\n", sig);
235
exit (sig);
236
}
237
- return (0);
238
}
239
/*S arrow - determine if current character is a cursor control key */
240
/*H arrow */
241
/*E*/
242
+int
243
arrow (k, r, c)
244
register int k;
245
register int *r;
246
register int *c;
247
{
248
- register ret = 1;
249
+ register int ret = 1;
250
251
/* watch out for conflict of VI_* amd KEY_* definitions */
252
if (k == KEY_UP || k == VI_UP)
253
@@ -1673,6 +1683,7 @@
254
/*S dbg_msg - print a debug message */
255
/*H dbg_msg */
256
/*E*/
257
+void
258
dbg_msg (msg)
259
register char *msg;
260
{
261
@@ -1683,11 +1694,11 @@
262
263
return;
264
}
265
-/*S instr - get a character string from the terminal */
266
-/*H instr */
267
+/*S myinstr - get a character string from the terminal */
268
+/*H myinstr */
269
/*E*/
270
char *
271
-instr ()
272
+myinstr ()
273
{
274
static char buf[512];
275
276
@@ -1815,6 +1826,7 @@
277
/*S search - look for an ascii string in the file */
278
/*H search */
279
/*E*/
280
+void
281
search (fid)
282
register int fid;
283
{
284
@@ -1827,13 +1839,13 @@
285
register int matched = 0;
286
register int srch_len;
287
288
- register char *cp = instr ();
289
+ register char *cp = myinstr ();
290
register char *rp;
291
292
int row, col;
293
294
srch_len = strlen (cp);
295
- copyrec (record, lrecord, sizeof record);
296
+ copyrec ((char *)record, lrecord, sizeof record);
297
lrecord[256] = '\0';
298
299
pbrk = 0;
300
@@ -1875,7 +1887,7 @@
301
{
302
recno = currec;
303
stay = 0;
304
- copyrec (record, unch_rec, sizeof record);
305
+ copyrec ((char *)record, (char *)unch_rec, sizeof record);
306
werase (errwin);
307
touchwin (errwin);
308
wrefresh (errwin);
309
@@ -1891,6 +1903,7 @@
310
}
311
/* simplified call to errmsg(), by using sprintf to load format */
312
/* sleep_time is not implemented and awaits cleaning up of the signals (?) */
313
+void
314
errmsg (fmt, sleep_time)
315
unsigned sleep_time;
316
char *fmt;
317
@@ -1911,7 +1924,7 @@
318
}
319
else
320
{
321
- fprintf (stderr, fmt);
322
+ fprintf (stderr, "%s", fmt);
323
fprintf (stderr, "\n");
324
}
325
/* signal problem ?? if sleep called
326
@@ -1921,16 +1934,17 @@
327
return;
328
}
329
/* simplified call to outstr(), by using sprintf to load format */
330
+void
331
outstr (fmt)
332
char *fmt;
333
{
334
- if (dump) printf (fmt);
335
- else printw (fmt);
336
+ if (dump) printf ("%s", fmt);
337
+ else printw ("%s", fmt);
338
339
return;
340
}
341
-outch (ch)
342
-register char ch;
343
+void
344
+outch (register char ch)
345
{
346
if (dump) putchar (ch);
347
else addch (ch);
348
349