- 22 Mar, 2011 4 commits
-
-
Rusty Russell authored
I thought using sizeof() comparison to compare the types was clever, but it doesn't work on void pointers, as sizeof(void) is illegal.
-
Rusty Russell authored
In this case, "work" means "fail to compile cleanly".
-
Rusty Russell authored
-
Rusty Russell authored
-
- 21 Mar, 2011 12 commits
-
-
Rusty Russell authored
-
Rusty Russell authored
Don't implicitly cast away const in the tests.
-
Rusty Russell authored
In particular, avoid doing arithmetic on NULL; decay the function to a pointer using a trinary conditional instead.
-
Rusty Russell authored
It's common to want to create a struct tdb_data which contains a const pointer, so add a helper to do so, and use it to clean up other -Wcast-qual warnings.
-
Rusty Russell authored
-
Rusty Russell authored
Samba uses -Wcast-qual to warn about casting away const. The kind of coders who care about const correctness are likely to turn that option on, so we should make sure it's compatible with cast_const().
-
Rusty Russell authored
-
Rusty Russell authored
-
Rusty Russell authored
The foreach garbage collection assumed that iterators were all on the stack, but they could be on the heap or a global (or static) variable. We can prevent the heap case by tricky use of macros to complain on any iterator which isn't a single token, but we can't prevent globals/statics. So, if an iterator already seems to be "off" the stack, mark it as such and simply never free it.
-
Rusty Russell authored
-
Rusty Russell authored
David Gibson noted that foreach requires more than one argument. There's no particularly good reason for this, other than lack of imagination on my part.
-
Rusty Russell authored
-
- 17 Mar, 2011 24 commits
-
-
Rusty Russell authored
-
Rusty Russell authored
This makes transition from tdb1 much simpler.
-
Rusty Russell authored
As per TDB1, except that the sequence number is 63 bit.
-
Rusty Russell authored
As per TDB1, with one enhancement: a non-NULL name argument passed to tdb_open() with the TDB_INTERNAL flag is preserved so you can identify internal TDBs too.
-
Rusty Russell authored
We don't need this now, since we use explicit error numbers.
-
Rusty Russell authored
Everyone writes their own, so provide a standard one.
-
Rusty Russell authored
These are the same as the TDB1 functions; but note that there is no reliable way to tell if tdb_exists() fails due to an error. This simplifies the API, but means you have to use tdb_fetch() if you really care.
-
Rusty Russell authored
-
Rusty Russell authored
Finally, we enable sharing of the struct tdb_file. We add a reference count so we can free the struct tdb_file when the last tdb is closed.
-
Rusty Russell authored
The last step before sharing struct tdb_file is to add a field to identify which tdb context is holding each lock, so we can fail when they conflict.
-
Rusty Russell authored
Internal reshuffle which makes things shorter and neater.
-
Rusty Russell authored
It makes sense to share the mmap between multiple openers.
-
Rusty Russell authored
This moves the fd and locking information into a new 'struct tdb_file', opening the way for it to be shared by multiple tdb_open calls on the same file.
-
Rusty Russell authored
-
Rusty Russell authored
Simply tidying up.
-
Rusty Russell authored
-
Rusty Russell authored
As detailed in doc/design.lyx section 2.16 "Record Headers Are Not Expandible", we make sure that if there is padding at the end of a record, the first byte of padding is a zero.
-
Rusty Russell authored
-
Rusty Russell authored
As detailed in doc/design.lyx section 2.15 "Extending The Header Is Difficult"; we add features_used and features_offered fields to the header, so we can identify if we add new features, and then if someone opens it who doesn't understand that feature.
-
Rusty Russell authored
-
Rusty Russell authored
This make sure that the data being handed to the function in tdb_traverse is the correct type.
-
Rusty Russell authored
This is vitally important for forwards compatibility.
-
Rusty Russell authored
Two missed cases in b2100462 (tdb2: change API to return the error value.)
-
Rusty Russell authored
-