#include #include #include #include #include #include #include "jrb.h" main() { struct stat buf; JRB t1, t2, tmp, tmp2; struct dirent *de; DIR *d; d = opendir("."); if (d == NULL) { perror("opendir ."); exit(1); } t1 = make_jrb(); for (de = readdir(d); de != NULL; de = readdir(d)) { if (de->d_name[0] != '.') { if (stat(de->d_name, &buf) != 0) { perror(de->d_name); exit(1); } tmp = jrb_find_int(t1, buf.st_mtime); if (tmp == NULL) { tmp = jrb_insert_int(t1, buf.st_mtime, new_jval_v((void *) make_jrb())); } t2 = (JRB) tmp->val.v; jrb_insert_str(t2, strdup(de->d_name), JNULL); } } jrb_rtraverse(tmp, t1) { t2 = (JRB) tmp->val.v; jrb_traverse(tmp2, t2) { printf("%s\n", tmp2->key.s); } } }