2 years agoosl-0.2.0. master
Andre Noll [Fri, 25 Sep 2020 13:48:31 +0000 (15:48 +0200)]

It has been several years since the last release, but finally osl-0.2.0
has arrived. The NEWS file contains a summary of the changes.

2 years agoMerge branch 'refs/heads/t/sha3' into master
Andre Noll [Thu, 15 Oct 2020 14:20:54 +0000 (16:20 +0200)]
Merge branch 'refs/heads/t/sha3' into master

This code was written long ago and was sitting in a development branch
for some years. As such it was part of the pu branch and so has seen
some testing.

There's an easy conflict in fsck.c where one side added a function
parameter and the other renamed some variables.

* refs/heads/t/sha3:
  Version 3 tables.
  Add sha3 implementation, introduce version-2 tables.
  Prepare hash_function() for multiple hash algorithms.
  Store table version in struct osl_table.
  Initialize column name hash *after* table version is known.
  osl_open_table(): Remove pointless directory check.
  Remove sha1.h.

2 years agobuild: Fix manual setting of CC.
Andre Noll [Thu, 17 Sep 2020 16:21:30 +0000 (18:21 +0200)]
build: Fix manual setting of CC.

We want to set CC not only if its value comes from the default origin
but also if it is undefined or empty. It's easiest to set it to "cc"
whenever its current value is empty.

2 years agobuild: Don't set CC twice.
Andre Noll [Thu, 17 Sep 2020 16:10:59 +0000 (18:10 +0200)]
build: Don't set CC twice.

Identical code is at the top of the Makefile.

2 years agobuild: Tell make(1) that the compiler creates .d files.
Andre Noll [Sat, 12 Sep 2020 18:29:23 +0000 (20:29 +0200)]
build: Tell make(1) that the compiler creates .d files.

The best way to convey the information that two files are created
by the same command involves rules with grouped targets (indicated
by the &: separator between targets and prerequisites). However,
since grouped targets is a relatively new feature of make(1) and we
would like to keep supporting older versions, we use ordinary rules
with multiple targets. This should not be worse because the compiler
is still run only once for each source file.

The patch also introduces the pre_deps make variable to make sure the
files listed in this variable are present before we run the compiler.

2 years agoUpdate .gitignore.
Andre Noll [Sat, 12 Sep 2020 20:15:32 +0000 (22:15 +0200)]
Update .gitignore.

Both files no longer exist in the tree.

2 years agoweb: Add style sheet.
Andre Noll [Tue, 16 Jun 2020 19:36:36 +0000 (21:36 +0200)]
web: Add style sheet.

The style sheet configures different background colors for even and
odd numbered lines of the API summary. This visual aid should make
the document easier to follow.

2 years agoweb: Streamline INSTALL.
Andre Noll [Sat, 12 Sep 2020 12:27:16 +0000 (14:27 +0200)]
web: Streamline INSTALL.

It was a bit too detailed, and inconsistent with respect to usage
of sudo. Also the formatting of the commands and the font usage was

Provide a link to the lopsub homepage and mention that m4 is required
while at it.

2 years agoweb: Simplify main page.
Andre Noll [Tue, 16 Jun 2020 15:33:52 +0000 (17:33 +0200)]
web: Simplify main page.

This combines and streamlines the "Download", "License" and "Contact"
sections of the home page and moves them to the README file.

This reduces the tabs of the main page navigation from 8 to 5 and
makes the various URLs more prominent, and part of README.

2 years agoweb: Let logo link to index.html rather than ".".
Andre Noll [Mon, 15 Jun 2020 23:42:25 +0000 (01:42 +0200)]
web: Let logo link to index.html rather than ".".

Depending on the browser and the web server config, the reference to
"." may cause the browser to render a directory listing.

2 years agoweb: Don't duplicate the html header.
Andre Noll [Mon, 15 Jun 2020 23:39:18 +0000 (01:39 +0200)]
web: Don't duplicate the html header.

Now that all web pages are in a single directory, we can get rid of
some duplication by using header.html also to create index.html.

2 years agoweb: Get rid of doxygen.
Andre Noll [Mon, 15 Jun 2020 23:13:30 +0000 (01:13 +0200)]
web: Get rid of doxygen.

Doxygen is an additional dependency, and it's total overkill for
a small project like osl. The self-contained gendoc.m4 script does
everything we need, and is much faster.

This patch converts osl.h.in to gendoc syntax and removes all traces
of doxygen. Since gendoc.m4 relies on features of gnu-m4 we run it with
-g to enable gnu extensions. This has been tested on FreeBSD and NetBSD
which ship different m4 implementations, both of which understand -g.

2 years agoweb: Convert QUICK_START to markdown syntax.
Andre Noll [Mon, 15 Jun 2020 17:16:50 +0000 (19:16 +0200)]
web: Convert QUICK_START to markdown syntax.

This file is rather simple and we don't need doxygen to convert it
to html. After this, the quick start document becomes part of the
main page.

Although this patch modifies almost every line of QUICK_START, the
changes to the actual contents have been kept to a minimum.

2 years agoweb: Fix typo in README.
Andre Noll [Tue, 16 Jun 2020 14:50:19 +0000 (16:50 +0200)]
web: Fix typo in README.

2 years agoActivate -Wsign-compare.
Andre Noll [Sat, 16 May 2020 16:28:03 +0000 (18:28 +0200)]
Activate -Wsign-compare.

Currently this option is disabled but the number of warnings it
triggers is moderate. This patch fixes all of them and enables the

2 years agoVersion 3 tables.
Andre Noll [Sun, 15 Mar 2020 11:27:22 +0000 (12:27 +0100)]
Version 3 tables.

This adds support for yet another hash function: sha256. We keep the
Keccak Hash as version #2, because it works well and has been around
for years in an experimental branch of this repo. As for Keccak,
we only use 20 bytes of the sha256 hash, which is safe enough and
helps to keep the patch as small as possible.

The sha256 implementation was taken from git v2.25.1.

2 years agoAdd sha3 implementation, introduce version-2 tables.
Andre Noll [Wed, 19 Apr 2017 15:50:42 +0000 (17:50 +0200)]
Add sha3 implementation, introduce version-2 tables.

This adds support for version-2 tables which use a variant of the
Keccec hash family rather than sha1.

The only difference between the two table versions is the different
hash function. Both hash functions create 20-byte output.

Version-1 tables are still supported, but new tables are always
created in v2 format.

2 years agoPrepare hash_function() for multiple hash algorithms.
Andre Noll [Wed, 19 Apr 2017 13:12:44 +0000 (15:12 +0200)]
Prepare hash_function() for multiple hash algorithms.

In order to transparently support more than one hash function in the
future, we now pass the table version to hash_function(). The version
is always one at the moment, and only the sha1 hash is implemented
so far.

2 years agoStore table version in struct osl_table.
Andre Noll [Wed, 19 Apr 2017 13:05:53 +0000 (15:05 +0200)]
Store table version in struct osl_table.

This modifies read_table_desc() to return the table version read from
the index header. The returned version number is stored in the newly
added field of struct osl_table. This will allow us to choose a hash
function based on the version.

2 years agoInitialize column name hash *after* table version is known.
Andre Noll [Wed, 19 Apr 2017 12:43:08 +0000 (14:43 +0200)]
Initialize column name hash *after* table version is known.

We use hash_function() to determine the path of the file/directory
which corresponds to columns of type MAPPED_STORAGE or
DISK_STORAGE. Currently this happens before the index has been
mapped, so we don't know the table version at this point.

Future versions of osl will support multiple hash functions, and the
hash function to use will be determined from the table version. At
this point the modifications of this patch become necessary. At the
moment the patch has no visible effect.

2 years agoosl_open_table(): Remove pointless directory check.
Andre Noll [Wed, 19 Apr 2017 10:59:54 +0000 (12:59 +0200)]
osl_open_table(): Remove pointless directory check.

The subsequent mmap(2) call will fail if the directory does not exist
(or if the path is not a directory), so this check is not needed.

This removes the only user of the E_OSL_NOTDIR error code. We must
keep it in the errlist file though, because error codes must be
considered part of the API.

2 years agoRemove sha1.h.
Andre Noll [Tue, 18 Apr 2017 20:07:54 +0000 (22:07 +0200)]
Remove sha1.h.

The file contains only the declaration of sha1_hash() and the
definition of HASH_SIZE This commit moves HASH_SIZE from sha1.h to
hash.h and moves the declaration of sha1_hash() to hash.h, the only
file which needs it.

2 years agoRemove COMPAT_TABLE_VERSION.
Andre Noll [Tue, 18 Apr 2017 18:23:30 +0000 (20:23 +0200)]

The compatibility version concept was introduced eight years ago in
commit (62d228ec), and was never needed. In fact, COMPAT_TABLE_VERSION
has always been zero so far. This commit gets rid of it.

Given a library version and the on-disk table version, we can still
tell whether the table can be opened by comparing the MIN_TABLE_VERSION
and the CURRENT_TABLE_VERSION numbers of the library against the
value stored in the table (i.e., the CURRENT_TABLE_VERSION value of
the library that created the table).

2 years agobuild: Deactivate implicit build make(1) rules.
Andre Noll [Wed, 17 Jun 2020 18:02:26 +0000 (20:02 +0200)]
build: Deactivate implicit build make(1) rules.

The new comment explains why.

2 years agobuild: Mark files generated by lopsub as precious.
Andre Noll [Wed, 17 Jun 2020 17:59:46 +0000 (19:59 +0200)]
build: Mark files generated by lopsub as precious.

Without this, running make(1) with no arguments after a previous
successful run would re-generate at least the .lsg.c file. This patch
avoids that.

2 years agobuild: Remove make(1) targets to build a static library.
Andre Noll [Wed, 17 Jun 2020 17:54:00 +0000 (19:54 +0200)]
build: Remove make(1) targets to build a static library.

These targets are not included in the default ("all") target.

2 years agobuild: Combine make(1) targets osl_errors.h and osl.h.
Andre Noll [Wed, 17 Jun 2020 17:49:32 +0000 (19:49 +0200)]
build: Combine make(1) targets osl_errors.h and osl.h.

There is no reason for the two-step appoach. After the patch
we generate one file less.

2 years agobuild: Make sure osl.h exists when we run the compiler.
Andre Noll [Wed, 17 Jun 2020 17:24:53 +0000 (19:24 +0200)]
build: Make sure osl.h exists when we run the compiler.

This fixes the build on NetBSD 9.0_RC1.

2 years agoDon't mention MacOS and Solaris in README and INSTALL.
Andre Noll [Tue, 16 Jun 2020 00:18:22 +0000 (02:18 +0200)]
Don't mention MacOS and Solaris in README and INSTALL.

Support for these was dropped recently.

2 years agoMakefile: Also build osl.h by default.
Andre Noll [Mon, 15 Jun 2020 14:29:52 +0000 (16:29 +0200)]
Makefile: Also build osl.h by default.

Otherwise it gets built as root during make install and is thus owned
by root. This may cause problems, for example if the source resides
on an NFS mounted directory where root is not allowed to write.

2 years agobuild: Add $(LDFLAGS) to rule for oslfsck.
Andre Noll [Mon, 18 May 2020 16:31:30 +0000 (18:31 +0200)]
build: Add $(LDFLAGS) to rule for oslfsck.

This allows for example to specify an additional -L option if lopsub
is not installed at a standard location.

2 years agobuild: Prefix CFLAGS and friends with OSL_.
Andre Noll [Sun, 17 May 2020 20:04:40 +0000 (22:04 +0200)]
build: Prefix CFLAGS and friends with OSL_.

It is best practice to leave the "official" CPPFLAGS, CFLAGS and
LDFLAGS variables alone and just add them at the end of the command
line options. This way the user may override any of our settings
by setting the corresponding option in the official variable. For
example, to deactivate warnings about unused variables or functions,
one may compile with

make CFLAGS=-Wno-unused

2 years agobuild: Reorder make variables.
Andre Noll [Sun, 17 May 2020 19:56:46 +0000 (21:56 +0200)]
build: Reorder make variables.

Move and assignment to LDFLAGS up to have the settings of all three
sets of flags at one location. Move libname down to where it is

2 years agobuild: Combine CFLAGS and LIBCFLAGS.
Andre Noll [Sun, 17 May 2020 19:47:17 +0000 (21:47 +0200)]
build: Combine CFLAGS and LIBCFLAGS.

We stopped compiling some object files twice some time ago. Since
then, all object files are build with the concatenation of both sets
of options.

The two variables are only used at this point, so it is safe to
combine them.

2 years agobuild: Simplify LDFLAGS setting.
Andre Noll [Sun, 17 May 2020 19:44:40 +0000 (21:44 +0200)]
build: Simplify LDFLAGS setting.

There is no more reason to distinguish between the three supported
operating systems. In particular all three support -Wl,-z,defs by now.

2 years agobuild: Simplify Makefile.
Andre Noll [Sun, 17 May 2020 19:43:42 +0000 (21:43 +0200)]
build: Simplify Makefile.

Now that only elf is supported we may get rid of the "format" variable
and the conditional.

2 years agobuild: Drop support for SunOS and MacOS.
Andre Noll [Sat, 16 May 2020 11:48:04 +0000 (13:48 +0200)]
build: Drop support for SunOS and MacOS.

Nobody uses this software on these platforms. It has not been tested
for a decade and is likely broken anyway.

2 years agobuild: Don't insist on gcc.
Andre Noll [Sat, 16 May 2020 11:23:36 +0000 (13:23 +0200)]
build: Don't insist on gcc.

On BSD systems gcc might not be installed while cc should always exist.

2 years agobuild: Create dependencies on the fly.
Andre Noll [Sat, 16 May 2020 11:23:03 +0000 (13:23 +0200)]
build: Create dependencies on the fly.

This is faster since we run the compiler only once. It is more robust,
too, because the build does not break if a random .h file is added to
the working directory. Using $(wildcard) is almost always a mistake..

2 years agoNEWS: Fix two typos.
Andre Noll [Sun, 17 May 2020 16:13:15 +0000 (18:13 +0200)]
NEWS: Fix two typos.

2 years agoImprove documentation of osl_rbtree_loop().
Andre Noll [Sat, 16 May 2020 11:03:51 +0000 (13:03 +0200)]
Improve documentation of osl_rbtree_loop().

Mention that E_OSL_LOOP is the only possible error. Fix a few trivial
whitespace issues and a typo while at it.

3 years agoMerge branch 'refs/heads/t/lopsub'
Andre Noll [Mon, 3 Jun 2019 12:05:10 +0000 (14:05 +0200)]
Merge branch 'refs/heads/t/lopsub'

* refs/heads/t/lopsub:
  Convert oslfsck to lopsub.

The merge conflicted twice for the Makefile because of commit
ec08b17c7514 which touched the object list of oslfsck and added
-DVERSION to the CPPFLAGs. This was easy to fix, though.

3 years agoMerge branch 'refs/heads/t/build'
Andre Noll [Sun, 5 May 2019 08:37:20 +0000 (10:37 +0200)]
Merge branch 'refs/heads/t/build'

A single commit that was cooking for four months.

* refs/heads/t/build:
  build: Fix dependencies for oslfsck.

3 years agoAdd explanation about lifetime of table description.
Andre Noll [Wed, 3 Jan 2018 01:45:15 +0000 (02:45 +0100)]
Add explanation about lifetime of table description.

3 years agoAdd link to author homepage.
Andre Noll [Sat, 19 Jan 2019 18:59:52 +0000 (19:59 +0100)]
Add link to author homepage.

The osl page already contains a link to the paraslash page, but it
makes sense to link also to the main software page.

5 years agobuild: Fix dependencies for oslfsck.
Andre Noll [Wed, 19 Apr 2017 13:49:38 +0000 (15:49 +0200)]
build: Fix dependencies for oslfsck.

The autogenerated Makefile.deps does not work for the oslfsck
exectutable because we compile the object files for oslfsck without
-fPIC to generate more performant code, and name them e.g. util.fsck.o
instead of util.o.

Geting rid of this optimization not only fixes the dependencies but
also simplifies the Makefile and speeds up the build.

5 years agoConvert oslfsck to lopsub.
Andre Noll [Sun, 28 Aug 2016 21:04:06 +0000 (23:04 +0200)]
Convert oslfsck to lopsub.

The gengetopt project seems to be dead (last release was five years
ago), so we eventually need to switch to something else.

This commit migrates the option parser of oslfsck to the lopsub
library, which turned out to be rather simple. As a result, the osl
package no longer depends on gengetopt and help2man.

The change only affects the oslfsck executable. No changes to the
library proper.

6 years agoosl-0.1.3. v0.1.3
Andre Noll [Mon, 19 Sep 2016 08:36:46 +0000 (10:36 +0200)]

6 years agoINSTALL: Explain how to update the library cache on MacOS.
Andre Noll [Thu, 19 May 2016 16:30:37 +0000 (18:30 +0200)]
INSTALL: Explain how to update the library cache on MacOS.

Thanks to Thomas Helle for pointing this out.

6 years agoREADME: Remove duplicate "network".
Andre Noll [Mon, 16 May 2016 08:49:35 +0000 (10:49 +0200)]
README: Remove duplicate "network".

6 years agoConvert README and INSTALL to markdown.
Andre Noll [Thu, 21 Apr 2016 09:09:39 +0000 (11:09 +0200)]
Convert README and INSTALL to markdown.

The grutatxt project is dead, so we need to switch to something else
eventually. Fortunately, only little changes are required for the
switch to the markdown markup language as there are only two files in
the source tree which are formated with grutatxt. This patch converts
both files and adjusts the Makefile to run the markdown converter
instead of the grutatxt script.

6 years agoweb: Create man page with groff rather than man2html.
Andre Noll [Wed, 13 Jan 2016 14:35:36 +0000 (15:35 +0100)]
web: Create man page with groff rather than man2html.

The man2html project is dead, as is the link on the osl web page. The
URL mentioned in the info of the man2html package for Ubuntu-14.04
still works but might not be the most up to date page on the planet
any more:


In any case, it's a funny read. Needless to say that the link to the
sunsite FTP server is also dead.

This commit makes osl independent of man2html, simply by running groff
-Thtml instead of man2html. This even simplifies the Makefile a bit.

The patch also removes the dead link on the osl main page. We don't
need a replacement reference to groff because groff should be installed
on all systems anyway.

6 years agosha1: Make private functions static.
Andre Noll [Thu, 24 Mar 2016 07:01:31 +0000 (07:01 +0000)]
sha1: Make private functions static.

These are not exported in osl.h or osl-core.h, so the symbols should
not be exposed to applications.

6 years agoweb: Update Doxyfile.
Andre Noll [Wed, 13 Jan 2016 14:12:02 +0000 (15:12 +0100)]
web: Update Doxyfile.

This file was created long ago with doxygen version 1.5.4. The system
on which the public web pages are generated runs Ubuntu 14.04 which
ships doxygen-1.8.6. This doxygen version complains as follows:

Warning: Tag `DETAILS_AT_TOP' at line 162 of file web/Doxyfile has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
Warning: Tag `SHOW_DIRECTORIES' at line 424 of file web/Doxyfile has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
Warning: Tag `HTML_ALIGN_MEMBERS' at line 727 of file web/Doxyfile has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"

This patch is the result of running doxygen -u web/Doxyfile. With the
updated file the above warnings go away, and the pages look identical.

7 years agoweb: Switch to UTF-8 encoding.
Andre Noll [Mon, 26 Oct 2015 14:38:09 +0000 (15:38 +0100)]
web: Switch to UTF-8 encoding.

Probably doesn't matter at all since there isn't a single text file in
the repo which is not pure ASCII. But still, in 2016 iso-8859 should
not be used any more..

7 years agoweb: Fix gibweb link.
Andre Noll [Mon, 26 Oct 2015 13:31:49 +0000 (14:31 +0100)]
web: Fix gibweb link.

The correct git:// and gitweb URLs contain a ".git" suffix. While the
git service works with and without this suffix, the gitweb link
404s without it.

This commit adds the .git suffix to both URLs.

7 years agoAdd make target www.
Andre Noll [Sat, 9 Aug 2014 13:21:50 +0000 (15:21 +0200)]
Add make target www.

The new target allows to update the web page with "make www", followed
by a suitable command to copy the "web" directory to the server. That's
as easy as it gets.

7 years agoweb: Remove SSI for last modification in footer.html.
Andre Noll [Thu, 22 Jan 2015 12:58:20 +0000 (13:58 +0100)]
web: Remove SSI for last modification in footer.html.

The footer.html file is is only used for the doxygen pages. It contains
a server side include directive although SSI is not activated on the
people.tuebingen.mpg.de web server and probably will never be.

This commit gets rid of the SSI and also removes the end tags </td>
and </table> from footer.html as these elements are not open at this
point of the document. This was found by the w3c validator.

Removes also the link to the W2C validator. Nobody wants to see this,
and doxygen does not even create valid html anyway..

7 years agoExplain the osl_strerror dance.
Andre Noll [Mon, 24 Aug 2015 15:34:28 +0000 (17:34 +0200)]
Explain the osl_strerror dance.

It's not completely obvious what is going on here and *why* we not
just go with a simple pointer array for the messages returned by
osl_strerror(). This commit explains why pointer arrays are bad
in DSOs.

7 years agoFix comment on SHA1 implementation.
Andre Noll [Mon, 24 Aug 2015 15:35:08 +0000 (17:35 +0200)]
Fix comment on SHA1 implementation.

The dependency on openssl was dropped six years ago in commit
f0884471. This commit corrects the stale comment that still says we
use openssl's sha1 implementation.

7 years agoosl_get_nth_row(): Always initialize result pointer.
Andre Noll [Sat, 13 Jun 2015 18:47:33 +0000 (20:47 +0200)]
osl_get_nth_row(): Always initialize result pointer.

We buy into Postel's prescription and try to be liberal in what we
accept, and conservative in what we send. This patch makes sure the
result pointer is set to NULL on failure, and documents this fact.

7 years agoSilence a gcc warning.
Andre Noll [Tue, 6 Jan 2015 17:32:58 +0000 (18:32 +0100)]
Silence a gcc warning.

Unfortunately, casting the return value to void is not enough to make
the warning go away, at least on Ubuntu systems.

7 years agoosl_update_object(): Honor OSL_DONT_FREE.
Andre Noll [Sun, 4 Jan 2015 00:34:26 +0000 (00:34 +0000)]
osl_update_object(): Honor OSL_DONT_FREE.

When osl_update_object() is called to replace an object of
an OSL_NO_STORAGE column, it frees the old object even if the
OSL_DONT_FREE flag is set for the column, which is wrong. This patch
changes the function to call free() only if OSL_DONT_FREE is unset.

7 years agoMention that OSL_RBTREE implies OSL_UNIQUE.
Andre Noll [Sun, 4 Jan 2015 00:33:35 +0000 (00:33 +0000)]
Mention that OSL_RBTREE implies OSL_UNIQUE.

Also print a warning when a table is opened or created which contains
a column description with OSL_RBTREE set but OSL_UNIQUE unset. Future
versions of osl might reject such table descriptions. But in order
to not break existing applications, we can not make such a change
without a deprecation period. So a warning has to suffice for now.

7 years agohlt.c: Clarify description.
Andre Noll [Sat, 3 Jan 2015 23:31:36 +0000 (23:31 +0000)]
hlt.c: Clarify description.

The old text was misleading since hlt looks only at regular
files. Directories can not be hard linked on most systems anyway.

7 years agoMinor API documentation improvements.
Andre Noll [Sat, 3 Jan 2015 22:57:58 +0000 (22:57 +0000)]
Minor API documentation improvements.

A couple of spelling and punctuation fixes, and some language

7 years agoosl.c: Fix assertion in create_table_index().
Andre Noll [Sat, 3 Jan 2015 17:03:27 +0000 (17:03 +0000)]
osl.c: Fix assertion in create_table_index().

Classic "=" vs. "==" bug. Since offset is positive, and not used any
more after the assert statement, the line has always been a no-op.

Found by cppcheck.

7 years agorbtree.c: Remove unused rb_replace_node().
Andre Noll [Sat, 3 Jan 2015 17:02:12 +0000 (17:02 +0000)]
rbtree.c: Remove unused rb_replace_node().

Found by cppcheck.

8 years agoUpdate URLs and email addresses.
Andre Noll [Wed, 13 Aug 2014 10:14:20 +0000 (12:14 +0200)]
Update URLs and email addresses.

The project has been moved from systemlinux.org to people.tuebingen.mpg.de.
This commit updates all links and email addresses.

8 years agoInstall relative links to the soname.
Andre Noll [Mon, 11 Aug 2014 09:13:25 +0000 (11:13 +0200)]
Install relative links to the soname.

On make install, the library is installed to $(libdir)/$(realname)
(e.g. /usr/local/lib/libosl.so.0.1.2), and a link is created to
map $(linkername) to $(soname) (e.g. /usr/local/lib/libosl.so ->

This changes the ln command to create a relative link rather than an
absolute link. For example, /usr/local/lib/libosl.so now points to
libosl.so.0 without the leading directory. This shouldn't matter much
but it allows to move both files elsewhere without breaking the link.

8 years agoImprove documentation of the data_size field.
Andre Noll [Mon, 11 Aug 2014 09:11:09 +0000 (11:11 +0200)]
Improve documentation of the data_size field.

Make it clear that for objects of type OSL_FIXED_SIZE, the size has
to be specified in number of bytes.

9 years agoosl-0.1.2. maint v0.1.2
Andre Noll [Tue, 14 Jan 2014 14:31:02 +0000 (15:31 +0100)]

This commit also adds a NEWS file which contains the release notes
of all previous releases.

9 years agoFix adu link.
Andre Noll [Tue, 14 Jan 2014 14:11:12 +0000 (15:11 +0100)]
Fix adu link.

After the upgrade of the servers at systemlinux.org last week, the web
service is no longer available through http://systemlinux.org. Adjust
the link to the adu page accordingly.

10 years agoAdd shared target.
Andre Noll [Wed, 23 May 2012 17:21:17 +0000 (19:21 +0200)]
Add shared target.

This allows to build and install the shared library and the oslfsck
executable on systems without help2man via

        make shared oslfsck
        sudo make install-lib install-bin

10 years agoAllow to build a static version of libosl.
Andre Noll [Tue, 22 May 2012 15:55:10 +0000 (17:55 +0200)]
Allow to build a static version of libosl.

This adds the new target libosl.a which creates an archive that can
be statically linked into applications. Currently this works only on
ELF-based systems including Linux, FreeBSD and NetBSD, but fails on
MacOS. So it is not built automatically.

Unfortunately, creating libosl.a turned out to be trickier than
expected, because -fvisibility=hidden works only for dynamic libraries.
So we need a different method to hide non-static internal symbols
like make_message() which must not be global (external) because they
might clash with symbols used in the application.

objcopy(1) does the trick but we must provide a list of exceptional
symbols that should not be made local. This list is generated from
the osl.h header file.

12 years agoinit_rbtrees(): Fix initialization of volatile objects.
Andre Noll [Sat, 22 Jan 2011 13:23:14 +0000 (14:23 +0100)]
init_rbtrees(): Fix initialization of volatile objects.

In case a table contains both volatile and non-volatile rbtree columns
we must inititalize the arrray of pointers to the volatile objects.

Without this patch, re-opening a non-empty table leads to a segfault.

12 years agoSimplify __log().
Andre Noll [Sat, 22 Jan 2011 13:18:09 +0000 (14:18 +0100)]
Simplify __log().

No need for outfd as it is always stderr.

12 years agoClarify documentation of osl_table_description->dir.
Andre Noll [Sat, 22 Jan 2011 13:16:41 +0000 (14:16 +0100)]
Clarify documentation of osl_table_description->dir.

12 years agoMakefile: Remove unused uname_rs.
Andre Noll [Sat, 22 Jan 2011 13:15:49 +0000 (14:15 +0100)]
Makefile: Remove unused uname_rs.

12 years agohlt: Fix typo in comment.
Andre Noll [Sun, 21 Nov 2010 10:58:45 +0000 (11:58 +0100)]
hlt: Fix typo in comment.

13 years agoFix creation of zero-sized disk storage objects.
Andre Noll [Fri, 15 Jan 2010 19:11:50 +0000 (20:11 +0100)]
Fix creation of zero-sized disk storage objects.

We must not call write_all() with a zero length parameter.

13 years agoosl-0.1.1 v0.1.1
Andre Noll [Thu, 26 Nov 2009 13:14:42 +0000 (14:14 +0100)]

13 years agoSplit install target.
Andre Noll [Wed, 25 Nov 2009 09:40:08 +0000 (10:40 +0100)]
Split install target.

As proposed by Sebastian Stark, this introduces the install-lib,
install-bin and install-man targets. The simple "make install" still
installs everything, but splitting the target allows people to install
for example only the library if they do not have all tools available
which are necessary to build the oslfsck binary or its man page.

13 years agoINSTALL update.
Andre Noll [Mon, 23 Nov 2009 17:06:39 +0000 (18:06 +0100)]
INSTALL update.

Remove dependency on openssl and describe more clearly what is needed
to compile and install the package.

Also mention that one can set PREFIX to change the installation prefix
at make install time.

13 years agoDrop dependency on openssl.
Andre Noll [Fri, 20 Nov 2009 08:38:56 +0000 (09:38 +0100)]
Drop dependency on openssl.

This patch adds git's implementation of the sha1 hash algorithm. This
makes osl more self-contained as it allows to build osl without
openssl being installed.

It should also reduce the startup time of applications that link
against libosl.

13 years agoDon't use ?:= for setting PREFIX.
Andre Noll [Thu, 5 Nov 2009 10:27:05 +0000 (11:27 +0100)]
Don't use ?:= for setting PREFIX.

This does not work with all versions of (gnu) make.

13 years agoSet CC to gcc by default.
Andre Noll [Mon, 2 Nov 2009 13:39:16 +0000 (14:39 +0100)]
Set CC to gcc by default.

On systems where cc != gcc, compilation likely fails because we are
using quite some gccisms in osl. So default to gcc but let the user
override the default by setting CC manually.

The straight-forward CC ?= gcc does not work with gnu make as make
assigns CC the default value "cc".

Thanks to Steffen Schmidt for pointing out this shortcoming.

13 years agoCapitalize prefix variable.
Andre Noll [Mon, 2 Nov 2009 13:34:15 +0000 (14:34 +0100)]
Capitalize prefix variable.

As noted by Steffen Schmidt, in most projects the installation prefix is
spelled in caps, so follow this rule in osl.

Also use ?:= as the assignement operator as it creates a simply expanded
variable which is more suitable for the PREFIX variable.

13 years agoMacOs Fixes.
Andre Noll [Fri, 21 Aug 2009 11:17:31 +0000 (13:17 +0200)]
MacOs Fixes.

- Fix name of symbolic link used during installation.
- Do not strip the installed library.

13 years ago[Makefile]: Also create bindir and mandir on install. v0.1.0
Andre Noll [Tue, 4 Aug 2009 08:50:05 +0000 (10:50 +0200)]
[Makefile]: Also create bindir and mandir on install.

13 years agoREADME: Clarify red-black tree statements.
Andre Noll [Mon, 3 Aug 2009 09:31:49 +0000 (11:31 +0200)]
README: Clarify red-black tree statements.

As noted by Sebastian Stark, the old text was a bit misleading. So
make it clear that no special linux files are necessary to compile
the library.

Also, the sentence on table locking was not quite true: There's the
dirty bit in each osl table which is some kind of locking. Correct that
statement as well.

13 years agoThe fsck program is called oslfsck rather than osl_fsck.
Andre Noll [Sun, 2 Aug 2009 10:54:46 +0000 (12:54 +0200)]
The fsck program is called oslfsck rather than osl_fsck.

Remove the underscore and kill an outdated comment.

13 years agoImprove table versioning.
Andre Noll [Sun, 2 Aug 2009 10:31:07 +0000 (12:31 +0200)]
Improve table versioning.

This patch changes the way table version numbers are stored on disk.
Two version numbers instead of only one are stored in the table header:
The version of the lib that created the table, and the lowest version
number of the lib that can read the table.

As the latter is currently 0, it has no effect so far, i.e. tables
created with previous versions of the library still work fine. However,
with this change future versions of the library can detect from the
on-disk versions and the library version numbers if table and library
are compatible.

13 years agoRemove unnecessary $O from gengetopt target.
Andre Noll [Sat, 1 Aug 2009 19:51:45 +0000 (21:51 +0200)]
Remove unnecessary $O from gengetopt target.

Another relict from the paraslash code.

13 years agoMerge commit 'fml/master'
Andre Noll [Sat, 1 Aug 2009 19:49:49 +0000 (21:49 +0200)]
Merge commit 'fml/master'

13 years agoInstall executables using mode 755.
Andre Noll [Sat, 1 Aug 2009 19:41:04 +0000 (21:41 +0200)]
Install executables using mode 755.

13 years agoAdd subject=[osl] to the mailto link.
Andre Noll [Mon, 27 Jul 2009 17:12:25 +0000 (19:12 +0200)]
Add subject=[osl] to the mailto link.

Suggested by Sebastian Schultheiss. Let's see how much spam comes
through this link..

13 years agoAdd the osl logo.
Andre Noll [Mon, 27 Jul 2009 17:02:01 +0000 (19:02 +0200)]
Add the osl logo.

Many thanks to Sebastian Schultheiss who created the logo.

13 years agoREADME: Trivial typo fix.
Andre Noll [Mon, 27 Jul 2009 15:01:38 +0000 (17:01 +0200)]
README: Trivial typo fix.

Noted by Sebastian Stark.

13 years agoChange the osl slogan.
Andre Noll [Mon, 27 Jul 2009 15:01:08 +0000 (17:01 +0200)]
Change the osl slogan.

As the text "object storage layer" is already contained in the logo,
we need something different.