void renamedir(char *d) { int n; Dir *dir; char *sub; int fd, i; Name *na; fd = open(d, OREAD); if (fd == -1) return; while((n = dirread(fd, &dir)) > 0){ for(i = 0; i < n; i++){ if(dir[i].mode & DMDIR){ sub = malloc(strlen(d) + 1 + strlen(dir[i].name) + 1); sprint(sub, "%s/%s", d, dir[i].name); renamedir(sub); free(sub); } if(strlen(dir[i].name) != ENCLEN) continue; for (na = names; na != nil; na = na->next){ if (strcmp(na->shortname, dir[i].name) == 0){ rename(d, dir[i].name, na->longname); break; } } } free(dir); } close(fd); }
void main(int argc, char **argv) { char lnfile[256], *d; d = "."; if(argc > 1) d = argv[1]; snprint(lnfile, sizeof(lnfile), "%s/.longnames", d); readnames(lnfile); renamedir(d); }
void ffsb_metaops(ffsb_thread_t *ft, ffsb_fs_t *fs, unsigned opnum) { struct benchfiles *bf = (struct benchfiles *)fs_get_opdata(fs, opnum); randdata_t *rd = ft_get_randdata(ft); createdir(bf, rd); createdir(bf, rd); removedir(bf, rd); renamedir(bf, rd); ft_incr_op(ft, opnum, 1, 0); }