|go text: || - index - problems - systems - libraries - [ converting ] - programming - old library - new library - links -
||topics: || - [ old non-off_t code ] - going largefile - longlong default - face dualmode - make twinlibs - and defend - converting to off_t

Step 1: converting code not using off_t

In the first step you need to check your software if it still makes the assumption that "long" can hold a seek-value. That accounts to rather old software that is far away from being portable - they will break on a modern bsd-type system anyway. Also note that software with win32-origin make that assumption.

To work on it, include the ac-macros AC_TYPE_OFF_T and AC_FUNC_FSEEKO into your autoconf script. They will ensure to make the off_t typedef and fseeko functioncall visible. In systems without off_t typdefs (e.g. win32) and/or without autoconf usability you can simply #define to identity, i.e.

  #define off_t long
  #define fseeko fseek
  #define ftello ftell

With that basic configuration at hand you can start making your software portable - portable to platforms where 'off_t' is not a 32bit 'long' entity. You may want to get access to a freeBSD or darwin/MACosX system to test your software - an example would be the sourceforge compilefarm where you can get free ssh access. If that is uneasy to you then you can try with the 64on32 defines from the next section which offers a way to debug largefile problems locally on a linux/solaris system.

From experience, this step takes most of the time. Even modern linux/solaris software has lots of places where 32bit assumptions are made. And they most present themselves with call mismatches or late breakups on files > 2 GiB. When you are done with the portability step then you are ready for the next.