]> cygwin.com Git - cygwin-apps/setup.git/blob - ini.h
* ini.h (Dependency): New structure. Declare new function.
[cygwin-apps/setup.git] / ini.h
1 /*
2 * Copyright (c) 2000, Red Hat, Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * A copy of the GNU General Public License can be found at
10 * http://www.gnu.org/
11 *
12 * Written by DJ Delorie <dj@cygnus.com>
13 *
14 */
15
16 /* When setup.ini is parsed, the information is stored according to
17 the declarations here. ini.cc (via inilex and iniparse)
18 initializes these structures. choose.cc sets the action and trust
19 fields. download.cc downloads any needed files for selected
20 packages (the chosen "install" field). install.cc installs
21 selected packages. */
22
23 #define YYSTYPE char *
24
25 /* lowest number must be most trusted, highest least trusted */
26 typedef enum
27 {
28 TRUST_UNKNOWN,
29 TRUST_PREV,
30 TRUST_CURR,
31 TRUST_TEST,
32 NTRUST
33 } trusts;
34
35 typedef enum
36 {
37 ACTION_UNKNOWN,
38 /* Note that the next six items must be in the same order as the
39 TRUST items above. */
40 ACTION_PREV,
41 ACTION_CURR,
42 ACTION_TEST,
43 ACTION_SKIP,
44 ACTION_UNINSTALL,
45 ACTION_REDO,
46 ACTION_SRC_ONLY,
47 ACTION_LAST,
48 ACTION_ERROR,
49 ACTION_SAME = 100,
50 ACTION_SAME_PREV = ACTION_PREV + ACTION_SAME,
51 ACTION_SAME_CURR = ACTION_CURR + ACTION_SAME,
52 ACTION_SAME_TEST = ACTION_TEST + ACTION_SAME,
53 ACTION_SAME_LAST
54 } actions;
55
56 typedef enum
57 {
58 EXCLUDE_NONE = 0,
59 EXCLUDE_BY_SETUP,
60 EXCLUDE_NOT_FOUND
61 } excludes;
62
63 #define is_download_action(pkg) \
64 ((pkg)->action == ACTION_PREV || \
65 (pkg)->action == ACTION_CURR || \
66 (pkg)->action == ACTION_TEST || \
67 (pkg)->action == ACTION_REDO || \
68 (pkg)->action == ACTION_SRC_ONLY)
69
70 #define is_upgrade_action(pkg) \
71 (((pkg)->action >= ACTION_CURR && \
72 (pkg)->action <= ACTION_TEST) || \
73 (pkg)->action == ACTION_REDO)
74
75 #define is_uninstall_action(pkg) \
76 (is_upgrade_action (pkg) || \
77 (pkg)->action == ACTION_PREV || \
78 (pkg)->action == ACTION_UNINSTALL)
79
80 #define SRCACTION_NO 0
81 #define SRCACTION_YES 1
82 typedef struct _Info
83 {
84 char *version; /* version part of filename */
85 char *install; /* file name to install */
86 int install_size; /* in bytes */
87 int install_exists; /* install file exists on disk */
88 char *source; /* sources for installed binaries */
89 int source_size; /* in bytes */
90 int source_exists; /* source file exists on disk */
91 #ifdef __cplusplus
92 _Info (const char *_install, const char *_version,
93 int _install_size, const char *_source = NULL,
94 int _source_size = 0);
95 #endif
96 } Info; /* +1 for TRUST_UNKNOWN */
97
98 typedef struct _Dependency
99 {
100 struct _Dependency *next; /* the next package in this dependency list */
101 char *package; /* the name of the package that is depended on */
102 } Dependency; /* Dependencies can be used for
103 recommended/required/related... */
104 typedef struct
105 {
106 char *name; /* package name, like "cygwin" */
107 char *sdesc; /* short description (replaces "name" if provided) */
108 char *ldesc; /* long description (multi-line) */
109 char *category; /* the category the package belongs to, like "required" or "XFree86" */
110 Dependency *required; /* the packages required for this package to work */
111 actions action; /* ACTION_* - only NEW and UPGRADE get installed */
112 trusts trust; /* TRUST_* (selects among info[] below) */
113 int srcpicked; /* SRCACTION_ */
114
115 Info *installed;
116 trusts installed_ix;
117 excludes exclude; /* true if this package should be excluded */
118
119 Info info[NTRUST]; /* +1 for TRUST_UNKNOWN */
120 } Package;
121
122 extern Package *package;
123 extern int npackages;
124
125 #ifdef __cplusplus
126 extern "C" {
127 #endif
128
129 Package *new_package (char *name);
130 void ini_init (char *string);
131 Package *getpkgbyname (const char *pkgname);
132 void new_requirement (Package *package, char *dependson);
133
134 #ifdef __cplusplus
135 }
136 #endif
This page took 0.045639 seconds and 6 git commands to generate.