Skip to main content.


Released version 0.4.4

May 25, 2005

  • PX_get_data_alpha() may now return strings which are longer than the database field (e.g. when converting to a multibyte string)
  • fixed reencoding which failed when the input string passed to iconv contains zeros
  • codepage can be set when creating a database
  • fixed copy and paste error in doc/pxlib.sgml
  • added new function PX_create_blob_fp()
  • fixed many compiler warnings and some potential errors
  • added missing prototypes in
  • allow to turn off warnings
  • PX_set_blob_file() works when reading and writing a file
  • added missing man page for PX_create_blob_file()
  • added overall man page for pxlib with many examples
  • PX_get_value() now returns many fields from the header which makes accessing the header struct directly mostly superfluous

Released version 0.4.3

December 30, 2004

  • added PX_timestamp2string() for conversion of paradox timestamps into a readable representation
  • various fixed for writing blob files
  • return value for bcd fields uses decimal_point from locale
  • added spanish translations (thanks to

Released version 0.4.2

never released

  • fixed possible errors in header of mb files
  • added support for type 3 blocks in mb files

Released version 0.4.1

November 08, 2004

  • various updates of debian files
  • small changes to the build process

Released version 0.4.0

November 11, 2004

  • support for writing blobs
  • some man page updates

Released version 0.3.1

October 12, 2004

  • fixed segm fault in put_px_datahead() when second datablock is written
  • free memory when pxblob_t is deleted
  • separated code for recoding into encode.c

Released version 0.3.0

July 20, 2004

  • various man page updates
  • Blob data stored in the record itself can be read
  • added function PX_set_blob_file(), PX_has_blob_file()
  • added function PX_get_data_bcd(), PX_put_data_bcd(), PX_get_data_blob(), PX_get_data_graphic()

Released version 0.2.11

July 15, 2004

  • PX_read_blob_data() has been completely rewritten and can now handle any type of blob data. Watch for the new prototype.

Released version 0.2.10

July 14, 2004

  • creating a paradox db without records led to a corrupted file because the header was not fill with zeros to its full size.

Released version 0.2.9

May 26, 2004

  • new function PX_strdup() to duplicate a string but use the memory management functions of the paradox document.

Released version 0.2.8

May 13, 2004

  • new function PX_get_opaque()
  • fixed all references to PX_open_filename which is now PX_open_file
  • pass const char to API function if possible
  • updated build process
  • Better checking whether px file belongs to db file
  • /ul>

    Released version 0.2.7

    January 25, 2004

    • added man pages for blob file handling
    • set some more header fields. db and px files are now read correctly by the Paradox software.
    • changed default file version to 7.0

    Released version 0.2.6

    December 09, 2003

    • added new function PX_get_recordsize()
    • set indexRoot and numIndexLevels in .PX files
    • fixed segm fault when writing a primary index file
    • fixed reading of blobs
    • two new header fields are known (indexRoot, numIndexLevels)
    • many more translations
    • some more tweaking to finally store the file update time in the header without messing it up

    Released version 0.2.5

    8 Jan 04

    • fixed man pages of PX_set_[value|parameter]. Both functions return int now.
    • PX_set_parameter() returns -1 on error and 0 otherwise
    • Issue a warning if setting a value which does not exist
    • better error checking when setting the number of primary keys
    • fixed some errors in writing primary index files level 2 index entries are now supported
    • readded time of modification when writing the header

    Released version 0.2.4

    December 09, 2003

    • Paradox tables can be read by the Paradox software if the database is stored as version 5.0
    • added prototypes for PX_[get|set]_[parameter|value]()
    • all strings passed to PX_[get|set]_[parameter|value]() are of type const char
    • PX_get_[parameter|value]() return value in passed parameter and return an error code instead
    • Implemented function PX_get_parameter()
    • All PX_get_data_xxx() functions return -1 on error, 0 if the field value is NULL and 1 otherwise.

    Released version 0.2.3

    December 05, 2003

    • updated many error messages
    • fixed segm fault when PX_close() was called more than once
    • initial support for writing a primary index (experimental)

    Released version 0.2.2

    November 17, 2003

    • initial multi language support
    • added memory profiling
    • free some more memory in PX_delete()
    • renamed internal memory management functions from px_malloc, px_realloc, px_free to _px_malloc, _px_realloc, _px_free
    • call pxdoc->free instead of px_free
    • fixed potential buffer overrun
    • PX_set_[target|input]encoding returns -2 if recoding is not supported

    Released version 0.2.1

    November 09, 2003

    • fixed header size which was to small for databases with many fields.

    Released version 0.2.0

    October 30, 2003

    • update to latest autoconf tools
    • added support for pkg-config
    • added new function PX_new3() which allows to also set user data which is passed to the error handler
    • added generic way to set and get parameters
    • added support for external read, write, tell, seek functions

    Released version 0.1.9

    September 29, 2003

    • encoding for data, that is to be written in a record can be set
    • build internal primary index for faster access. This will not speed up searching but accessing records by record number.
    • fixed reading of primary index, now that I understand how it works
    • fixed data block handling (still not perfect, but works if records are stored sequentially)
    • fixed several errors in fileformat which where due to lack of information
    • provide header field 'fileUpdateTime'
    • access data block as linked in list and not as stored in file
    • new functions to manipulate record data
    • made many error message better understandable
    • initial support to write db files

    Released version 0.1.2

    August 21, 2003

    • primary index files can be read
    • added recno to struct px_datablockinfo
    • PX_get_record returns in referenced parameter deleted whether a record is deleted or not

    Released version 0.1.1

    August 15, 2003

    • fixed segm fault when calling PX_get_record()

    Released version 0.1.0

    August 14, 2003

    • New function PX_get_record2() which has two extra parameter. One to enable reading of deleted records and one to return internal data about the data block from which the record has been read.
    • added pxh->theonumrecords which is the number of records which theoretically fit into all data blocks. This number can be much bigger that the number of records in the header. Also increases the max. record number to theonumrecords when reading a record.
    • DB files can contain many more records than the number of records in the header. The remaining records are left overs, which were deleted but not removed from the file. pxlib can now handle those files.

    Released version 0.0.9

    August 11, 2003

    • man pages are not created if docbook-to-man is missing
    • fixed many endianess bugs
    • new function PX_is_bigendian()
    • new function PX_has_recode_support()
    • fixed compile error with older versions of gcc
    • fixed two potential segm faults

    Released version 0.0.8

    July 31, 2003

    • updated documentation
    • recoding of data fields with iconv

    Released version 0.0.7

    July 23, 2003

    • read more fields from the header,
    • added spec file to build rpms,
    • alpha fields are automatically recoded if required,
    • function to access alpha field data

    Released version 0.0.6

    July 18, 2003

    • more documentation,
    • more functions to access database schema (PX_get_field(), PX_get_fields()),
    • much better check for errors as not passing a document or out of range values

    Released version 0.0.5

    July 18, 2003

    • added PX_delete()
    • many memory leaks fixed
    • proper use of memory allocation functions

    Released version 0.0.4

    June 11, 2003

    • fixed segm fault if input file does not exist
    • maxTableSize may now be larger than 32
    • add check for endianess
    • added data conversion functions

    Released version 0.0.3

    Not published

    • check for zero record size and header size
    • added missing header files in distribution
    • added conversion routine from Gregorian date to serial date number

    Released version 0.0.2

    June 03, 2003

    • support for blobs, bug fixes

    Released version 0.0.1

    April 29, 2003

    • initial release

Latest News

Released version 0.6.6

April 07, 2016

This release fixes some more typos in the documentation.

Released version 0.6.5

Jannuary 11, 2012

pxlib isn't dead, its development has just slowed down. This release fixes some typos and optimizes the configuration process.

Released version 0.6.2

September 19, 2007

This one fixes a long lasting bug on 64 bit architectures. It also is compilable in a mingw environment and Visual C++ with the help of cmake.

Released version 0.6.1

March 29, 2006

There were some bugs related to the changes of the last release. This version fixes them. Besides that the following has changed:

  • Much better support for secondary indexes
  • PX_insert_record() and PX_update_record() treat null values propperly
  • PX_delete_record() now updates the internal index without corrupting it.
  • Various man page updates.
  • Auto increment fields of type pxfAutoInc.
  • Fixed some compile errors and warnings.
  • Fixed various small bugs and memory leaks.

Released version 0.6.0

February 6, 2006

This version includes some major changes to the api while retaining compatible to older versions. If you use the new functions expect bugs but also a much simplier record handling.

  • Databases can be read and written after opening with PX_open_xxx()
  • Use a cache for reading encrypted blobs
  • Added new functions PX_delete_record(), PX_update_record(), PX_insert_record(), PX_retrieve_record()
  • reading and writing encrypted blob files is more efficient.
  • No more than 64 blobs will be stored in blocks of type 3
  • Fixed various small bugs and memory leaks.

Released version 0.5.1

August 11, 2005

  • fixed bug when reading header of blob (Thanks to Giovanni Giacobbi)
  • fixes bug when reading blobs of a certain size from an encrypted .mb file.
  • reading and writing encrypted blob files is more efficient.

Released version 0.5.0

July 14, 2005

  • support for encrypted databases and blob files

New web site

02 Feb 05

After a long time the web site has been overhauled with much more information about pxlib.