/* inv-ids.h: file inventory ids
 *
 ****************************************************************
 * Copyright (C) 2002, 2003 Tom Lord
 *
 * See the file "COPYING" for further information about
 * the copyright and warranty status of this work.
 */

#ifndef INCLUDE__LIBARCH__INV_IDS_H
#define INCLUDE__LIBARCH__INV_IDS_H


#include "hackerlab/machine/types.h"
#include "hackerlab/os/sys/stat.h"
#include "libawk/associative.h"
#include "libawk/relational.h"



enum arch_inventory_category
{
  arch_inventory_source = 1,
  arch_inventory_precious = 2,
  arch_inventory_backup = 4,
  arch_inventory_junk = 8,
  arch_inventory_tree = 16,
  arch_inventory_unrecognized = 32,
  arch_inventory_excludes = 64
};


#include "libarch/project-tree.h"


/* automatically generated __STDC__ prototypes */
extern t_uchar * arch_log_file_id (t_uchar * archive, t_uchar * revision);
extern assoc_table arch_filenames_ids (rel_table * file_list, arch_project_tree_t * tree);
extern t_uchar * arch_id_for_path(t_uchar const * const some_path, enum arch_id_tagging_method method);
extern t_uchar * arch_inventory_id (arch_project_tree_t * tree,
                                     t_uchar const * const path,
                                     struct stat * known_lstat);
extern t_uchar * arch_id_tagging_method_name (enum arch_id_tagging_method m);
extern enum arch_id_tagging_method arch_id_tagging_method_from_name (t_uchar * name);
extern t_uchar * arch_default_id_tagging_method_contents (enum arch_id_tagging_method method);
extern t_uchar * arch_tree_id_tagging_method_file (arch_project_tree_t * tree);
extern enum arch_id_tagging_method arch_tree_id_tagging_method (arch_project_tree_t * tree, enum arch_inventory_category * cat_var, int strict);
extern void arch_set_tree_id_tagging_method (arch_project_tree_t * tree,
                                          enum arch_id_tagging_method method);
extern t_uchar * arch_explicit_id_file_for (t_uchar * path);
extern t_uchar * arch_generate_id (void);
extern t_uchar * arch_choose_explicit_id (arch_project_tree_t * tree, t_uchar * path, t_uchar * id);
extern t_uchar * arch_add_id (t_uchar * path, t_uchar * id);
extern void arch_add_explicit_id (t_uchar * path, t_uchar * id);
extern void arch_delete_explicit_id (t_uchar * path);
extern void arch_move_explicit_id (t_uchar * from, t_uchar * to);
extern t_uchar * arch_strong_explicit_dflt_file (t_uchar * dir);
extern t_uchar * arch_weak_explicit_dflt_file (t_uchar * dir);
extern t_uchar * arch_dont_care_explicit_dflt_file (t_uchar * dir);
extern int arch_is_dont_care_explicit_dflt_dir (t_uchar * dir);
extern void arch_delete_strong_explicit_default (t_uchar * dir);
extern void arch_delete_weak_explicit_default (t_uchar * dir);
extern void arch_delete_dont_care_explicit_default (t_uchar * dir);
extern void arch_set_strong_explicit_default (t_uchar * dir, t_uchar * id);
extern void arch_set_weak_explicit_default (t_uchar * dir, t_uchar * id);
extern void arch_set_dont_care_explicit_default (t_uchar * dir);
extern t_uchar *arch_id_from_explicit_file (int *errn, t_uchar * path);
/* TODO: move to hackerlab */
extern int str_cmp_suffix_n(t_uchar * a_string, t_uchar * b_string, int length);
#endif  /* INCLUDE__LIBARCH__INV_IDS_H */


/* tag: Tom Lord Sat Jan  5 15:26:10 2002 (inv-tags.h)
 */


syntax highlighted by Code2HTML, v. 0.9.1