aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2020-01-12 23:17:06 -0800
committerBruce Hill <bruce@bruce-hill.com>2020-01-12 23:17:06 -0800
commit8b4c66e144ed68d947f9a8b36468c1fa20873dc5 (patch)
tree7ecfefe3cea411139c1239a4baa1d9903fd6139c
parent1d69bb63ceb10402a2e406445abdff28781d7551 (diff)
Updated to respect TMPDIR environment variable.
-rw-r--r--bb.c27
-rw-r--r--bb.h3
2 files changed, 14 insertions, 16 deletions
diff --git a/bb.c b/bb.c
index 941774b..4acdafa 100644
--- a/bb.c
+++ b/bb.c
@@ -12,7 +12,7 @@
static struct termios orig_termios, bb_termios;
static FILE *tty_out = NULL, *tty_in = NULL;
static struct winsize winsize = {0};
-static char *cmdfilename = NULL;
+static char cmdfilename[PATH_MAX] = {0};
static proc_t *running_procs = NULL;
static int dirty = 1;
@@ -73,10 +73,9 @@ void cleanup_and_raise(int sig)
*/
void cleanup(void)
{
- if (cmdfilename) {
+ if (cmdfilename[0]) {
unlink(cmdfilename);
- free(cmdfilename);
- cmdfilename = NULL;
+ cmdfilename[0] = '\0';
}
if (tty_out) {
fputs(T_LEAVE_BBMODE, tty_out);
@@ -659,9 +658,10 @@ void run_bbcmd(bb_t *bb, const char *cmd)
set_cursor(bb, e->index);
else try_free_entry(e);
} else if (matches_cmd(cmd, "help")) { // +help
- char filename[256] = "/tmp/bbhelp.XXXXXX";
- int fd = mkostemp(filename, O_WRONLY);
- if (fd == -1) err("Couldn't create temporary help file in /tmp/");
+ char filename[PATH_MAX];
+ sprintf(filename, "%s/bbhelp.XXXXXX", getenv("TMPDIR"));
+ int fd = mkstemp(filename);
+ if (fd == -1) err("Couldn't create temporary help file at %s", filename);
print_bindings(fd);
close(fd);
char script[512] = "less -rKX < ";
@@ -1217,13 +1217,14 @@ int main(int argc, char *argv[])
while (winsize.ws_row == 0)
usleep(10000);
- cmdfilename = memcheck(strdup(CMDFILE_FORMAT));
- int cmdfd;
- if ((cmdfd = mkostemp(cmdfilename, O_APPEND)) == -1)
- err("Couldn't create tmpfile: '%s'", CMDFILE_FORMAT);
-
// Set up environment variables
// Default values
+ setenv("TMPDIR", "/tmp", 0);
+ sprintf(cmdfilename, "%s/bb.XXXXXX", getenv("TMPDIR"));
+ int cmdfd;
+ if ((cmdfd = mkostemp(cmdfilename, O_APPEND)) == -1)
+ err("Couldn't create bb command file: '%s'", cmdfilename);
+ setenv("BBCMD", cmdfilename, 1);
char xdg_config_home[PATH_MAX], xdg_data_home[PATH_MAX];
sprintf(xdg_config_home, "%s/.config", getenv("HOME"));
setenv("XDG_CONFIG_HOME", xdg_config_home, 0);
@@ -1237,7 +1238,6 @@ int main(int argc, char *argv[])
char depthstr[16];
sprintf(depthstr, "%d", depth + 1);
setenv("BB_DEPTH", depthstr, 1);
- setenv("BBCMD", cmdfilename, 1);
setenv("BBSHELLFUNC", bbcmdfn, 1);
char full_initial_path[PATH_MAX];
getcwd(full_initial_path, PATH_MAX);
@@ -1308,7 +1308,6 @@ int main(int argc, char *argv[])
populate_files(&bb, NULL);
while (bb.selected)
set_selected(&bb, bb.selected, 0);
- if (cmdfilename) free(cmdfilename);
return 0;
}
diff --git a/bb.h b/bb.h
index 4a5d758..298bc06 100644
--- a/bb.h
+++ b/bb.h
@@ -25,7 +25,7 @@
#include "bterm.h"
// Macros:
-#define BB_VERSION "0.20.3"
+#define BB_VERSION "0.20.4"
#ifndef PATH_MAX
#define PATH_MAX 4096
@@ -161,7 +161,6 @@ typedef struct proc_s {
// Configurable options:
#define SCROLLOFF MIN(5, (winsize.ws_row-4)/2)
-#define CMDFILE_FORMAT "/tmp/bb.XXXXXX"
#define SORT_INDICATOR "↓"
#define RSORT_INDICATOR "↑"
#define SELECTED_INDICATOR " \033[31;7m \033[0m"