X-Git-Url: http://git.tuebingen.mpg.de/?p=osl.git;a=blobdiff_plain;f=osl_core.h;h=6046d8c768cc35906387be94e8304a99aede35ca;hp=858743aae308c236d242586abdcf6ac50e99ee0e;hb=abb6ef754912935a60705b6b1e9687bf79c509b7;hpb=f065a93d3307f2065fcf8c95509166d15af4194c diff --git a/osl_core.h b/osl_core.h index 858743a..6046d8c 100644 --- a/osl_core.h +++ b/osl_core.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2008 Andre Noll + * Copyright (C) 2007-2009 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -9,7 +9,7 @@ #include "rbtree.h" #include "hash.h" -static __must_check __printf_1_2 __malloc char *make_message(const char *fmt, ...); +__must_check __printf_1_2 __malloc char *make_message(const char *fmt, ...); /** Internal representation of a column of an osl table. */ struct osl_column { @@ -83,7 +83,6 @@ int init_table_structure(const struct osl_table_description *desc, int row_is_invalid(struct osl_table *t, uint32_t row_num); int get_mapped_object(const struct osl_table *t, unsigned col_num, uint32_t row_num, struct osl_object *obj); -int para_truncate(const char *filename, off_t size); int unmap_table(struct osl_table *t, enum osl_close_flags flags); int init_rbtrees(struct osl_table *t); @@ -134,7 +133,7 @@ _static_inline_ struct osl_column_description *get_column_description( */ enum index_header_offsets { /** Bytes 0-8: PARASLASH. */ - IDX_PARA_MAGIC = 0, + IDX_OSL_MAGIC = 0, /** Byte 9: Dirty flag (nonzero if table is mapped). */ IDX_DIRTY_FLAG = 9, /** Byte 10: osl table version number. */ @@ -166,7 +165,7 @@ enum index_column_desc_offsets { }; /** Magic string contained in the header of the index file of each osl table. */ -#define PARA_MAGIC "PARASLASH" +#define OSL_MAGIC "PARASLASH" /** * The minimal number of bytes for a column in the index header. @@ -191,9 +190,27 @@ _static_inline_ size_t index_column_description_size(const char *name) return MIN_IDX_COLUMN_DESCRIPTION_SIZE + strlen(name) - 1; } +/* + * The version used by this instance of the library. Written to the index of + * newly created tables. + */ #define CURRENT_TABLE_VERSION 1 + +/* + * The lowest library version that is able to use tables of version + * CURRENT_TABLE_VERSION. Also written to the index of new tables. If + * compat_version(table) > current_version(lib) the table can not be opened. + */ +#define COMPAT_TABLE_VERSION 0 + +/* + * The lowest table version this library understands. On open, if + * current_version(table) < min_version(lib) the osl_open_table() call + * fails. + */ #define MIN_TABLE_VERSION 1 -#define MAX_TABLE_VERSION 1 + + /** An index header must be at least that many bytes long. */ #define MIN_INDEX_HEADER_SIZE(num_cols) (MIN_IDX_COLUMN_DESCRIPTION_SIZE \ * num_cols + IDX_COLUMN_DESCRIPTIONS) @@ -304,8 +321,8 @@ _static_inline_ int get_cell_index(const struct osl_table *t, uint32_t row_num, _static_inline_ void update_cell_index(char *row_index, struct osl_column *col, uint32_t map_size, uint32_t object_size) { - write_u32(row_index + col->index_offset, map_size - object_size - 1); - write_u32(row_index + col->index_offset + 4, object_size + 1); + write_u32(row_index + col->index_offset, map_size - object_size); + write_u32(row_index + col->index_offset + 4, object_size); } /**