/* archive-location.h:
 *
 * vim:smartindent ts=8:sts=2:sta:et:ai:shiftwidth=2
 ****************************************************************
 * Copyright (C) 2005 Canonical Limited
 *      Authors: Robert Collins <robert.collins@canonical.com>
 *
 * See the file "COPYING" for further information about
 * the copyright and warranty status of this work.
 */

#ifndef INCLUDE__LIBARCH__ARCHIVE_LOCATION_H
#define INCLUDE__LIBARCH__ARCHIVE_LOCATION_H


#include "hackerlab/arrays/ar.h"
#include "hackerlab/mem/talloc.h"
#include "libinifile/inifile.h"

typedef struct arch_archive_location_
{
  /* must be talloced in the location context */
  t_uchar * url;
  /* 0:not, 1: unknown, 2: yes */
  int master;
  /* 0:not, 1: unknown, 2: yes */
  int readonly;
  /* 0:not, 1: unknown, 2: disabled */
  int disabled;
  /* defaults to 100, <0 means disabled */
  int priority;
} arch_archive_location_t;

AR_TYPEDEF(arch_archive_location_t *, archive_location)
#define ar_free_archive_location(array) \
{ \
    int index; \
    for (index = 0; index < ar_size_archive_location (*array); ++index) \
      talloc_free ((*array)[index]); \
    ar_free_archive_location(array); \
}

extern arch_archive_location_t * arch_archive_location_new (t_uchar const * const url);
extern arch_archive_location_t * arch_archive_location_new_inivalue (t_uchar const * const inivalue);
/* result is a talloc allocated struct. use talloc_free or steal it to another talloc context */
#define arch_archive_location_delete(foo) talloc_free(foo)
extern t_uchar * arch_archive_location_to_ini_key(arch_archive_location_t const * const location);

#endif  /* INCLUDE__LIBARCH__ARCHIVE_LOCATION_H */


syntax highlighted by Code2HTML, v. 0.9.1