~ubuntu-branches/ubuntu/maverick/apt/maverick-security

« back to all changes in this revision

Viewing changes to apt-pkg/init.cc

  • Committer: Bazaar Package Importer
  • Author(s): Jason Gunthorpe
  • Date: 2001-08-18 17:21:59 UTC
  • Revision ID: james.westby@ubuntu.com-20010818172159-85f7g43wdzi9dwb5
Tags: 0.5.4
* M68k config.guess patch. Closes: #88913
* Bi-yearly test on OpenBSD and Solaris
* Doc updates. Closes: #89121, #89854, #99671, #98353, #95823, #93057,
        #97520, #102867, #101071, #102421, #101565, #98272, #106914,
        #105606, #105377
* Various cosmetic code updates. Closes: #89066, #89066, #89152
* Add "pre-auto" as an option for DSelect::Clean (run autoclean after
  update).
* More patches from Alfredo for Vendors and more SHA-1 stuff
* Fix for AJ's 'desire to remove perl-5.005' and possibly other
  similar situations. Closes: #56708, #59432
* no_proxy and ftp. Closes: #89671
* Philippe Batailler's man page patches.
* Fix for display bug. Closes: #92033, #93652, #98468
* Use more than 16bits for the dep ID. Some people ran out..
  Closes: #103020, #97809, #102951, #99974, #107362, #107395, #107362,
          #106911, #107395, #108968
* Reordered some things to make dante and FTP happier. Closes: #92757
* James R. Van Zandt's guide.sgml updates. Closes: #90027
* apt-ftparchive copes with no uncompressed package files + contents.
* French man pages from philippe batailler - well sort of. They 
  don't build yet..
* run-parts. Closes: #94286
* 'apt-cache policy' preferences debug tool.
* Whatever. Closes: #89762
* libstdc++ and HURD. Closes: #92025
* More apt-utils verbage. Closes: #86954
* Fliped comparision operator. Closes: #94618
* Used the right copyright file. Closes: #65691
* Randolph's G++3 patches. 
* Fixed no_proxy tokanizing. Closes: #100046
* Strip Config-Version when copying status to available. Closes: #97520
* Segfault with missing source files. Closes: #100325
* EINTR check. Closes: #102293
* Various changes to the locking metholodgy for --print-uris. 
  Closes: #100590
* Lame LD_LIBRARY_PATH thing. Closes: #98928
* apt-cache search searchs provide names too now. Closes: #98695
* Checksum and long lines problem. Closes: #106591
* .aptignr and empty files are just a warning. Closes: #97364  

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// -*- mode: cpp; mode: fold -*-
 
2
// Description                                                          /*{{{*/
 
3
// $Id: init.cc,v 1.16 2001/03/13 06:51:46 jgg Exp $
 
4
/* ######################################################################
 
5
 
 
6
   Init - Initialize the package library
 
7
   
 
8
   ##################################################################### */
 
9
                                                                        /*}}}*/
 
10
// Include files                                                        /*{{{*/
 
11
#include <apt-pkg/init.h>
 
12
#include <apt-pkg/fileutl.h>
 
13
#include <apt-pkg/error.h>
 
14
 
 
15
#include <apti18n.h>
 
16
#include <config.h>
 
17
#include <sys/stat.h>
 
18
                                                                        /*}}}*/
 
19
 
 
20
#define Stringfy_(x) # x
 
21
#define Stringfy(x)  Stringfy_(x)
 
22
const char *pkgVersion = VERSION;
 
23
const char *pkgLibVersion = Stringfy(APT_PKG_MAJOR) "."
 
24
                            Stringfy(APT_PKG_MINOR) "." 
 
25
                            Stringfy(APT_PKG_RELEASE);
 
26
const char *pkgCPU = COMMON_CPU;
 
27
const char *pkgOS = COMMON_OS;
 
28
    
 
29
// pkgInitConfig - Initialize the configuration class                   /*{{{*/
 
30
// ---------------------------------------------------------------------
 
31
/* Directories are specified in such a way that the FindDir function will
 
32
   understand them. That is, if they don't start with a / then their parent
 
33
   is prepended, this allows a fair degree of flexability. */
 
34
bool pkgInitConfig(Configuration &Cnf)
 
35
{
 
36
   // General APT things
 
37
   if (strcmp(COMMON_OS,"linux") == 0 ||
 
38
       strcmp(COMMON_OS,"unknown") == 0)
 
39
      Cnf.Set("APT::Architecture",COMMON_CPU);
 
40
   else
 
41
      Cnf.Set("APT::Architecture",COMMON_OS "-" COMMON_CPU);
 
42
   Cnf.Set("Dir","/");
 
43
   
 
44
   // State   
 
45
   Cnf.Set("Dir::State","var/lib/apt/");
 
46
   
 
47
   /* Just in case something goes horribly wrong, we can fall back to the
 
48
      old /var/state paths.. */
 
49
   struct stat St;   
 
50
   if (stat("/var/lib/apt/.",&St) != 0 &&
 
51
       stat("/var/state/apt/.",&St) == 0)
 
52
      Cnf.Set("Dir::State","var/state/apt/");
 
53
       
 
54
   Cnf.Set("Dir::State::lists","lists/");
 
55
   Cnf.Set("Dir::State::cdroms","cdroms.list");
 
56
   
 
57
   // Cache
 
58
   Cnf.Set("Dir::Cache","var/cache/apt/");
 
59
   Cnf.Set("Dir::Cache::archives","archives/");
 
60
   Cnf.Set("Dir::Cache::srcpkgcache","srcpkgcache.bin");
 
61
   Cnf.Set("Dir::Cache::pkgcache","pkgcache.bin");
 
62
   
 
63
   // Configuration
 
64
   Cnf.Set("Dir::Etc","etc/apt/");
 
65
   Cnf.Set("Dir::Etc::sourcelist","sources.list");
 
66
   Cnf.Set("Dir::Etc::vendorlist","vendors.list");
 
67
   Cnf.Set("Dir::Etc::vendorparts","vendors.list.d");
 
68
   Cnf.Set("Dir::Etc::main","apt.conf");
 
69
   Cnf.Set("Dir::Etc::parts","apt.conf.d");
 
70
   Cnf.Set("Dir::Etc::preferences","preferences");
 
71
   Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods");
 
72
              
 
73
   bool Res = true;
 
74
   
 
75
   // Read an alternate config file
 
76
   const char *Cfg = getenv("APT_CONFIG");
 
77
   if (Cfg != 0 && FileExists(Cfg) == true)
 
78
      Res &= ReadConfigFile(Cnf,Cfg);
 
79
   
 
80
   // Read the configuration parts dir
 
81
   string Parts = Cnf.FindDir("Dir::Etc::parts");
 
82
   if (FileExists(Parts) == true)
 
83
      Res &= ReadConfigDir(Cnf,Parts);
 
84
      
 
85
   // Read the main config file
 
86
   string FName = Cnf.FindFile("Dir::Etc::main");
 
87
   if (FileExists(FName) == true)
 
88
      Res &= ReadConfigFile(Cnf,FName);
 
89
   
 
90
   if (Res == false)
 
91
      return false;
 
92
   
 
93
   if (Cnf.FindB("Debug::pkgInitConfig",false) == true)
 
94
      Cnf.Dump();
 
95
      
 
96
   return true;
 
97
}
 
98
                                                                        /*}}}*/
 
99
// pkgInitSystem - Initialize the _system calss                         /*{{{*/
 
100
// ---------------------------------------------------------------------
 
101
/* */
 
102
bool pkgInitSystem(Configuration &Cnf,pkgSystem *&Sys)
 
103
{
 
104
   Sys = 0;
 
105
   string Label = Cnf.Find("Apt::System","");
 
106
   if (Label.empty() == false)
 
107
   {
 
108
      Sys = pkgSystem::GetSystem(Label.c_str());
 
109
      if (Sys == 0)
 
110
         return _error->Error(_("Packaging system '%s' is not supported"),Label.c_str());
 
111
   }
 
112
   else
 
113
   {
 
114
      signed MaxScore = 0;
 
115
      for (unsigned I = 0; I != pkgSystem::GlobalListLen; I++)
 
116
      {
 
117
         signed Score = pkgSystem::GlobalList[I]->Score(Cnf);
 
118
         if (Score > MaxScore)
 
119
         {
 
120
            MaxScore = Score;
 
121
            Sys = pkgSystem::GlobalList[I];
 
122
         }
 
123
      }
 
124
      
 
125
      if (Sys == 0)
 
126
         return _error->Error(_("Unable to determine a suitable system type"));
 
127
   }
 
128
   
 
129
   return Sys->Initialize(Cnf);
 
130
}
 
131
                                                                        /*}}}*/