char* hostname_cleanup(char *s) {
char *p, *d;
+ bool dot;
+
+ for (p = s, d = s, dot = true; *p; p++) {
+ if (*p == '.') {
+ if (dot || p[1] == 0)
+ continue;
+
+ dot = true;
+ } else
+ dot = false;
- for (p = s, d = s; *p; p++)
- if ((*p >= 'a' && *p <= 'z') ||
- (*p >= 'A' && *p <= 'Z') ||
- (*p >= '0' && *p <= '9') ||
- *p == '-' ||
- *p == '_' ||
- *p == '.')
+ if (hostname_valid_char(*p))
*(d++) = *p;
+ }
*d = 0;
-
strshorten(s, HOST_NAME_MAX);
+
return s;
}
return 0;
}
-void fclosep(FILE **f) {
- if (*f)
- fclose(*f);
-}
-
-void pclosep(FILE **f) {
- if (*f)
- pclose(*f);
-}
-
-void closep(int *fd) {
- if (*fd >= 0)
- close_nointr_nofail(*fd);
-}
-
-void closedirp(DIR **d) {
- if (*d)
- closedir(*d);
-}
-
bool filename_is_safe(const char *p) {
if (isempty(p))