]> granicus.if.org Git - neomutt/commitdiff
Add mutt_getcwd()
authorKevin McCarthy <kevin@8t8.us>
Mon, 11 Mar 2019 09:38:58 +0000 (17:38 +0800)
committerRichard Russon <rich@flatcap.org>
Tue, 9 Apr 2019 11:54:28 +0000 (12:54 +0100)
Co-authored-by: Richard Russon <rich@flatcap.org>
muttlib.c
muttlib.h

index 3ff5ea20cc250f979a8f78ac0f245fc30dc07214..fd7065d671d7a06827aa42b8f6957f064627d7d9 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -1699,3 +1699,22 @@ int mutt_inbox_cmp(const char *a, const char *b)
 
   return 0;
 }
+
+/**
+ * mutt_getcwd - Get the current working directory
+ * @param cwd Buffer for the result
+ */
+void mutt_getcwd(struct Buffer *cwd)
+{
+  mutt_buffer_increase_size(cwd, PATH_MAX);
+  char *retval = getcwd(cwd->data, cwd->dsize);
+  while (!retval && (errno == ERANGE))
+  {
+    mutt_buffer_increase_size(cwd, cwd->dsize + 256);
+    retval = getcwd(cwd->data, cwd->dsize);
+  }
+  if (retval)
+    mutt_buffer_fix_dptr(cwd);
+  else
+    mutt_buffer_reset(cwd);
+}
index 8b7276097d8895d7dd5711dde190ea02b25a7b80..2daf552b5c505c026718fa33b4159a0f1dc586ef 100644 (file)
--- a/muttlib.h
+++ b/muttlib.h
@@ -53,6 +53,7 @@ void        mutt_expando_format(char *buf, size_t buflen, size_t col, int cols,
 char *      mutt_expand_path(char *s, size_t slen);
 char *      mutt_expand_path_regex(char *buf, size_t buflen, bool regex);
 char *      mutt_gecos_name(char *dest, size_t destlen, struct passwd *pw);
+void        mutt_getcwd(struct Buffer *cwd);
 void        mutt_get_parent_path(char *path, char *buf, size_t buflen);
 int         mutt_inbox_cmp(const char *a, const char *b);
 bool        mutt_is_text_part(struct Body *b);