Permalink
Browse files

Fix for issue where history file would be read immediately on launch

  • Loading branch information...
1 parent b1e86d6 commit 19eddddcffe9d49fc33d89b0e624ab9eae4e9ee4 @ridiculousfish ridiculousfish committed Dec 5, 2012
Showing with 31 additions and 7 deletions.
  1. +26 −5 history.cpp
  2. +3 −0 history.h
  3. +1 −1 signal.cpp
  4. +1 −1 signal.h
View
31 history.cpp
@@ -1468,14 +1468,35 @@ void history_t::clear(void)
bool history_t::is_empty(void)
{
- bool result = false;
scoped_lock locker(lock);
- if (new_items.empty())
+
+ /* If we have new items, we're not empty */
+ if (! new_items.empty())
+ return false;
+
+ bool empty = false;
+ if (loaded_old)
{
- load_old_if_needed();
- result = old_item_offsets.empty();
+ /* If we've loaded old items, see if we have any offsets */
+ empty = old_item_offsets.empty();
}
- return result;
+ else
+ {
+ /* If we have not loaded old items, don't actually load them (which may be expensive); just stat the file and see if it exists and is nonempty */
+ const wcstring where = history_filename(name, L"");
+ struct stat buf = {};
+ if (wstat(where, &buf) != 0)
+ {
+ /* Access failed, assume missing */
+ empty = true;
+ }
+ else
+ {
+ /* We're empty if the file is empty */
+ empty = (buf.st_size == 0);
+ }
+ }
+ return empty;
}
/* Indicate whether we ought to import the bash history file into fish */
View
3 history.h
@@ -159,6 +159,9 @@ class history_t
/** Loads old if necessary */
bool load_old_if_needed(void);
+
+ /** Memory maps the history file if necessary */
+ bool mmap_if_needed(void);
/** Deletes duplicates in new_items. */
void compact_new_items();
View
2 signal.cpp
@@ -694,7 +694,7 @@ void signal_unblock()
// debug( 0, L"signal block level decreased to %d", block_count );
}
-int signal_is_blocked()
+bool signal_is_blocked()
{
return !!block_count;
}
View
2 signal.h
@@ -55,7 +55,7 @@ void signal_unblock();
/**
Returns true if signals are being blocked
*/
-int signal_is_blocked();
+bool signal_is_blocked();
/**
Returns signals with non-default handlers

0 comments on commit 19edddd

Please sign in to comment.