rpm  5.4.15
rpmlio.c
Go to the documentation of this file.
1 
5 #include "system.h"
6 
7 #include <rpmiotypes.h>
8 #include <rpmtypes.h>
9 #include <argv.h>
10 
11 #include <rpmtag.h>
12 #define _RPMDB_INTERNAL
13 #include <rpmdb.h>
14 #include <rpmlio.h>
15 
16 #include "debug.h"
17 
18 /*@unchecked@*/
19 int _rpmlio_debug = 0;
20 
21 #if defined(SUPPORT_FILE_ACID)
22 /*@unchecked@*/
23 static int _enable_syscall_logging = 0;
24 /*@unchecked@*/
25 static int _enable_scriptlet_logging = 0;
26 #endif /* SUPPORT_FILE_ACID */
27 
28 int rpmlioCreat(rpmdb rpmdb, const char * fn, mode_t mode,
29  const uint8_t * b, size_t blen,
30  const uint8_t * d, size_t dlen, uint32_t dalgo)
31 {
32  int rc = 0;
33 #if defined(SUPPORT_FILE_ACID)
34  extern int logio_Creat_log
35  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t, const DBT *, const DBT *, uint32_t));
36  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
37  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
38  DB_LSN _lsn = {0,0};
39  DBT FNdbt = {0};
40  DBT Bdbt = {0};
41  DBT Ddbt = {0};
42  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
43  FNdbt.data = (void *)fn;
44  FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
45  Bdbt.data = (void *)b;
46  Bdbt.size = blen;
47  Ddbt.data = (void *)d;
48  Ddbt.size = dlen;
49  rc = logio_Creat_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode, &Bdbt, &Ddbt, dalgo);
50 if (_rpmlio_debug)
51 fprintf(stderr, "<== %s(%s, 0%o, %p[%u], %p[%u], %u) rc %d\n", __FUNCTION__, fn, mode, b, (unsigned)blen, d, (unsigned)dlen, (unsigned)dalgo, rc);
52 #endif /* SUPPORT_FILE_ACID */
53  return rc;
54 }
55 
56 int rpmlioUnlink(rpmdb rpmdb, const char * fn, mode_t mode,
57  const uint8_t * b, size_t blen,
58  const uint8_t * d, size_t dlen, uint32_t dalgo)
59 {
60  int rc = 0;
61 #if defined(SUPPORT_FILE_ACID)
62  extern int logio_Unlink_log
63  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t, const DBT *, const DBT *, uint32_t));
64  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
65  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
66  DB_LSN _lsn = {0,0};
67  DBT FNdbt = {0};
68  DBT Bdbt = {0};
69  DBT Ddbt = {0};
70  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
71  FNdbt.data = (void *)fn;
72  FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
73  Bdbt.data = (void *)b;
74  Bdbt.size = blen;
75  Ddbt.data = (void *)d;
76  Ddbt.size = dlen;
77  rc = logio_Unlink_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode, &Bdbt, &Ddbt, dalgo);
78 if (_rpmlio_debug)
79 fprintf(stderr, "<== %s(%s, 0%o, %p[%u], %p[%u], %u) rc %d\n", __FUNCTION__, fn, mode, b, (unsigned)blen, d, (unsigned)dlen, (unsigned)dalgo, rc);
80 #endif /* SUPPORT_FILE_ACID */
81  return rc;
82 }
83 
84 int rpmlioRename(rpmdb rpmdb, const char * oldname, const char * newname,
85  mode_t mode,
86  const uint8_t * b, size_t blen,
87  const uint8_t * d, size_t dlen, uint32_t dalgo)
88 {
89  int rc = 0;
90 #if defined(SUPPORT_FILE_ACID)
91  extern int logio_Rename_log
92  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *, mode_t, const DBT *, const DBT *, uint32_t));
93  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
94  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
95  DB_LSN _lsn = {0,0};
96  DBT ONdbt = {0};
97  DBT NNdbt = {0};
98  DBT Bdbt = {0};
99  DBT Ddbt = {0};
100  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
101  ONdbt.data = (void *)oldname;
102  ONdbt.size = strlen(oldname) + 1; /* trailing NUL too */
103  NNdbt.data = (void *)newname;
104  NNdbt.size = strlen(newname) + 1; /* trailing NUL too */
105  Bdbt.data = (void *)b;
106  Bdbt.size = blen;
107  Ddbt.data = (void *)d;
108  Ddbt.size = dlen;
109  rc = logio_Rename_log(dbenv, _txn, &_lsn, DB_FLUSH, &ONdbt, &NNdbt, mode, &Bdbt, &Ddbt, dalgo);
110 if (_rpmlio_debug)
111 fprintf(stderr, "<== %s(%s, %s, 0%o, %p[%u], %p[%u], %u) rc %d\n", __FUNCTION__, oldname, newname, mode, b, (unsigned)blen, d, (unsigned)dlen, (unsigned)dalgo, rc);
112 #endif /* SUPPORT_FILE_ACID */
113  return rc;
114 }
115 
116 int rpmlioMkdir(rpmdb rpmdb, const char * dn, mode_t mode)
117 {
118  int rc = 0;
119 # if defined(SUPPORT_FILE_ACID)
120  extern int logio_Mkdir_log
121  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
122  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
123  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
124  DB_LSN _lsn = {0,0};
125  DBT DNdbt = {0};
126  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
127  DNdbt.data = (void *)dn;
128  DNdbt.size = strlen(dn) + 1; /* trailing NUL too */
129  rc = logio_Mkdir_log(dbenv, _txn, &_lsn, DB_FLUSH, &DNdbt, mode);
130 if (_rpmlio_debug)
131 fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, dn, mode, rc);
132 #endif /* SUPPORT_FILE_ACID */
133  return rc;
134 }
135 
136 int rpmlioRmdir(rpmdb rpmdb, const char * dn, mode_t mode)
137 {
138  int rc = 0;
139 # if defined(SUPPORT_FILE_ACID)
140  extern int logio_Rmdir_log
141  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
142  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
143  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
144  DB_LSN _lsn = {0,0};
145  DBT DNdbt = {0};
146  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
147  DNdbt.data = (void *)dn;
148  DNdbt.size = strlen(dn) + 1; /* trailing NUL too */
149  rc = logio_Rmdir_log(dbenv, _txn, &_lsn, DB_FLUSH, &DNdbt, mode);
150 if (_rpmlio_debug)
151 fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, dn, mode, rc);
152 #endif /* SUPPORT_FILE_ACID */
153  return rc;
154 }
155 
156 int rpmlioLsetfilecon(rpmdb rpmdb, const char * fn, const char * context)
157 {
158  int rc = 0;
159 # if defined(SUPPORT_FILE_ACID)
160  extern int logio_Lsetfilecon_log
161  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *));
162  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
163  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
164  DB_LSN _lsn = {0,0};
165  DBT FNdbt = {0};
166  DBT CONTEXTdbt = {0};
167  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
168  FNdbt.data = (void *)fn;
169  FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
170  if (context == NULL) context = ""; /* XXX prevent segfaults */
171 /*@-observertrans@*/
172  CONTEXTdbt.data = (void *)context;
173 /*@=observertrans@*/
174  CONTEXTdbt.size = strlen(context) + 1; /* trailing NUL too */
175  rc = logio_Lsetfilecon_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, &CONTEXTdbt);
176 if (_rpmlio_debug)
177 fprintf(stderr, "<== %s(%s, \"%s\") rc %d\n", __FUNCTION__, fn, context, rc);
178 #endif /* SUPPORT_FILE_ACID */
179  return rc;
180 }
181 
182 int rpmlioChown(rpmdb rpmdb, const char * fn, uid_t uid, gid_t gid)
183 {
184  int rc = 0;
185 # if defined(SUPPORT_FILE_ACID)
186  extern int logio_Chown_log
187  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, uid_t, gid_t));
188  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
189  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
190  DB_LSN _lsn = {0,0};
191  DBT FNdbt = {0};
192  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
193  FNdbt.data = (void *)fn;
194  FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
195  rc = logio_Chown_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, uid, gid);
196 if (_rpmlio_debug)
197 fprintf(stderr, "<== %s(%s, %u, %u) rc %d\n", __FUNCTION__, fn, (unsigned)uid, (unsigned)gid, rc);
198 #endif /* SUPPORT_FILE_ACID */
199  return rc;
200 }
201 
202 int rpmlioLchown(rpmdb rpmdb, const char * fn, uid_t uid, gid_t gid)
203 {
204  int rc = 0;
205 # if defined(SUPPORT_FILE_ACID)
206  extern int logio_Lchown_log
207  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, uid_t, gid_t));
208  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
209  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
210  DB_LSN _lsn = {0,0};
211  DBT FNdbt = {0};
212  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
213  FNdbt.data = (void *)fn;
214  FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
215  rc = logio_Lchown_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, uid, gid);
216 if (_rpmlio_debug)
217 fprintf(stderr, "<== %s(%s, %u, %u) rc %d\n", __FUNCTION__, fn, (unsigned)uid, (unsigned)gid, rc);
218 #endif /* SUPPORT_FILE_ACID */
219  return rc;
220 }
221 
222 int rpmlioChmod(rpmdb rpmdb, const char * fn, mode_t mode)
223 {
224  int rc = 0;
225 # if defined(SUPPORT_FILE_ACID)
226  extern int logio_Chmod_log
227  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
228  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
229  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
230  DB_LSN _lsn = {0,0};
231  DBT FNdbt = {0};
232  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
233  FNdbt.data = (void *)fn;
234  FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
235  rc = logio_Chmod_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode);
236 if (_rpmlio_debug)
237 fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, fn, mode, rc);
238 #endif /* SUPPORT_FILE_ACID */
239  return rc;
240 }
241 
242 int rpmlioUtime(rpmdb rpmdb, const char * fn, time_t actime, time_t modtime)
243 {
244  int rc = 0;
245 # if defined(SUPPORT_FILE_ACID)
246  extern int logio_Utime_log
247  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, time_t, time_t));
248  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
249  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
250  DB_LSN _lsn = {0,0};
251  DBT FNdbt = {0};
252  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
253  FNdbt.data = (void *)fn;
254  FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
255  rc = logio_Utime_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, actime, modtime);
256 if (_rpmlio_debug)
257 fprintf(stderr, "<== %s(%s, 0x%x, 0x%x) rc %d\n", __FUNCTION__, fn, (unsigned)actime, (unsigned)modtime, rc);
258 #endif /* SUPPORT_FILE_ACID */
259  return rc;
260 }
261 
262 int rpmlioSymlink(rpmdb rpmdb, const char * ln, const char * fn)
263 {
264  int rc = 0;
265 # if defined(SUPPORT_FILE_ACID)
266  extern int logio_Symlink_log
267  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *));
268  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
269  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
270  DB_LSN _lsn = {0,0};
271  DBT LNdbt = {0};
272  DBT FNdbt = {0};
273  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
274  LNdbt.data = (void *)ln;
275  LNdbt.size = strlen(ln) + 1; /* trailing NUL too */
276  FNdbt.data = (void *)fn;
277  FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
278  rc = logio_Symlink_log(dbenv, _txn, &_lsn, DB_FLUSH, &LNdbt, &FNdbt);
279 if (_rpmlio_debug)
280 fprintf(stderr, "<== %s(%s, %s) rc %d\n", __FUNCTION__, ln, fn, rc);
281 #endif /* SUPPORT_FILE_ACID */
282  return rc;
283 }
284 
285 int rpmlioLink(rpmdb rpmdb, const char * ln, const char * fn)
286 {
287  int rc = 0;
288 # if defined(SUPPORT_FILE_ACID)
289  extern int logio_Link_log
290  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *));
291  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
292  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
293  DB_LSN _lsn = {0,0};
294  DBT LNdbt = {0};
295  DBT FNdbt = {0};
296  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
297  LNdbt.data = (void *)ln;
298  LNdbt.size = strlen(ln) + 1; /* trailing NUL too */
299  FNdbt.data = (void *)fn;
300  FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
301  rc = logio_Link_log(dbenv, _txn, &_lsn, DB_FLUSH, &LNdbt, &FNdbt);
302 if (_rpmlio_debug)
303 fprintf(stderr, "<== %s(%s, %s) rc %d\n", __FUNCTION__, ln, fn, rc);
304 #endif /* SUPPORT_FILE_ACID */
305  return rc;
306 }
307 
308 int rpmlioMknod(rpmdb rpmdb, const char * fn, mode_t mode, dev_t dev)
309 {
310  int rc = 0;
311 # if defined(SUPPORT_FILE_ACID)
312  extern int logio_Mknod_log
313  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t, dev_t));
314  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
315  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
316  DB_LSN _lsn = {0,0};
317  DBT FNdbt = {0};
318  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
319  FNdbt.data = (void *)fn;
320  FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
321  rc = logio_Mknod_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode, dev);
322 if (_rpmlio_debug)
323 fprintf(stderr, "<== %s(%s, 0%o, 0x%x) rc %d\n", __FUNCTION__, fn, mode, (unsigned)dev, rc);
324 #endif /* SUPPORT_FILE_ACID */
325  return rc;
326 }
327 
328 int rpmlioMkfifo(rpmdb rpmdb, const char * fn, mode_t mode)
329 {
330  int rc = 0;
331 # if defined(SUPPORT_FILE_ACID)
332  extern int logio_Mkfifo_log
333  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
334  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
335  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
336  DB_LSN _lsn = {0,0};
337  DBT FNdbt = {0};
338  if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
339  FNdbt.data = (void *)fn;
340  FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
341  rc = logio_Mkfifo_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode);
342 if (_rpmlio_debug)
343 fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, fn, mode, rc);
344 #endif /* SUPPORT_FILE_ACID */
345  return rc;
346 }
347 
348 int rpmlioPrein(rpmdb rpmdb, const char ** av, const char * body)
349 {
350  int rc = 0;
351 # if defined(SUPPORT_FILE_ACID)
352  const char * cmd = argvJoin(av, ' ');
353  extern int logio_Prein_log
354  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *));
355  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
356  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
357  DB_LSN _lsn = {0,0};
358  DBT AVdbt = {0};
359  DBT BODYdbt = {0};
360  if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
361  AVdbt.data = (void *)cmd;
362  AVdbt.size = strlen(cmd) + 1; /* trailing NUL too */
363  BODYdbt.data = (void *)body;
364  BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
365  rc = logio_Prein_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
366 if (_rpmlio_debug)
367 fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
368  cmd = _free(cmd);
369 #endif /* SUPPORT_FILE_ACID */
370  return rc;
371 }
372 
373 int rpmlioPostin(rpmdb rpmdb, const char ** av, const char * body)
374 {
375  int rc = 0;
376 # if defined(SUPPORT_FILE_ACID)
377  const char * cmd = argvJoin(av, ' ');
378  extern int logio_Postin_log
379  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *));
380  DB_ENV * dbenv = rpmdb->db_dbenv;
381  DB_TXN * _txn = rpmdb->db_txn;
382  DB_LSN _lsn = {0,0};
383  DBT AVdbt = {0};
384  DBT BODYdbt = {0};
385  if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
386  AVdbt.data = (void *)cmd;
387  AVdbt.size = strlen(cmd) + 1; /* trailing NUL too */
388  BODYdbt.data = (void *)body;
389  BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
390  rc = logio_Postin_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
391 if (_rpmlio_debug)
392 fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
393  cmd = _free(cmd);
394 #endif /* SUPPORT_FILE_ACID */
395  return rc;
396 }
397 
398 int rpmlioPreun(rpmdb rpmdb, const char ** av, const char * body)
399 {
400  int rc = 0;
401 # if defined(SUPPORT_FILE_ACID)
402  const char * cmd = argvJoin(av, ' ');
403  extern int logio_Preun_log
404  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *));
405  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
406  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
407  DB_LSN _lsn = {0,0};
408  DBT AVdbt = {0};
409  DBT BODYdbt = {0};
410  if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
411  AVdbt.data = (void *)cmd;
412  AVdbt.size = strlen(cmd) + 1; /* trailing NUL too */
413  BODYdbt.data = (void *)body;
414  BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
415  rc = logio_Preun_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
416 if (_rpmlio_debug)
417 fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
418  cmd = _free(cmd);
419 #endif /* SUPPORT_FILE_ACID */
420  return rc;
421 }
422 
423 int rpmlioPostun(rpmdb rpmdb, const char ** av, const char * body)
424 {
425  int rc = 0;
426 # if defined(SUPPORT_FILE_ACID)
427  const char * cmd = argvJoin(av, ' ');
428  extern int logio_Postun_log
429  __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *));
430  DB_ENV * dbenv = (rpmdb ? rpmdb->db_dbenv : NULL);
431  DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL);
432  DB_LSN _lsn = {0,0};
433  DBT AVdbt = {0};
434  DBT BODYdbt = {0};
435  if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
436  AVdbt.data = (void *)cmd;
437  AVdbt.size = strlen(cmd) + 1; /* trailing NUL too */
438  BODYdbt.data = (void *)body;
439  BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
440  rc = logio_Postun_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
441 if (_rpmlio_debug)
442 fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
443  cmd = _free(cmd);
444 #endif /* SUPPORT_FILE_ACID */
445  return rc;
446 }
const bson * b
Definition: bson.h:280
const char const double d
Definition: bson.h:800
int rpmlioRename(rpmdb rpmdb, const char *oldname, const char *newname, mode_t mode, const uint8_t *b, size_t blen, const uint8_t *d, size_t dlen, uint32_t dalgo)
Definition: rpmlio.c:84
const char const char * cmd
Definition: mongo.h:777
int rpmlioPrein(rpmdb rpmdb, const char **av, const char *body)
Definition: rpmlio.c:348
int rpmlioPreun(rpmdb rpmdb, const char **av, const char *body)
Definition: rpmlio.c:398
int rpmlioPostin(rpmdb rpmdb, const char **av, const char *body)
Definition: rpmlio.c:373
int rpmlioMkfifo(rpmdb rpmdb, const char *fn, mode_t mode)
Definition: rpmlio.c:328
int rpmlioLink(rpmdb rpmdb, const char *ln, const char *fn)
Definition: rpmlio.c:285
int rpmlioRmdir(rpmdb rpmdb, const char *dn, mode_t mode)
Definition: rpmlio.c:136
char * argvJoin(ARGV_t argv, char sep)
Concatenate an argv array into a string.
Definition: argv.c:274
int rpmlioMknod(rpmdb rpmdb, const char *fn, mode_t mode, dev_t dev)
Definition: rpmlio.c:308
void * data
Definition: db_emu.h:22
int rpmlioCreat(rpmdb rpmdb, const char *fn, mode_t mode, const uint8_t *b, size_t blen, const uint8_t *d, size_t dlen, uint32_t dalgo)
Definition: rpmlio.c:28
const char * mode
Definition: mongo.h:440
#define __P(protos)
Definition: glob.h:45
int rpmlioChown(rpmdb rpmdb, const char *fn, uid_t uid, gid_t gid)
Definition: rpmlio.c:182
int rpmlioUnlink(rpmdb rpmdb, const char *fn, mode_t mode, const uint8_t *b, size_t blen, const uint8_t *d, size_t dlen, uint32_t dalgo)
Definition: rpmlio.c:56
int rpmlioLsetfilecon(rpmdb rpmdb, const char *fn, const char *context)
Definition: rpmlio.c:156
struct rpmdb_s * rpmdb
Database of headers and tag value indices.
Definition: rpmtypes.h:43
int rpmlioPostun(rpmdb rpmdb, const char **av, const char *body)
Definition: rpmlio.c:423
uint32_t size
Definition: db_emu.h:23
int rpmlioLchown(rpmdb rpmdb, const char *fn, uid_t uid, gid_t gid)
Definition: rpmlio.c:202
int rpmlioUtime(rpmdb rpmdb, const char *fn, time_t actime, time_t modtime)
Definition: rpmlio.c:242
int rpmlioChmod(rpmdb rpmdb, const char *fn, mode_t mode)
Definition: rpmlio.c:222
static void * _free(const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
Definition: rpmiotypes.h:756
int rpmlioSymlink(rpmdb rpmdb, const char *ln, const char *fn)
Definition: rpmlio.c:262
int _rpmlio_debug
Definition: rpmlio.c:19
Access RPM indices using Berkeley DB interface(s).
int rpmlioMkdir(rpmdb rpmdb, const char *dn, mode_t mode)
Definition: rpmlio.c:116