return 1;
for (s = lname; *s && (s = strchr(s, '/')); s++) {
while (s[1] == '/')
- strcpy(s+1, s+2);
+ memmove(s + 1, s + 2, strlen(s + 2) + 1);
}
return !strcmp(lname, rname);
}
return 1;
}
- if (rel)
- strcpy (buf, "../");
- else
- buf[0] = '\0';
- strcat (buf, fn);
-
+ if (rel) {
+ snprintf(buf, sizeof(buf), "../%s", fn);
+ } else {
+ snprintf(buf, sizeof(buf), "%s", fn);
+ }
+
if (!(df = opendir (buf))) {
msg ("%s: Cannot opendir", buf);
return 1;
(*headerproc[abi])(f, phile);
- if (phile->tmpl) CopyTmplEpilog (phile->tmpl, f);
+ if (phile->tmpl) {
+ CopyTmplEpilog (phile->tmpl, f);
+ (void) fclose (phile->tmpl);
+ }
(void) free (fileprotstr);
- (void) fclose (phile->tmpl);
(void) fclose (f);
}
(*sourceproc[abi])(abi);
- if (tmpl) CopyTmplEpilog (tmpl, stdout);
+ if (tmpl) {
+ CopyTmplEpilog (tmpl, stdout);
+ fclose(tmpl);
+ }
}
static void DoLine(buf)
else
right = buf + 1;
if (buf[0] == 'H') {
- strncpy (lbuf, prefixstr, 1024);
- strncat (lbuf, right, strlen(right));
+ snprintf(lbuf, sizeof(lbuf), "%s%s", prefixstr, right);
right = lbuf;
}