- for (j = 0;
- j < FORMAT_PATCH_NAME_MAX - suffix_len - 5 &&
- len < sizeof(filename) - suffix_len &&
- sol[j] && sol[j] != '\n';
- j++) {
- if (istitlechar(sol[j])) {
- if (space) {
- filename[len++] = '-';
- space = 0;
- }
- filename[len++] = sol[j];
- if (sol[j] == '.')
- while (sol[j + 1] == '.')
- j++;
- } else
- space = 1;
- }
- while (filename[len - 1] == '.'
- || filename[len - 1] == '-')
- len--;
- filename[len] = '\0';
+ strbuf_addf(buf, commit ? "%04d-" : "%d", nr);
+ if (commit) {
+ format_commit_message(commit, "%f", buf, DATE_NORMAL);
+ /*
+ * Replace characters at the end with the suffix if the
+ * filename is too long
+ */
+ if (buf->len + suffix_len > FORMAT_PATCH_NAME_MAX + start_len)
+ strbuf_splice(buf,
+ start_len + FORMAT_PATCH_NAME_MAX - suffix_len,
+ suffix_len, suffix, suffix_len);
+ else
+ strbuf_addstr(buf, suffix);