about summary refs log tree commit diff stats
path: root/xxxterm.c
diff options
context:
space:
mode:
authorMichal Mazurek <akfaew@jasminek.net>2012-03-04 13:29:00 +0100
committerMichal Mazurek <akfaew@jasminek.net>2012-03-04 13:29:00 +0100
commitc303971def63e3810937ddb683bbddfa38595ed7 (patch)
treeeba5a5c889cf1659f74a08ed214c95be6964c5bd /xxxterm.c
parent076f60a9df019caaf6401369a11b4b8fd223c536 (diff)
downloadxombrero-c303971def63e3810937ddb683bbddfa38595ed7.tar.gz
* simplify marks code, no more magic loops
* separate quickmarks from marks
Diffstat (limited to 'xxxterm.c')
-rw-r--r--xxxterm.c53
1 files changed, 27 insertions, 26 deletions
diff --git a/xxxterm.c b/xxxterm.c
index c9650ad..c5705a6 100644
--- a/xxxterm.c
+++ b/xxxterm.c
@@ -358,43 +358,44 @@ history_read(struct command_list *list, char *file, int *counter)
 	return (0);
 }
 
-/* marks and quickmarks array storage.
- * first a-z, then A-Z, then 0-9 */
+/* marks array storage. */
 char
 indextomark(int i)
 {
-	if (i < 0)
+	if (i < 0 || i >= XT_NOMARKS)
 		return (0);
 
-	if (i >= 0 && i <= 'z' - 'a')
-		return 'a' + i;
+	return XT_MARKS[i];
+}
 
-	i -= 'z' - 'a' + 1;
-	if (i >= 0 && i <= 'Z' - 'A')
-		return 'A' + i;
+int
+marktoindex(char m)
+{
+	char *ret;
 
-	i -= 'Z' - 'A' + 1;
-	if (i >= 10)
-		return (0);
+	if ((ret = strchr(XT_MARKS, m)) != NULL)
+		return ret - XT_MARKS;
 
-	return i + '0';
+	return (-1);
 }
 
-int
-marktoindex(char m)
+/* quickmarks array storage. */
+char
+indextoqmark(int i)
 {
-	int ret = 0;
+	if (i < 0 || i >= XT_NOQMARKS)
+		return (0);
 
-	if (m >= 'a' && m <= 'z')
-		return ret + m - 'a';
+	return XT_QMARKS[i];
+}
 
-	ret += 'z' - 'a' + 1;
-	if (m >= 'A' && m <= 'Z')
-		return ret + m - 'A';
+int
+qmarktoindex(char m)
+{
+	char *ret;
 
-	ret += 'Z' - 'A' + 1;
-	if (m >= '0' && m <= '9')
-		return ret + m - '0';
+	if ((ret = strchr(XT_QMARKS, m)) != NULL)
+		return ret - XT_QMARKS;
 
 	return (-1);
 }
@@ -4944,7 +4945,7 @@ qmarks_load(void)
 		p = strtok(line, " \t");
 
 		if (p == NULL || strlen(p) != 1 ||
-		    (index = marktoindex(*p)) == -1) {
+		    (index = qmarktoindex(*p)) == -1) {
 			warnx("corrupt quickmarks file, line %d", i);
 			break;
 		}
@@ -4975,7 +4976,7 @@ qmarks_save(void)
 
 	for (i = 0; i < XT_NOMARKS; i++)
 		if (qmarks[i] != NULL)
-			fprintf(f, "%c %s\n", indextomark(i), qmarks[i]);
+			fprintf(f, "%c %s\n", indextoqmark(i), qmarks[i]);
 
 	fclose(f);
 
@@ -4989,7 +4990,7 @@ qmark(struct tab *t, struct karg *arg)
 	int		index;
 
 	mark = arg->s[strlen(arg->s)-1];
-	index = marktoindex(mark);
+	index = qmarktoindex(mark);
 	if (index == -1)
 		return (-1);
 
class='oid'>fdd9bd0 ^
7410b8c ^

979e1f9 ^

7410b8c ^

fdd9bd0 ^
c6ced3e ^




d6d0c18 ^
c38385c ^
c6ced3e ^
78f4d8a ^
c6ced3e ^
c896e6b ^
d6d0c18 ^
c896e6b ^

78f4d8a ^
c896e6b ^
c896e6b ^

2b0d4a5 ^



69217dd ^
979e1f9 ^


69217dd ^
979e1f9 ^
6c1b09b ^
979e1f9 ^
6c1b09b ^
25972a6 ^
979e1f9 ^
f316396 ^

25972a6 ^

78f4d8a ^
2b0d4a5 ^
25972a6 ^


2b0d4a5 ^
979e1f9 ^

6c1b09b ^
2b0d4a5 ^




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