summaryrefslogtreecommitdiff
path: root/src/journal/journal-internal.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-07-13 00:29:26 +0200
committerLennart Poettering <lennart@poettering.net>2012-07-13 00:32:32 +0200
commitcbdca8525b4f36297cb9e5cb090a9648763ed1bf (patch)
tree1d4665994000b53b132e93d6e0c628d39ff9b706 /src/journal/journal-internal.h
parent362a3f8122e070589a4d61f7752b990090c75432 (diff)
journal: beef up journal matches considerably
we now can take multiple matches, and they will apply as AND if they apply to different fields and OR if they apply to the same fields. Also, terms of this kind can be combined with an overreaching OR.
Diffstat (limited to 'src/journal/journal-internal.h')
-rw-r--r--src/journal/journal-internal.h38
1 files changed, 29 insertions, 9 deletions
diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h
index 929dfcdcb..482ef61b9 100644
--- a/src/journal/journal-internal.h
+++ b/src/journal/journal-internal.h
@@ -28,28 +28,46 @@
#include <systemd/sd-id128.h>
+#include "journal-def.h"
#include "list.h"
+#include "hashmap.h"
+#include "journal-file.h"
+
+typedef enum MatchType MatchType;
+typedef enum LocationType LocationType;
typedef struct Match Match;
typedef struct Location Location;
typedef struct Directory Directory;
-typedef enum location_type {
- LOCATION_HEAD,
- LOCATION_TAIL,
- LOCATION_DISCRETE
-} location_type_t;
+typedef enum MatchType {
+ MATCH_DISCRETE,
+ MATCH_OR_TERM,
+ MATCH_AND_TERM
+} MatchType;
struct Match {
+ MatchType type;
+ Match *parent;
+ LIST_FIELDS(Match, matches);
+
+ /* For concrete matches */
char *data;
size_t size;
le64_t le_hash;
- LIST_FIELDS(Match, matches);
+ /* For terms */
+ LIST_HEAD(Match, matches);
};
+typedef enum LocationType {
+ LOCATION_HEAD,
+ LOCATION_TAIL,
+ LOCATION_DISCRETE
+} LocationType;
+
struct Location {
- location_type_t type;
+ LocationType type;
uint64_t seqnum;
sd_id128_t seqnum_id;
@@ -78,6 +96,7 @@ struct sd_journal {
Hashmap *files;
Location current_location;
+
JournalFile *current_file;
uint64_t current_field;
@@ -86,10 +105,11 @@ struct sd_journal {
int inotify_fd;
- LIST_HEAD(Match, matches);
- unsigned n_matches;
+ Match *level0, *level1;
unsigned current_invalidate_counter, last_invalidate_counter;
};
+char *journal_make_match_string(sd_journal *j);
+
#endif