- cprintf("%d %s|%s/%s\n",
- LISTING_FOLLOWS,
- config.c_fqdn,
- ctdl_file_dir,
- CC->room.QRdirname);
-
- snprintf(buf, sizeof buf,
- "ls %s/%s >%s 2>/dev/null",
- ctdl_file_dir,
- CC->room.QRdirname,
- tempfilename);
- system(buf);
-
- snprintf(buf, sizeof buf,
- "%s/%s/filedir",
- ctdl_file_dir,
- CC->room.QRdirname);
- fd = fopen(buf, "r");
- if (fd == NULL)
- fd = fopen("/dev/null", "r");
-
- ls = fopen(tempfilename, "r");
- while (fgets(flnm, sizeof flnm, ls) != NULL) {
- flnm[strlen(flnm) - 1] = 0;
- if (strcasecmp(flnm, "filedir")) {
- snprintf(buf, sizeof buf,
- "%s/%s/%s",
- ctdl_file_dir,
- CC->room.QRdirname,
- flnm);
- stat(buf, &statbuf);
- safestrncpy(comment, "", sizeof comment);
- fseek(fd, 0L, 0);
- while ((fgets(buf, sizeof buf, fd) != NULL)
- && (IsEmptyStr(comment))) {
- buf[strlen(buf) - 1] = 0;
- if ((!strncasecmp(buf, flnm, strlen(flnm)))
- && (buf[strlen(flnm)] == ' '))
- safestrncpy(comment,
- &buf[strlen(flnm) + 1],
- sizeof comment);
+ cprintf("%d %s|%s/%s\n", LISTING_FOLLOWS, config.c_fqdn, ctdl_file_dir, CC->room.QRdirname);
+
+ snprintf(buf, sizeof buf, "%s/%s", ctdl_file_dir, CC->room.QRdirname);
+ filedir = opendir (buf);
+ if (filedir)
+ {
+ snprintf(buf, sizeof buf, "%s/%s/filedir", ctdl_file_dir, CC->room.QRdirname);
+ fd = fopen(buf, "r");
+ if (fd == NULL)
+ fd = fopen("/dev/null", "r");
+ while ((filedir_entry = readdir(filedir)))
+ {
+ if (strcasecmp(filedir_entry->d_name, "filedir") && filedir_entry->d_name[0] != '.')
+ {
+#ifdef _DIRENT_HAVE_D_NAMELEN
+ d_namelen = filedir_entry->d_namelen;
+#else
+ d_namelen = strlen(filedir_entry->d_name);
+#endif
+ snprintf(buf, sizeof buf, "%s/%s/%s", ctdl_file_dir, CC->room.QRdirname, filedir_entry->d_name);
+ stat(buf, &statbuf); /* stat the file */
+ if (!(statbuf.st_mode & S_IFREG))
+ {
+ snprintf(buf2, sizeof buf2, "Command RDIR found something that is not a useable file. It should be cleaned up.\n RDIR found this non regular file:\n%s\n", buf);
+ aide_message(buf2, "RDIR found bad file");
+ continue; /* not a useable file type so don't show it */
+ }
+ safestrncpy(comment, "", sizeof comment);
+ fseek(fd, 0L, 0); /* rewind descriptions file */
+ /* Get the description from the descriptions file */
+ while ((fgets(buf, sizeof buf, fd) != NULL) && (IsEmptyStr(comment)))
+ {
+ buf[strlen(buf) - 1] = 0;
+ if ((!strncasecmp(buf, filedir_entry->d_name, d_namelen)) && (buf[d_namelen] == ' '))
+ safestrncpy(comment, &buf[d_namelen + 1], sizeof comment);
+ }
+ cprintf("%s|%ld|%s\n", filedir_entry->d_name, (long)statbuf.st_size, comment);