libdpkg: Deindent an else clause
[dpkg.git] / src / main / update.c
blob4a9a95b5b72c333707289357fa6e789408f65dfb
1 /*
2 * dpkg - main program for package management
3 * update.c - options which update the ‘available’ database
5 * Copyright © 1995 Ian Jackson <ijackson@chiark.greenend.org.uk>
7 * This is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 #include <config.h>
22 #include <compat.h>
24 #include <errno.h>
25 #include <string.h>
26 #include <unistd.h>
27 #include <stdlib.h>
28 #include <stdio.h>
30 #include <dpkg/i18n.h>
31 #include <dpkg/dpkg.h>
32 #include <dpkg/dpkg-db.h>
33 #include <dpkg/options.h>
35 #include "main.h"
37 int
38 updateavailable(const char *const *argv)
40 const char *sourcefile= argv[0];
41 char *availfile;
42 int count= 0;
44 modstatdb_init();
46 switch (cipaction->arg_int) {
47 case act_avclear:
48 if (sourcefile) badusage(_("--%s takes no arguments"),cipaction->olong);
49 break;
50 case act_avreplace: case act_avmerge:
51 if (sourcefile == NULL)
52 sourcefile = "-";
53 else if (argv[1])
54 badusage(_("--%s takes at most one Packages-file argument"),
55 cipaction->olong);
56 break;
57 default:
58 internerr("unknown action '%d'", cipaction->arg_int);
61 if (!f_noact) {
62 const char *dbdir = dpkg_db_get_dir();
64 if (access(dbdir, W_OK)) {
65 if (errno != EACCES)
66 ohshite(_("unable to access dpkg database directory '%s' for bulk available update"),
67 dbdir);
68 else
69 ohshit(_("required write access to dpkg database directory '%s' for bulk available update"),
70 dbdir);
72 modstatdb_lock();
75 switch (cipaction->arg_int) {
76 case act_avreplace:
77 printf(_("Replacing available packages info, using %s.\n"),sourcefile);
78 break;
79 case act_avmerge:
80 printf(_("Updating available packages info, using %s.\n"),sourcefile);
81 break;
82 case act_avclear:
83 break;
84 default:
85 internerr("unknown action '%d'", cipaction->arg_int);
88 availfile = dpkg_db_get_path(AVAILFILE);
90 if (cipaction->arg_int == act_avmerge)
91 parsedb(availfile, pdb_parse_available, NULL);
93 if (cipaction->arg_int != act_avclear)
94 count += parsedb(sourcefile,
95 pdb_parse_available | pdb_ignoreolder | pdb_dash_is_stdin,
96 NULL);
98 if (!f_noact) {
99 writedb(availfile, wdb_dump_available);
100 modstatdb_unlock();
103 free(availfile);
105 if (cipaction->arg_int != act_avclear)
106 printf(P_("Information about %d package was updated.\n",
107 "Information about %d packages was updated.\n", count), count);
109 modstatdb_done();
111 return 0;
115 forgetold(const char *const *argv)
117 if (*argv)
118 badusage(_("--%s takes no arguments"), cipaction->olong);
120 warning(_("obsolete '--%s' option; unavailable packages are automatically cleaned up"),
121 cipaction->olong);
123 return 0;