]> granicus.if.org Git - mutt/commitdiff
Add mutt_getcwd().
authorKevin McCarthy <kevin@8t8.us>
Mon, 11 Mar 2019 09:38:58 +0000 (17:38 +0800)
committerKevin McCarthy <kevin@8t8.us>
Wed, 13 Mar 2019 06:28:31 +0000 (14:28 +0800)
muttlib.c
protos.h

index 72ee611ff7c731813315459e2a848867e36d1480..1e64e00048e8c5161d11c12386acd73ba48105c5 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -1173,6 +1173,23 @@ void mutt_safe_path (char *s, size_t l, ADDRESS *a)
       *p = '_';
 }
 
+void mutt_getcwd (BUFFER *cwd)
+{
+  char *retval;
+
+  mutt_buffer_increase_size (cwd, _POSIX_PATH_MAX);
+  retval = getcwd (cwd->data, cwd->dsize);
+  while (!retval && errno == ERANGE)
+  {
+    mutt_buffer_increase_size (cwd, cwd->dsize + STRING);
+    retval = getcwd (cwd->data, cwd->dsize);
+  }
+  if (retval)
+    mutt_buffer_fix_dptr (cwd);
+  else
+    mutt_buffer_clear (cwd);
+}
+
 /* Note this function uses a fixed size buffer of LONG_STRING and so
  * should only be used for visual modifications, such as disp_subj. */
 char *mutt_apply_replace (char *dbuf, size_t dlen, char *sbuf, REPLACE_LIST *rlist)
index 5601012f5ed3e9e5c0876554b8addecddf3b09ea..08965f3ccefb6a627516f14a9e2c98dcc4ac510f 100644 (file)
--- a/protos.h
+++ b/protos.h
@@ -223,6 +223,7 @@ void mutt_free_header (HEADER **);
 void mutt_free_parameter (PARAMETER **);
 void mutt_free_regexp (REGEXP **);
 void mutt_generate_header (char *, size_t, HEADER *, int);
+void mutt_getcwd (BUFFER *);
 void mutt_help (int);
 const char *mutt_idxfmt_hook (const char *, CONTEXT *, HEADER *);
 void mutt_draw_tree (CONTEXT *);