/* Strip trailing directory separators */
void strbuf_trim_trailing_dir_sep(struct strbuf *sb);
+/* Strip trailing LF or CR/LF */
+void strbuf_trim_trailing_newline(struct strbuf *sb);
+
/**
* Replace the contents of the strbuf with a reencoded form. Returns -1
* on error, 0 on success.
expand_fn_t fn,
void *context);
+/**
+ * Used as callback for `strbuf_expand` to only expand literals
+ * (i.e. %n and %xNN). The context argument is ignored.
+ */
+size_t strbuf_expand_literal_cb(struct strbuf *sb,
+ const char *placeholder,
+ void *context);
+
/**
* Used as callback for `strbuf_expand()`, expects an array of
* struct strbuf_expand_dict_entry as context, i.e. pairs of
* run in. If the buffer is NULL the editor is launched as usual but the
* file's contents are not read into the buffer upon completion.
*/
-int launch_editor(const char *path,
- struct strbuf *buffer,
+int launch_editor(const char *path, struct strbuf *buffer,
const char *const *env);
+int launch_sequence_editor(const char *path, struct strbuf *buffer,
+ const char *const *env);
+
void strbuf_add_lines(struct strbuf *sb,
const char *prefix,
const char *buf,