diff options
author | Rob Austein <sra@hactrn.net> | 2006-10-10 19:41:45 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2006-10-10 19:41:45 +0000 |
commit | 092983952ecfee3d6f1cf5db90c6626fd0d743c8 (patch) | |
tree | 9611267ebcb821dded27f21329041eca38120ae3 | |
parent | 94179bf0b7c07d07104d618a1fc8acb8ca6e8848 (diff) |
Apparently Linux doesn't support d_namlen.
svn path=/rcynic/rcynic.c; revision=388
-rw-r--r-- | rcynic/rcynic.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/rcynic/rcynic.c b/rcynic/rcynic.c index 97526482..56dea41c 100644 --- a/rcynic/rcynic.c +++ b/rcynic/rcynic.c @@ -423,6 +423,7 @@ static int next_uri(const rcynic_ctx_t *rc, char path[FILENAME_MAX]; struct dirent *d; int remaining; + size_t len; assert(base_uri && prefix && uri && dir); @@ -434,10 +435,12 @@ static int next_uri(const rcynic_ctx_t *rc, remaining = urilen - strlen(base_uri); while ((d = readdir(*dir)) != NULL) { - if (d->d_type != DT_REG || d->d_name[0] == '.' || - d->d_namlen < 4 || strcmp(d->d_name + d->d_namlen - 4, ".cer")) + if (d->d_type != DT_REG || d->d_name[0] == '.') + continue; + len = strlen(d->d_name); + if (len < 4 || strcmp(d->d_name + len - 4, ".cer")) continue; - if (strlen(d->d_name) >= remaining) { + if (len >= remaining) { logmsg(rc, log_data_err, "URI %s%s too long, skipping", base_uri, d->d_name); continue; } @@ -507,7 +510,7 @@ static int rm_rf(const char *name) while ((d = readdir(dir)) != NULL) { if (d->d_name[0] == '.' && (d->d_name[1] == '\0' || (d->d_name[1] == '.' && d->d_name[2] == '\0'))) continue; - if (len + d->d_namlen + need_slash >= sizeof(path)) + if (len + strlen(d->d_name) + need_slash >= sizeof(path)) goto done; strcpy(path, name); if (need_slash) |