diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index e9b0feb..eab10de 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -1326,7 +1326,8 @@ typedef enum _alpm_errno_t { ALPM_ERR_LIBARCHIVE, ALPM_ERR_LIBCURL, ALPM_ERR_EXTERNAL_DOWNLOAD, - ALPM_ERR_GPGME + ALPM_ERR_GPGME, + ALPM_ERR_NOT_LARGEFILE } alpm_errno_t; /** Returns the current error code from the handle. */ @@ -1338,8 +1339,13 @@ const char *alpm_strerror(alpm_errno_t err); /* End of alpm_api_errors */ /** @} */ -alpm_handle_t *alpm_initialize(const char *root, const char *dbpath, - alpm_errno_t *err); +#define alpm_initialize(root,dbpath,err) \ + alpm_initialize_check_largefile(root, dbpath, err, sizeof(off_t)) + +/** (This would be a good place to document the largefile issue) */ +alpm_handle_t *alpm_initialize_check_largefile(const char *root, + const char *dbpath, alpm_errno_t *err, size_t sizeof_off_t); + int alpm_release(alpm_handle_t *handle); enum alpm_caps { diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c index 878c38b..a96e69c 100644 --- a/lib/libalpm/alpm.c +++ b/lib/libalpm/alpm.c @@ -37,6 +37,9 @@ * @{ */ +/* leave alpm_initialize in the .so for backwards compatibility */ +#undef alpm_initialize + /** Initializes the library. * Creates handle, connects to database and creates lockfile. * This must be called before any other functions are called. @@ -87,6 +90,16 @@ cleanup: return NULL; } +alpm_handle_t SYMEXPORT *alpm_initialize_check_largefile(const char *root, + const char *dbpath, alpm_errno_t *err, size_t sizeof_off_t) +{ + if (sizeof(off_t) != sizeof_off_t) { + if (err) *err = ALPM_ERR_NOT_LARGEFILE; + return NULL; + } + return alpm_initialize(root, dbpath, err); +} + /** Release the library. * Disconnects from the database, removes handle and lockfile * This should be the last alpm call you make.