mirror of
git://git.psyced.org/git/psyced
synced 2024-08-15 03:25:10 +00:00
let the past begone in cvs land. welcome to igit igit!
This commit is contained in:
commit
4e601cf1c7
509 changed files with 77963 additions and 0 deletions
114
utility/cvsdont.pike
Normal file
114
utility/cvsdont.pike
Normal file
|
@ -0,0 +1,114 @@
|
|||
#!/bin/env pike
|
||||
|
||||
// well, i'm using it. makes cdifs a lot nicer.
|
||||
// saga.
|
||||
//
|
||||
// oh interesting. how does it work? does it have
|
||||
// a usage: message? -lynX
|
||||
|
||||
#define unless(x) if(!(x))
|
||||
|
||||
int main() {
|
||||
int flag, i = -1, j, haveCuts;
|
||||
Stdio.File conf = Stdio.File();
|
||||
array(string) data;
|
||||
array(int) cuts = ({});
|
||||
mapping donts = ([]);
|
||||
|
||||
unless (getenv("HOME")) {
|
||||
werror("well, set $HOME, svp.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
unless (conf->open(getenv("HOME") + "/.cvsdont", "r")) {
|
||||
werror("well, could not open " + getenv("HOME") + "/.cvsdont\n");
|
||||
return 2;
|
||||
}
|
||||
|
||||
foreach (conf->read() / "\n", string line) {
|
||||
donts[line] = 1;
|
||||
}
|
||||
|
||||
data = Stdio.stdin->read() / "\n";
|
||||
|
||||
if (data[-1] == "") {
|
||||
data = data[0..sizeof(data) - 2];
|
||||
}
|
||||
|
||||
foreach (data, string line) {
|
||||
i++;
|
||||
unless (flag) {
|
||||
if (sizeof(line) > 10 && line[0..9] == "RCS file: " && donts[line[10..sizeof(line) - 1]]) {
|
||||
flag = !flag;
|
||||
cuts += ({ i - 2 });
|
||||
}
|
||||
} else {
|
||||
if (line[0] == '=') {
|
||||
flag = !flag;
|
||||
cuts += ({ i - 1 });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i = -1;
|
||||
flag = 0;
|
||||
|
||||
haveCuts = sizeof(cuts);
|
||||
|
||||
#ifdef DEBUG
|
||||
werror("%O\n", cuts);
|
||||
#endif
|
||||
|
||||
if (haveCuts & 1) {
|
||||
cuts += ({ sizeof(data) });
|
||||
haveCuts++;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
werror("%O\n", cuts);
|
||||
#endif
|
||||
|
||||
foreach (data, string line) {
|
||||
i++;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (haveCuts > j) {
|
||||
werror("} %d %d (%d)\n", i, cuts[j], (haveCuts - 1) > j);
|
||||
} else {
|
||||
werror("}} %d %d\n", i, j);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (haveCuts > j && cuts[j] == i) {
|
||||
#ifdef DEBUG
|
||||
if ((haveCuts - 1) > j) {
|
||||
werror("1] %d %d\n", j, cuts[j]);
|
||||
werror("2] %d\n", cuts[j+1]);
|
||||
} else {
|
||||
werror("] %d %d(%d)\n", j, haveCuts, sizeof(cuts));
|
||||
}
|
||||
#endif
|
||||
|
||||
unless ((haveCuts - 1) > j && i == cuts[j + 1]) {
|
||||
#ifdef DEBUG
|
||||
werror(">> %d\n", i);
|
||||
werror(") %d %d %d %d\n", i, j, cuts[j], flag);
|
||||
#endif
|
||||
flag = !flag;
|
||||
} else {
|
||||
#ifdef DEBUG
|
||||
werror("> %d %d\n", i, ((haveCuts - 1) > j) ? cuts[j+1] : 0);
|
||||
#endif
|
||||
j++;
|
||||
}
|
||||
j++;
|
||||
}
|
||||
|
||||
unless (flag || line[0] == '?') {
|
||||
write("%s\n", line);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue