summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gitstatus/Makefile5
-rw-r--r--gitstatus/src/arena.h4
-rw-r--r--gitstatus/src/dir.cc7
3 files changed, 11 insertions, 5 deletions
diff --git a/gitstatus/Makefile b/gitstatus/Makefile
index d665af1f..b217d24b 100644
--- a/gitstatus/Makefile
+++ b/gitstatus/Makefile
@@ -2,6 +2,7 @@ APPNAME ?= gitstatusd
OBJDIR ?= obj
CXX ?= g++
+ZSH ?= $(shell command -v zsh 2> /dev/null)
VERSION ?= $(shell . ./build.info && printf "%s" "$$gitstatus_version")
@@ -33,4 +34,8 @@ $(OBJDIR)/%.o: src/%.cc Makefile build.info | $(OBJDIR)
clean:
rm -rf -- $(OBJDIR)
+pkg:
+ GITSTATUS_DAEMON= GITSTATUS_CACHE_DIR=$(PWD)/usrbin ./install -f
+ $(or $(ZSH),:) -fc 'for f in *.zsh install; do zcompile -R -- $$f.zwc $$f || exit; done'
+
-include $(OBJS:.o=.dep)
diff --git a/gitstatus/src/arena.h b/gitstatus/src/arena.h
index 0bad0bfa..569833ca 100644
--- a/gitstatus/src/arena.h
+++ b/gitstatus/src/arena.h
@@ -37,7 +37,7 @@ namespace gitstatus {
//
// // Donates a block to the arena. When the time comes, it'll be freed with
// // free(p, size, userdata).
-// void Donate(void* p, size_t size, void* userdata, void(*free)(void*, void*));
+// void Donate(void* p, size_t size, void* userdata, void(*free)(void*, size_t, void*));
class Arena {
public:
struct Options {
@@ -62,7 +62,7 @@ class Arena {
//
// void* userdata;
// void (*alloc)(size_t size, size_t alignment, void* userdata);
- // void (*free)(size_t size, void* userdata);
+ // void (*free)(void* p, size_t size, void* userdata);
};
// Requires: opt.min_block_size <= opt.max_block_size.
diff --git a/gitstatus/src/dir.cc b/gitstatus/src/dir.cc
index 1817e1d3..e7ce7141 100644
--- a/gitstatus/src/dir.cc
+++ b/gitstatus/src/dir.cc
@@ -211,14 +211,15 @@ char* DirenvConvert(Arena& arena, struct dirent& ent, bool do_convert) {
bool ListDir(int dir_fd, Arena& arena, std::vector<char*>& entries, bool precompose_unicode,
bool case_sensitive) {
- VERIFY((dir_fd = dup(dir_fd)) >= 0);
+ entries.clear();
+ dir_fd = dup(dir_fd);
+ if (dir_fd < 0) return false;
DIR* dir = fdopendir(dir_fd);
if (!dir) {
CHECK(!close(dir_fd)) << Errno();
- return -1;
+ return false;
}
ON_SCOPE_EXIT(&) { CHECK(!closedir(dir)) << Errno(); };
- entries.clear();
while (struct dirent* ent = (errno = 0, readdir(dir))) {
if (Dots(ent->d_name)) continue;
entries.push_back(DirenvConvert(arena, *ent, precompose_unicode));