diff options
Diffstat (limited to 'src/client/rspamc.c')
-rw-r--r-- | src/client/rspamc.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/client/rspamc.c b/src/client/rspamc.c index 2a3191f27..5432aeae7 100644 --- a/src/client/rspamc.c +++ b/src/client/rspamc.c @@ -853,6 +853,9 @@ rspamc_process_dir (struct event_base *ev_base, struct rspamc_command *cmd, DIR *d; gint cur_req = 0; struct dirent *ent; +#if defined(__sun) + struct stat sb; +#endif FILE *in; char filebuf[PATH_MAX]; @@ -860,9 +863,14 @@ rspamc_process_dir (struct event_base *ev_base, struct rspamc_command *cmd, if (d != NULL) { while ((ent = readdir (d))) { + rspamd_snprintf (filebuf, sizeof (filebuf), "%s%c%s", + name, G_DIR_SEPARATOR, ent->d_name); +#if defined(__sun) + if (stat (filebuf, &sb)) continue; + if (S_ISREG (sb.st_mode)) { +#else if (ent->d_type == DT_REG || ent->d_type == DT_UNKNOWN) { - rspamd_snprintf (filebuf, sizeof (filebuf), "%s%c%s", - name, G_DIR_SEPARATOR, ent->d_name); +#endif if (access (filebuf, R_OK) != -1) { in = fopen (filebuf, "r"); if (in == NULL) { |