1 /* namespace.h:
2  *
3  ****************************************************************
4  * Copyright (C) 2003 Tom Lord
5  *
6  * See the file "COPYING" for further information about
7  * the copyright and warranty status of this work.
8  */
9 
10 #ifndef INCLUDE__LIBARCH__NAMESPACE_H
11 #define INCLUDE__LIBARCH__NAMESPACE_H
12 
13 
14 #include "hackerlab/machine/types.h"
15 #include "tla/libawk/relational.h"
16 
17 
18 
19 #define arch_archive_re "[-a-zA-Z0-9]+[[:(\\.[-a-zA-Z0-9]*):]]*@[-a-zA-Z0-9.]*[[:(--[-a-zA-Z0-9.]*):]]?"
20 #define arch_base_re "[[:([a-zA-Z][[:([a-zA-Z0-9]*[[:(-[a-zA-Z0-9]+):]]?):]]*):]]"
21 #define arch_vsn_re "[[:([0-9]+\\.[0-9]+):]]"
22 #define arch_lvl_re "[[:(base-0|[[:([[:(patch|version|versionfix:)]]-[[:digit:]]+):]]):]]"
23 
24 
25 enum arch_valid_package_name_archive
26 {
27   arch_maybe_archive,
28   arch_req_archive,
29   arch_no_archive,
30 };
31 
32 enum arch_valid_package_name_types
33 {
34   arch_req_category,
35   arch_req_package,
36   arch_req_version,
37   arch_req_patch_level,
38 };
39 
40 enum arch_parse_package_name_type
41 {
42   arch_ret_archive,
43   arch_ret_non_archive,
44   arch_ret_category,
45   arch_ret_branch,
46   arch_ret_package,
47   arch_ret_version,
48   arch_ret_patch_level,
49   arch_ret_package_version,
50 };
51 
52 enum arch_patch_level_type
53 {
54   arch_is_base0_level,
55   arch_is_patch_level,
56   arch_is_version_level,
57   arch_is_versionfix_level,
58 };
59 
60 
61 
62 
63 
64 /* automatically generated __STDC__ prototypes */
65 extern int arch_valid_id (const t_uchar * id);
66 extern int arch_valid_archive_name (const t_uchar * name);
67 extern int arch_valid_patch_level_name (const t_uchar * name);
68 extern int arch_valid_config_name (const t_uchar * name);
69 extern int arch_valid_package_name (const t_uchar * name,
70                                     enum arch_valid_package_name_archive archive_disposition,
71                                     enum arch_valid_package_name_types type,
72                                     int tolerant);
73 extern int arch_is_system_package_name (const t_uchar * name);
74 extern t_uchar * arch_parse_package_name (enum arch_parse_package_name_type type,
75                                           const t_uchar * default_archive,
76                                           const t_uchar * name);
77 extern t_uchar * arch_fully_qualify (const t_uchar * default_archive,
78                                      const t_uchar * name);
79 extern int arch_names_cmp (const t_uchar * a,
80                            const t_uchar * b);
81 extern void arch_sort_table_by_name_field (int reverse_p, rel_table table, int field);
82 extern void arch_sort_table_by_patch_level_field (int reverse_p, rel_table table, int field);
83 extern int arch_patch_lvl_cmp (const t_uchar * a,
84                                const t_uchar * b);
85 extern rel_table arch_pick_archives_by_field (rel_table in, int field);
86 extern rel_table arch_pick_categories_by_field (rel_table in, int field);
87 extern rel_table arch_pick_branches_by_field (rel_table in, int field);
88 extern rel_table arch_pick_versions_by_field (rel_table in, int field);
89 extern rel_table arch_pick_revisions_by_field (rel_table in, int field);
90 extern rel_table arch_pick_patch_levels_by_field (rel_table in, int field);
91 extern enum arch_patch_level_type arch_analyze_patch_level (t_ulong * n,
92                                                             const t_uchar * patch_level);
93 extern t_uchar * arch_form_patch_level (enum arch_patch_level_type type, t_ulong n);
94 #endif  /* INCLUDE__LIBARCH__NAMESPACE_H */
95 
96 
97 /* tag: Tom Lord Sat Jan  5 15:26:10 2002 (namespace.h)
98  */
99