projects
/
selector.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b72e53a
)
Cosmectics.
author
Francois Fleuret
<francois@fleuret.org>
Thu, 14 May 2009 06:44:04 +0000
(08:44 +0200)
committer
Francois Fleuret
<francois@fleuret.org>
Thu, 14 May 2009 06:44:04 +0000
(08:44 +0200)
selector.cc
patch
|
blob
|
history
diff --git
a/selector.cc
b/selector.cc
index
637ae74
..
99a9057
100644
(file)
--- a/
selector.cc
+++ b/
selector.cc
@@
-570,36
+570,46
@@
void read_file(const char *input_filename,
char *s, *t;
const char *u;
char *s, *t;
const char *u;
- s = buffer;
t = raw_line;
t = raw_line;
- while(*t) {
- u = unctrl(*t++);
- while(*u) { *s++ = *u++; }
+
+ // Remove the zsh history prefix
+
+ if(zsh_history && *t == ':') {
+ while(*t && *t != ';') s++;
+ if(*t == ';') t++;
}
}
- *s = '\0';
- s = buffer;
+ // Remove the bash history prefix
- if(zsh_history && *s == ':') {
- while(*s && *s != ';') s++;
- if(*s == ';') s++;
+ if(bash_history && (*t == ' ' || (*t >= '0' && *t <= '9'))) {
+ while(*t == ' ' || (*t >= '0' && *t <= '9')) t++;
}
}
- if(bash_history && (*s == ' ' || (*s >= '0' && *s <= '9'))) {
- while(*s == ' ' || (*s >= '0' && *s <= '9')) s++;
+ // Copy the string while transforming the ctrl characters into
+ // printable characters
+
+ s = buffer;
+
+ while(*t) {
+ u = unctrl(*t++);
+ while(*u) { *s++ = *u++; }
}
}
+ *s = '\0';
+
+ // Check for duplicates with the hash table and insert the line
+ // in the list if necessary
int dup;
if(hash_table) {
int dup;
if(hash_table) {
- dup = test_and_add(
s
, *nb_lines, lines, hash_table, hash_table_size);
+ dup = test_and_add(
buffer
, *nb_lines, lines, hash_table, hash_table_size);
} else {
dup = -1;
}
if(dup < 0) {
} else {
dup = -1;
}
if(dup < 0) {
- lines[*nb_lines] = new char[strlen(
s
) + 1];
- strcpy(lines[*nb_lines],
s
);
+ lines[*nb_lines] = new char[strlen(
buffer
) + 1];
+ strcpy(lines[*nb_lines],
buffer
);
} else {
// The string was already in there, so we do not allocate a
// new string but use the pointer to the first occurence of it
} else {
// The string was already in there, so we do not allocate a
// new string but use the pointer to the first occurence of it