awful debugging hacking
[dpkg] / src / archives.h
CommitLineData
1479465f
GJ
1/*
2 * dpkg - main program for package management
3 * archives.h - functions common to archives.c and unpack.c
4 *
5 * Copyright © 1995 Ian Jackson <ijackson@chiark.greenend.org.uk>
6 * Copyright © 2008-2013, 2015 Guillem Jover <guillem@debian.org>
7 *
8 * This is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
22#ifndef ARCHIVES_H
23#define ARCHIVES_H
24
25#include <stdbool.h>
26
27#include <dpkg/tarfn.h>
28
29struct tarcontext {
30 int backendpipe;
31 struct pkginfo *pkg;
32 /** A queue of filenamenode that have been extracted anew. */
33 struct filenamenode_queue *newfiles_queue;
34 /** Are all “Multi-arch: same” instances about to be in sync? */
35 bool pkgset_getting_in_sync;
36};
37
38struct pkg_deconf_list {
39 struct pkg_deconf_list *next;
40 struct pkginfo *pkg;
41 struct pkginfo *pkg_removal;
42};
43
44extern struct varbuf_state fname_state;
45extern struct varbuf fnamevb;
46extern struct varbuf fnametmpvb;
47extern struct varbuf fnamenewvb;
48extern struct pkg_deconf_list *deconfigure;
49
50void clear_deconfigure_queue(void);
51void enqueue_deconfigure(struct pkginfo *pkg, struct pkginfo *pkg_removal);
52void enqueue_conflictor(struct pkginfo *pkg);
53
54void cu_pathname(int argc, void **argv);
55void cu_cidir(int argc, void **argv);
56void cu_fileslist(int argc, void **argv);
57void cu_backendpipe(int argc, void **argv);
58
59void cu_installnew(int argc, void **argv);
60
61void cu_prermupgrade(int argc, void **argv);
62void cu_prerminfavour(int argc, void **argv);
63void cu_preinstverynew(int argc, void **argv);
64void cu_preinstnew(int argc, void **argv);
65void cu_preinstupgrade(int argc, void **argv);
66void cu_postrmupgrade(int argc, void **argv);
67
68void cu_prermdeconfigure(int argc, void **argv);
69void ok_prermdeconfigure(int argc, void **argv);
70
71void setupfnamevbs(const char *filename);
72
73int tarobject(void *ctx, struct tar_entry *ti);
74int tarfileread(void *ud, char *buf, int len);
75void tar_deferred_extract(struct fileinlist *files, struct pkginfo *pkg);
76
77struct fileinlist *
78tar_filenamenode_queue_push(struct filenamenode_queue *queue,
79 struct filenamenode *namenode);
80
81bool filesavespackage(struct fileinlist *, struct pkginfo *,
82 struct pkginfo *pkgbeinginstalled);
83
84void check_conflict(struct dependency *dep, struct pkginfo *pkg,
85 const char *pfilename);
86void check_breaks(struct dependency *dep, struct pkginfo *pkg,
87 const char *pfilename);
88
89extern int cleanup_pkg_failed, cleanup_conflictor_failed;
90
91#endif /* ARCHIVES_H */