1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
#ifndef H_INSTALL
#define H_INSTALL
/** \file lib/install.h
*/
#include <rpmlib.h>
/**
*/
struct sharedFile {
int mainFileNumber;
int secRecOffset;
int secFileNumber;
} ;
/**
*/
struct sharedFileInfo {
int pkgFileNum;
int otherFileNum;
int otherPkg;
int isRemoved;
};
/**
* File disposition(s) during package install/erase.
*/
enum fileActions {
FA_UNKNOWN = 0, /*!< initial action (default action for source rpm) */
FA_CREATE, /*!< ... to be replaced. */
FA_BACKUP, /*!< ... renamed with ".rpmorig" extension. */
FA_SAVE, /*!< ... renamed with ".rpmsave" extension. */
FA_SKIP, /*!< ... already replaced, don't remove. */
FA_ALTNAME, /*!< ... create with ".rpmnew" extension. */
FA_REMOVE, /*!< ... to be removed. */
FA_SKIPNSTATE, /*!< ... untouched, state "not installed". */
FA_SKIPNETSHARED, /*!< ... untouched, state "netshared". */
FA_SKIPMULTILIB, /*!< ... untouched. @todo state "multilib" ???. */
};
#define XFA_SKIPPING(_a) \
((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPMULTILIB)
/**
*/
typedef enum rollbackDir_e {
ROLLBACK_SAVE = 1, /*!< Save files. */
ROLLBACK_RESTORE = 2, /*!< Restore files. */
} rollbackDir;
/**
* File types.
* These are the types of files used internally by rpm. The file
* type is determined by applying stat(2) macros like S_ISDIR to
* the file mode tag from a header. The values are arbitrary,
* but are identical to the linux stat(2) file types.
*/
enum fileTypes {
PIPE = 1, /*!< pipe/fifo */
CDEV = 2, /*!< character device */
XDIR = 4, /*!< directory */
BDEV = 6, /*!< block device */
REG = 8, /*!< regular file */
LINK = 10, /*!< hard link */
SOCK = 12, /*!< socket */
};
/*@abstract@*/ typedef struct transactionFileInfo_s * TFI_t;
#ifdef __cplusplus
extern "C" {
#endif
/**
* Retrieve and run scriptlet from header.
* @param ts transaction set
* @param h header
* @param scriptTag scriptlet tag
* @param progTag scriptlet interpreter tag
* @param arg no. instances of package installed after scriptlet exec
* @param norunScripts should scriptlet be executed?
* @return 0 on success
*/
int runInstScript(const rpmTransactionSet ts, Header h,
int scriptTag, int progTag, int arg, int norunScripts);
/**
* Run trigger scripts in the database that are fired by this header.
* @param ts transaction set
* @param sense one of RPMSENSE_TRIGGER{IN,UN,POSTUN}
* @param h header
* @param countCorrection 0 if installing, -1 if removing, package
* @return 0 on success, 1 on error
*/
int runTriggers(const rpmTransactionSet ts, int sense, Header h,
int countCorrection);
/**
* Run triggers from this header that are fired by headers in the database.
* @param ts transaction set
* @param sense one of RPMSENSE_TRIGGER{IN,UN,POSTUN}
* @param h header
* @param countCorrection 0 if installing, -1 if removing, package
* @return 0 on success, 1 on error
*/
int runImmedTriggers(const rpmTransactionSet ts, int sense, Header h,
int countCorrection);
/**
* Return formatted string representation of file disposition.
* @param a file dispostion
* @return formatted string
*/
/*@observer@*/ const char *const fileActionString(enum fileActions a);
/**
* Install binary package (from transaction set).
* @param ts transaction set
* @param fi transaction element file info
* @return 0 on success, 1 on bad magic, 2 on error
*/
int installBinaryPackage(const rpmTransactionSet ts, TFI_t fi);
/**
* Erase binary package (from transaction set).
* @param ts transaction set
* @param fi transaction element file info
* @param pkgKey package private data
* @return 0 on success
*/
int removeBinaryPackage(const rpmTransactionSet ts, TFI_t fi);
#ifdef __cplusplus
}
#endif
#endif /* H_INSTALL */
|