]>
cygwin.com Git - cygwin-apps/setup.git/blob - ini.h
2 * Copyright (c) 2000, Red Hat, Inc.
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.
9 * A copy of the GNU General Public License can be found at
12 * Written by DJ Delorie <dj@cygnus.com>
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
23 #define YYSTYPE char *
25 /* lowest number must be most trusted, highest least trusted */
37 /* Note that the next four items must be in the same order as the
50 /* Actions taken when installed version matches the selected version. */
51 ACTION_SAME_PREV
= ACTION_PREV
+ ACTION_SAME
,
52 ACTION_SAME_CURR
= ACTION_CURR
+ ACTION_SAME
,
53 ACTION_SAME_TEST
= ACTION_TEST
+ ACTION_SAME
,
65 #define is_download_action(pkg) \
66 ((pkg)->action == ACTION_PREV || \
67 (pkg)->action == ACTION_CURR || \
68 (pkg)->action == ACTION_TEST || \
69 (pkg)->action == ACTION_REDO || \
70 (pkg)->action == ACTION_SRC_ONLY)
72 #define is_upgrade_action(pkg) \
73 (((pkg)->action >= ACTION_CURR && \
74 (pkg)->action <= ACTION_TEST) || \
75 (pkg)->action == ACTION_REDO)
77 #define is_uninstall_action(pkg) \
78 (is_upgrade_action (pkg) || \
79 (pkg)->action == ACTION_PREV || \
80 (pkg)->action == ACTION_UNINSTALL)
82 #define is_full_action(pkg) \
83 (((pkg)->action >= ACTION_SAME_PREV && (pkg)->action <= ACTION_SAME_TEST) \
84 || (pkg)->action == ACTION_SKIP)
86 #define SRCACTION_NO 0
87 #define SRCACTION_YES 1
90 char *version
; /* version part of filename */
91 char *install
; /* file name to install */
92 int install_size
; /* in bytes */
93 int install_exists
; /* install file exists on disk */
94 char *source
; /* sources for installed binaries */
95 int source_size
; /* in bytes */
96 int source_exists
; /* source file exists on disk */
98 _Info (const char *_install
, const char *_version
,
99 int _install_size
, const char *_source
= NULL
,
100 int _source_size
= 0);
102 } Info
; /* +1 for TRUST_UNKNOWN */
104 typedef struct _Dependency
106 struct _Dependency
*next
; /* the next package in this dependency list */
107 char *package
; /* the name of the package that is depended on */
108 } Dependency
; /* Dependencies can be used for
109 recommended/required/related... */
112 char *name
; /* package name, like "cygwin" */
113 char *sdesc
; /* short description (replaces "name" if provided) */
114 char *ldesc
; /* long description (multi-line) */
115 char *category
; /* the category the package belongs to, like "required" or "XFree86" */
116 Dependency
*required
; /* the packages required for this package to work */
117 actions action
; /* A range of states applicable to this package */
118 trusts trust
; /* Selects among info[] below, a subset of action */
119 int srcpicked
; /* True if source is required */
121 Info
*installed
; /* Info on installed package */
122 trusts installed_ix
; /* Index into info array for currently installed package */
123 excludes exclude
; /* true if this package should be excluded */
125 /* The reason for this weird layout is to allow for loops that scan either
126 the info array, based on trust value or the infoscan array based on a pointer,
127 looking for a particular version. */
128 Info info
[1]; /* First element. Intentionally allocated prior
130 Info infoscan
[NTRUST
- 1]; /* +1 for TRUST_UNKNOWN */
131 Info infoend
[0]; /* end marker */
134 extern Package
*package
;
135 extern int npackages
;
141 Package
*new_package (char *name
);
142 void ini_init (char *string
);
143 Package
*getpkgbyname (const char *pkgname
);
144 void new_requirement (Package
*package
, char *dependson
);
This page took 0.04149 seconds and 5 git commands to generate.