commit bd3f15604471261f0a7f8abac560a3b75c50be5b
parent 3b21659661adaae415243f89ca8273c70ec7abc7
Author: Rishabh Dave <rishabhddave@gmail.com>
Date: Wed, 25 May 2016 11:16:58 +0200
browser: move all openings and closings of a directory to the same function
Signed-off-by: Rishabh Dave <rishabhddave@gmail.com>
Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
Diffstat:
2 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/src/browser.c b/src/browser.c
@@ -44,7 +44,7 @@ static size_t selected = 0;
/* Our main file browser function. path is the tilde-expanded path we
* start browsing from. */
-char *do_browser(char *path, DIR *dir)
+char *do_browser(char *path)
{
char *retval = NULL;
int kbinput;
@@ -55,6 +55,14 @@ char *do_browser(char *path, DIR *dir)
/* The number of the selected file before the current selected file. */
functionptrtype func;
/* The function of the key the user typed in. */
+ DIR *dir = opendir(path);
+
+ /* If we can't open the given directory, forget it. */
+ if (dir == NULL) {
+ beep();
+ free(path);
+ return NULL;
+ }
/* Don't show a cursor in the file list. */
curs_set(0);
@@ -77,6 +85,8 @@ char *do_browser(char *path, DIR *dir)
/* Get the file list, and set longest and width in the process. */
browser_init(path, dir);
+ closedir(dir);
+
assert(filelist != NULL);
/* Sort the file list. */
@@ -364,7 +374,6 @@ char *do_browse_from(const char *inpath)
struct stat st;
char *path;
/* This holds the tilde-expanded version of inpath. */
- DIR *dir = NULL;
assert(inpath != NULL);
@@ -403,17 +412,7 @@ char *do_browse_from(const char *inpath)
path = mallocstrcpy(path, operating_dir);
#endif
- if (path != NULL)
- dir = opendir(path);
-
- /* If we can't open the path, get out. */
- if (dir == NULL) {
- free(path);
- beep();
- return NULL;
- }
-
- return do_browser(path, dir);
+ return do_browser(path);
}
/* Set filelist to the list of files contained in the directory path,
@@ -478,8 +477,6 @@ void browser_init(const char *path, DIR *dir)
* filelist, so record it. */
filelist_len = i;
- closedir(dir);
-
/* Calculate how many files fit on a line -- feigning room for two
* spaces beyond the right edge, and adding two spaces of padding
* between columns. */
diff --git a/src/proto.h b/src/proto.h
@@ -150,7 +150,7 @@ typedef void (*functionptrtype)(void);
/* All functions in browser.c. */
#ifndef DISABLE_BROWSER
-char *do_browser(char *path, DIR *dir);
+char *do_browser(char *path);
char *do_browse_from(const char *inpath);
void browser_init(const char *path, DIR *dir);
functionptrtype parse_browser_input(int *kbinput);