mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 18:04:07 +00:00
Upload
Digital Research
This commit is contained in:
126
ASSEMBLY & COMPILE TOOLS/PLM-2-C 2/avl-subs/t_trtest.c
Normal file
126
ASSEMBLY & COMPILE TOOLS/PLM-2-C 2/avl-subs/t_trtest.c
Normal file
@@ -0,0 +1,126 @@
|
||||
/* t_trtest - test the tree functions
|
||||
* vix 24jul87 [documented, added savestr for net distribution]
|
||||
*/
|
||||
|
||||
#define MAIN
|
||||
|
||||
#include <stdio.h>
|
||||
#include "vixie.h"
|
||||
#include "tree.h"
|
||||
|
||||
main()
|
||||
{
|
||||
tree *t;
|
||||
char line[100];
|
||||
|
||||
tree_init(&t);
|
||||
while (printf("line (or .): "), gets(line), line[0] != '.')
|
||||
{
|
||||
if (strncmp(line, "~r ", 3)) {
|
||||
trtest(&t, line, 1);
|
||||
}
|
||||
else {
|
||||
FILE *f;
|
||||
|
||||
if (!(f = fopen(&line[3], "r")))
|
||||
perror(&line[3]);
|
||||
else {
|
||||
while (fgets(line, 100, f)) {
|
||||
line[strlen(line)-1] = '\0';
|
||||
printf("(%s)\n", line);
|
||||
trtest(&t, line, 0);
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
trtest(tt, line, inter)
|
||||
tree **tt;
|
||||
char *line;
|
||||
{
|
||||
char opts[100], *tree_srch(), *pc, *n;
|
||||
int uar_print(), duar(), compar(), opt, status;
|
||||
|
||||
pc = tree_srch(tt, compar, line);
|
||||
printf("tree_srch=%08lx\n", pc);
|
||||
if (pc)
|
||||
{
|
||||
printf(" <%s>\n", pc);
|
||||
|
||||
if (inter) {
|
||||
printf("delete? "); gets(opts); opt = (opts[0]=='y');
|
||||
}
|
||||
else
|
||||
opt = 1;
|
||||
|
||||
if (opt) {
|
||||
status = tree_delete(tt, compar, line, duar);
|
||||
printf("delete=%d\n", status);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (inter) {
|
||||
printf("add? "); gets(opts); opt = (opts[0]=='y');
|
||||
}
|
||||
else
|
||||
opt = 1;
|
||||
|
||||
if (opt) {
|
||||
char *savestr();
|
||||
|
||||
n = savestr(line);
|
||||
tree_add(tt, compar, n, duar);
|
||||
}
|
||||
}
|
||||
tree_trav1(*tt, 0);
|
||||
}
|
||||
|
||||
duar(pc)
|
||||
char *pc;
|
||||
{
|
||||
printf("duar called, pc=%08X: <%s>\n", pc, pc?pc:"");
|
||||
free(pc);
|
||||
}
|
||||
|
||||
tree_trav1(t, l)
|
||||
tree *t;
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!t) return;
|
||||
tree_trav1(t->tree_l, l+1);
|
||||
for (i=0; i<l; i++) printf(" ");
|
||||
printf("%08lx (%s)\n", t->tree_p, t->tree_p);
|
||||
tree_trav1(t->tree_r, l+1);
|
||||
}
|
||||
|
||||
uar_print(pc)
|
||||
char *pc;
|
||||
{
|
||||
printf("uar_print(%08lx)", pc);
|
||||
if (pc)
|
||||
printf(" '%s'", pc);
|
||||
putchar('\n');
|
||||
return 1;
|
||||
}
|
||||
|
||||
compar(l, r)
|
||||
char *l, *r;
|
||||
{
|
||||
printf("compar(%s,%s)=%d\n", l, r, strcmp(l, r));
|
||||
return strcmp(l, r);
|
||||
}
|
||||
|
||||
char *
|
||||
savestr(str)
|
||||
char *str;
|
||||
{
|
||||
char *save;
|
||||
|
||||
save = malloc(strlen(str) + 1);
|
||||
strcpy(save, str);
|
||||
return save;
|
||||
}
|
||||
Reference in New Issue
Block a user