]> cygwin.com Git - cygwin-apps/setup.git/blob - package_source.h
2001-12-02 Robert Collins <rbtcollins@hotmail.com>
[cygwin-apps/setup.git] / package_source.h
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 source (not source code - installation
17 * source as in http/ftp/disk file) operations.
18 */
19
20 #ifndef _PACKAGE_SOURCE_H_
21 #define _PACKAGE_SOURCE_H_
22
23 /* required to parse this file */
24 #include "list.h"
25 #include "strings.h"
26
27 /* standard binary package metadata:
28 * Name (ie mutt
29 * Vendor Version (ie 2.5.1)
30 * Package Version (ie 16)
31 * Stability
32 * Files
33 */
34
35 /* For non installed files, this class can be populated via information about
36 * what is available on the net, or by parsing a specific package file.
37 * for installed packages, this class should represent what is currently installed,
38 * - updated by what net metadata has about it.
39 * i.e. the stability of this version will change simply because the net mirrors
40 * now consider it old.
41 */
42
43 class site
44 {
45 public:
46 site (char const *newkey)
47 {
48 key = new char[strlen (newkey + 1)];
49 strcpy (key, newkey);
50 };
51 ~site ()
52 {
53 if (key)
54 delete[] key;
55 };
56 char *key;
57 };
58
59 class packagesource
60 {
61 public:
62 packagesource ():size (0), canonical (0), base (0), filename (0), cached (0)
63 {
64 };
65 /* how big is the source file */
66 size_t size;
67 /* The canonical name - the complete path to the source file
68 * i.e. foo/bar/package-1.tar.bz2
69 */
70 virtual const char *Canonical ()
71 {
72 return canonical;
73 };
74 /* The basename - without extention
75 * i.e. package-1
76 */
77 virtual const char *Base ()
78 {
79 return base;
80 };
81 /* The basename - with extention
82 * i.e. package-1.tar.bz2
83 */
84 virtual const char *Filename ()
85 {
86 return filename;
87 };
88 /* what is the cached filename, to prevent directory scanning during install */
89 virtual char const *Cached ()
90 {
91 return cached;
92 };
93 /* sets the canonical path, and parses and creates base and filename */
94 virtual void set_canonical (char const *);
95 virtual void set_cached (char const *);
96 list < site, char const *, strcasecmp > sites;
97
98 virtual ~ packagesource ()
99 {
100 if (canonical)
101 delete canonical;
102 if (base)
103 delete base;
104 if (filename)
105 delete filename;
106 if (cached)
107 delete cached;
108 };
109
110 private:
111 char *canonical;
112 char *base;
113 char *filename;
114 char *cached;
115 };
116
117 #endif /* _PACKAGE_SOURCE_H_ */
This page took 0.044853 seconds and 6 git commands to generate.