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
|
--- main.c.orig Sat Jan 27 05:31:22 2001
+++ main.c Mon Dec 31 19:08:46 2001
@@ -49,11 +49,17 @@
*
* 4.0 Petri Kutvonen, 1-Sep-91
*
- * 4.0 convert from Linux source code to FreeBSD.
- * Added tabmask change option. (-T) tabsize 8 to 4.
- * Added automatic .c file setup cmode. like OS-9 uEMacs.
- * Tadashi Yumoto, 27-Jan-01
+ * 4.0 convert from Linux source code to FreeBSD.
+ * Added tabmask change option. (-T) tabsize 8 to 4.
+ * Added automatic .c file setup cmode. like OS-9 uEMacs.
+ * Tadashi Yumoto, 27-Jan-01
+ * 4.0.17 added file access permission test in file.c.
+ * Tadashi Yumoto, 14-Apr-01
*
+ * modified -t option for -t4 or -t or -t8 supported.
+ * fixed bug in eval.c not set "tabsize".
+ * added help message.
+ * Tadashi Yumoto 30-Dec-01
*/
#include <stdio.h>
@@ -89,6 +95,10 @@
#include <signal.h>
#endif
+#if defined(TOYCODE) && defined(BSD)
+#include <sys/unistd.h>
+#include <errno.h>
+#endif
#if CALLED
emacs(argc, argv)
#else
@@ -225,9 +235,21 @@
#if TOYCODE
case 't': /* -t for tabmask change */
case 'T':
- tabmask = 0x03;
- tabsize = 4;
- break;
+ case 'x':
+ case 'X':
+ if ( argv[carg][2] == '4' || argv[carg][2] == NULL ) {
+ tabsize = 4;
+ tabmask = 0x03;
+ } else if ( argv[carg][2] == '8' ) {
+ tabmask = 0x07;
+ }
+ break;
+ case 'h': case 'H': case '?':
+ TTclose();
+ TTkclose();
+ vttidy();
+ prtuse(argv[0]);
+ exit(0);
#endif
default: /* unknown switch */
/* ignore this for now */
@@ -273,7 +295,11 @@
sink = strlen(argv[carg]);
if (sink >= 2 && (argv[carg][sink-2] == '.' &&
(argv[carg][sink-1] == 'c' || argv[carg][sink-1] == 'h')))
- bp->b_mode |= MDCMOD;
+ bp->b_mode |= gmode | MDCMOD;
+ /* for C++ */
+ if (sink >= 3 && (argv[carg][sink-3] == '.' &&
+ (argv[carg][sink-2] == 'c' && argv[carg][sink-1] == 'c')))
+ bp->b_mode |= gmode | MDCMOD;
#endif
}
}
@@ -913,5 +939,44 @@
#undef exit
exit(status);
#endif
+}
+#endif
+
+#if TOYCODE
+static char *helpmsg[] = {
+ "Description:\n",
+ " Light-weight full screen editor.\n",
+#if PKCODE
+ " use termcap but,\n",
+ " em recognizes the size of the screen dynamically.\n",
+#endif
+ "\n",
+ "Options: upper/lower case handling same way.\n",
+ " -a ... process error file.\n",
+ " -e ... edit file.\n",
+ " -g<n> ... initial goto line <n>.\n",
+#if PKCODE
+ " +g<n> ... initial goto line <n>.\n",
+#endif
+#if CRYPT
+ " -k<key> ... cryption.\n",
+#endif
+#if PKCODE
+ " -n ... accept null chars.\n",
+#endif
+ " -r ... restrictive use.\n",
+ " -s<str> ... initial serarch string.\n",
+ " -v ... view file.\n",
+ " -t<4/8> ... force tab width change to 4/8.\n",
+};
+
+static int prtuse(pname)
+char *pname;
+{
+ char **p = helpmsg,
+ **e = helpmsg + (sizeof (helpmsg) / (sizeof (char **)));
+
+ fprintf(stderr,"Syntax: %s {[<opt>] file ...}\n",pname);
+ while ( p < e ) fputs(*p++,stderr);
}
#endif
|