- cprintf("%d\n", LISTING_FOLLOWS);
- while (fgets(buf, sizeof buf, ls)!=NULL)
- if (CtdlGetUserByNumber(&usbuf,atol(buf))==0)
+ filedir = opendir (ctdl_bio_dir);
+ if (filedir == NULL) {
+ free(d);
+ cprintf("%d Cannot open listing.\n", ERROR + FILE_NOT_FOUND);
+ return;
+ }
+ dont_resolve_uids = *cmdbuf == '1';
+ while ((readdir_r(filedir, d, &filedir_entry) == 0) &&
+ (filedir_entry != NULL))
+ {
+#ifdef _DIRENT_HAVE_D_NAMELEN
+ d_namelen = filedir_entry->d_namelen;
+#else
+ d_namelen = strlen(filedir_entry->d_name);
+#endif
+ if (dont_resolve_uids) {
+ filedir_entry->d_name[d_namelen++] = '\n';
+ filedir_entry->d_name[d_namelen] = '\0';
+ client_write(filedir_entry->d_name, d_namelen);
+ }
+ else if (CtdlGetUserByNumber(&usbuf,atol(filedir_entry->d_name))==0)