From 8d9fef80156c4b4cf16232ce588915e191f928c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Audebert?= Date: Wed, 4 Nov 2015 14:59:06 +0100 Subject: [PATCH] journal: implement GetUsage() (sd_journal_get_usage()) --- sdjournal/journal.go | 14 ++++++++++++++ sdjournal/journal_test.go | 20 ++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/sdjournal/journal.go b/sdjournal/journal.go index f4e6346f..71337b6c 100644 --- a/sdjournal/journal.go +++ b/sdjournal/journal.go @@ -237,3 +237,17 @@ func (j *Journal) Wait(timeout time.Duration) int { return int(r) } + +// GetUsage returns the journal disk space usage, in bytes. +func (j *Journal) GetUsage() (uint64, error) { + var out C.uint64_t + j.mu.Lock() + err := C.sd_journal_get_usage(j.cjournal, &out) + j.mu.Unlock() + + if err != 0 { + return 0, fmt.Errorf("failed to get journal disk space usage: %d", err) + } + + return uint64(out), nil +} diff --git a/sdjournal/journal_test.go b/sdjournal/journal_test.go index ad6cd0ed..2861b31f 100644 --- a/sdjournal/journal_test.go +++ b/sdjournal/journal_test.go @@ -68,3 +68,23 @@ func TestJournalFollow(t *testing.T) { t.Fatalf("Error during follow: %s", err) } } + +func TestJournalGetUsage(t *testing.T) { + j, err := NewJournal() + + if err != nil { + t.Fatalf("Error opening journal: %s", err) + } + + if j == nil { + t.Fatal("Got a nil journal") + } + + defer j.Close() + + _, err = j.GetUsage() + + if err != nil { + t.Fatalf("Error getting journal size: %s", err) + } +}