31#include "util-common.h" 
   47#define _(str) dgettext ("libalpm", str) 
   52void _alpm_alloc_fail(
size_t size);
 
   54#define MALLOC(p, s, action) do { p = malloc(s); if(p == NULL) { _alpm_alloc_fail(s); action; } } while(0) 
   55#define CALLOC(p, l, s, action) do { p = calloc(l, s); if(p == NULL) { _alpm_alloc_fail(l * s); action; } } while(0) 
   56#define REALLOC(p, s, action) do { void* np = realloc(p, s); if(np == NULL) { _alpm_alloc_fail(s); action; } else { p = np; } } while(0) 
   58#define STRDUP(r, s, action) do { if(s != NULL) { r = strdup(s); if(r == NULL) { _alpm_alloc_fail(strlen(s)); action; } } else { r = NULL; } } while(0) 
   59#define STRNDUP(r, s, l, action) do { if(s != NULL) { r = strndup(s, l); if(r == NULL) { _alpm_alloc_fail(l); action; } } else { r = NULL; } } while(0) 
   61#define FREE(p) do { free(p); p = NULL; } while(0) 
   63#define ASSERT(cond, action) do { if(!(cond)) { action; } } while(0) 
   65#define RET_ERR_VOID(handle, err) do { \ 
   66    _alpm_log(handle, ALPM_LOG_DEBUG, "returning error %d from %s (%s: %d) : %s\n", err, __func__, __FILE__, __LINE__, alpm_strerror(err)); \ 
   67    (handle)->pm_errno = (err); \ 
 
   70#define RET_ERR(handle, err, ret) do { \ 
   71    _alpm_log(handle, ALPM_LOG_DEBUG, "returning error %d from %s (%s: %d) : %s\n", err, __func__, __FILE__, __LINE__, alpm_strerror(err)); \ 
   72    (handle)->pm_errno = (err); \ 
   73    return (ret); } while(0) 
 
   75#define GOTO_ERR(handle, err, label) do { \ 
   76    _alpm_log(handle, ALPM_LOG_DEBUG, "got error %d at %s (%s: %d) : %s\n", err, __func__, __FILE__, __LINE__, alpm_strerror(err)); \ 
   77    (handle)->pm_errno = (err); \ 
   78    goto label; } while(0) 
 
   80#define RET_ERR_ASYNC_SAFE(handle, err, ret) do { \ 
   81    (handle)->pm_errno = (err); \ 
   82    return (ret); } while(0) 
 
   84#define CHECK_HANDLE(handle, action) do { if(!(handle)) { action; } (handle)->pm_errno = ALPM_ERR_OK; } while(0) 
   88#define ALPM_BUFFER_SIZE BUFSIZ 
   90#define ALPM_BUFFER_SIZE 8192 
   97#define OPEN(fd, path, flags) do { fd = open(path, flags | O_BINARY); } while(fd == -1 && errno == EINTR) 
  116int _alpm_makepath(
const char *path);
 
  117int _alpm_makepath_mode(
const char *path, mode_t mode);
 
  118int _alpm_copyfile(
const char *src, 
const char *dest);
 
  119char *_alpm_get_fullpath(
const char *path, 
const char *filename, 
const char *suffix);
 
  120size_t _alpm_strip_newline(
char *str, 
size_t len);
 
  122int _alpm_open_archive(alpm_handle_t *handle, 
const char *path,
 
  124int _alpm_unpack_single(alpm_handle_t *handle, 
const char *archive,
 
  125        const char *prefix, 
const char *filename);
 
  126int _alpm_unpack(alpm_handle_t *handle, 
const char *archive, 
const char *prefix,
 
  129ssize_t _alpm_files_in_directory(alpm_handle_t *handle, 
const char *path, 
int full_count);
 
  131typedef ssize_t (*_alpm_cb_io)(
void *buf, ssize_t len, 
void *ctx);
 
  133void _alpm_reset_signals(
void);
 
  134int _alpm_run_chroot(alpm_handle_t *handle, 
const char *cmd, 
char *
const argv[],
 
  135        _alpm_cb_io in_cb, 
void *in_ctx);
 
  136int _alpm_ldconfig(alpm_handle_t *handle);
 
  137int _alpm_str_cmp(
const void *s1, 
const void *s2);
 
  138char *_alpm_filecache_find(alpm_handle_t *handle, 
const char *filename);
 
  140int _alpm_filecache_exists(alpm_handle_t *handle, 
const char *filename);
 
  141const char *_alpm_filecache_setup(alpm_handle_t *handle);
 
  142char *_alpm_temporary_download_dir_setup(
const char *dir, 
const char *user);
 
  143void _alpm_remove_temporary_download_dir(
const char *dir);
 
  149int _alpm_splitname(
const char *target, 
char **name, 
char **version,
 
  150        unsigned long *name_hash);
 
  151unsigned long _alpm_hash_sdbm(
const char *str);
 
  152off_t _alpm_strtoofft(
const char *line);
 
  154int _alpm_raw_cmp(
const char *first, 
const char *second);
 
  155int _alpm_raw_ncmp(
const char *first, 
const char *second, 
size_t max);
 
  156int _alpm_access(alpm_handle_t *handle, 
const char *dir, 
const char *file, 
int amode);
 
  157int _alpm_fnmatch_patterns(
alpm_list_t *patterns, 
const char *
string);
 
  158int _alpm_fnmatch(
const void *pattern, 
const void *
string);
 
  159void *_alpm_realloc(
void **data, 
size_t *current, 
const size_t required);
 
  160void *_alpm_greedy_grow(
void **data, 
size_t *current, 
const size_t required);
 
  161alpm_errno_t _alpm_read_file(
const char *filepath, 
unsigned char **data, 
size_t *data_len);
 
  164char *
strsep(
char **, 
const char *);
 
  168#define SYMEXPORT __attribute__((visibility("default"))) 
  170#define UNUSED __attribute__((unused)) 
alpm_errno_t
libalpm's error type
Definition alpm.h:205
A doubly linked list.
Definition alpm_list.h:51
int64_t alpm_time_t
The time type used by libalpm.
Definition alpm.h:126
alpm_pkgvalidation_t
Method used to validate a package.
Definition alpm.h:2349
size_t block_size
Definition util.h:111
int ret
Definition util.h:113
char * block_offset
Definition util.h:110
size_t line_size
Definition util.h:105
char * line
Definition util.h:103
size_t real_line_size
Definition util.h:107
size_t max_line_size
Definition util.h:106
char * block
Definition util.h:109
char * line_offset
Definition util.h:104
char * strsep(char **, const char *)
Extracts tokens from a string.
Definition util.c:74
Used as a buffer/state holder for _alpm_archive_fgets().
Definition util.h:102