]> cygwin.com Git - cygwin-apps/setup.git/blame - cygpackage.cc
2002-07-05 Robert Collins <rbtcollins@hotmail.com>
[cygwin-apps/setup.git] / cygpackage.cc
CommitLineData
7939f6d1
RC
1/*
2 * Copyright (c) 2001, Robert Collins.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * A copy of the GNU General Public License can be found at
10 * http://www.gnu.org/
11 *
12 * Written by Robert Collins <rbtcollins@hotmail.com>
13 *
14 */
15
16/* this is the parent class for all package operations.
17 */
18
19#if 0
20static const char *cvsid =
21 "\n%%% $Id$\n";
22#endif
23
3c196821 24#include "cygpackage.h"
7939f6d1
RC
25#include <stdio.h>
26#include <stdlib.h>
27#include <unistd.h>
3c054baf 28#include "String++.h"
7b606ae5 29
7939f6d1
RC
30#include "io_stream.h"
31#include "compress.h"
7b606ae5 32
fa0c0d10 33#include "package_version.h"
7939f6d1
RC
34#include "cygpackage.h"
35
bb849dbd 36/* this constructor creates an invalid package - further details MUST be provided */
3c196821
RC
37cygpackage::cygpackage ():
38name (),
076654e7
RC
39vendor (),
40packagev (),
41canonical (),
42fn (),
43sdesc (),
44ldesc (),
7b606ae5
RC
45status (package_installed),
46type (package_binary),
076654e7
RC
47listdata (),
48listfile ()
7939f6d1 49{
bb849dbd
RC
50 memset( getfilenamebuffer, '\0', _MAX_PATH);
51
7939f6d1
RC
52 /* FIXME: query the install database for the currently installed
53 * version details
54 */
55}
56
3c196821
RC
57packageversion
58cygpackage::createInstance (String const &pkgname)
7939f6d1 59{
3c196821
RC
60 cygpackage *temp = new cygpackage;
61 temp->name = pkgname;
62 return packageversion(temp);
63}
64
65packageversion
66cygpackage::createInstance (String const &pkgname, String const &filename,
67 size_t const fs, String const &version,
68 package_status_t const newstatus,
69 package_type_t const newtype)
70{
71 cygpackage *temp = new cygpackage;
72 temp->name = pkgname;
73 temp->fn = filename;
74 temp->status = newstatus;
75 temp->type = newtype;
76 temp->filesize = fs;
77 temp->setCanonicalVersion (version);
78 return packageversion(temp);
bb849dbd 79}
7939f6d1 80
bb849dbd
RC
81/* tell the version */
82void
3c196821 83cygpackage::setCanonicalVersion (String const &version)
bb849dbd 84{
3c054baf
RC
85 canonical = version;
86 char *start = strchr (canonical.cstr_oneuse(), '-');
87 char*curr=start;
7939f6d1 88 if (curr)
7b606ae5
RC
89 {
90 char *next;
91 while ((next = strchr (curr + 1, '-')))
92 curr = next;
93 /* curr = last - in the version string */
3c054baf
RC
94 packagev = curr + 1;
95 char tvendor [version.size() +1];
96 strcpy (tvendor, version.cstr_oneuse());
97 tvendor[curr - start] = '\0';
98 vendor=tvendor;
7b606ae5 99 }
7939f6d1 100 else
7b606ae5
RC
101 {
102 packagev = 0;
3c054baf 103 vendor = version;
7b606ae5 104 }
7939f6d1
RC
105}
106
107cygpackage::~cygpackage ()
108{
bb849dbd 109 destroy ();
7939f6d1
RC
110}
111
112/* helper functions */
113
114void
115cygpackage::destroy ()
116{
7939f6d1
RC
117}
118
3c054baf 119String const
7939f6d1
RC
120cygpackage::getfirstfile ()
121{
122 if (listdata)
123 delete listdata;
7b606ae5 124 listfile =
3c054baf 125 io_stream::open (String ("cygfile:///etc/setup/") + name + ".lst.gz", "rb");
7939f6d1 126 listdata = compress::decompress (listfile);
7939f6d1 127 if (!listdata)
aa1e3b4d 128 return String();
bb849dbd 129 return listdata->gets (getfilenamebuffer, sizeof (getfilenamebuffer));
7939f6d1
RC
130}
131
3c054baf 132String const
7939f6d1
RC
133cygpackage::getnextfile ()
134{
135 if (listdata)
bb849dbd 136 return listdata->gets (getfilenamebuffer, sizeof (getfilenamebuffer));
aa1e3b4d 137 return String();
7939f6d1
RC
138}
139
fa0c0d10
RC
140void
141cygpackage::uninstall ()
142{
143 if (listdata)
144 delete listdata;
145 listdata = 0;
3c054baf 146 io_stream::remove (String("cygfile:///etc/setup/") + name + ".lst.gz");
fa0c0d10 147}
7939f6d1 148
3c054baf 149String const
7939f6d1
RC
150cygpackage::Name ()
151{
152 return name;
153}
154
3c054baf 155String const
7939f6d1
RC
156cygpackage::Vendor_version ()
157{
158 return vendor;
159}
160
3c054baf 161String const
7939f6d1
RC
162cygpackage::Package_version ()
163{
164 return packagev;
165}
166
3c054baf 167String const
bb849dbd
RC
168cygpackage::Canonical_version ()
169{
170 return canonical;
171}
172
173void
3c054baf 174cygpackage::set_sdesc (String const &desc)
bb849dbd 175{
3c054baf 176 sdesc = desc;
bb849dbd
RC
177}
178
179void
3c054baf 180cygpackage::set_ldesc (String const &desc)
bb849dbd 181{
3c054baf 182 ldesc = desc;
bb849dbd
RC
183}
184
7939f6d1 185#if 0
bb849dbd 186package_stability_t cygpackage::Stability ()
7939f6d1
RC
187{
188 return stability;
189}
190#endif
This page took 0.044837 seconds and 5 git commands to generate.