Annotation of rpm2html/rpmdata.h, revision 1.22
1.1 veillard 1: /*
2: * rpmdata.h : describes the data gathered for each RPM analyzed.
3: *
1.12 veillard 4: * Copyright (c) 1997 Daniel Veillard <veillard@apocalypse.org>
1.10 veillard 5: * See COPYING for the status of this software.
1.1 veillard 6: *
1.22 ! veillard 7: * $Id: rpmdata.h,v 1.21 1998/03/11 06:22:40 veillard Exp $
1.1 veillard 8: */
9:
10: #ifndef __RPMDATA_H__
11: #define __RPMDATA_H__
12:
13: #include <rpm/header.h>
14:
15: /*
1.6 veillard 16: * Structure associated to a local directory containing RPM files.
17: */
18:
1.20 veillard 19: #define MAX_URLS 256
1.16 veillard 20: #define MAX_ARCHS (sizeof(int) * 8)
1.6 veillard 21:
22: typedef struct rpm_dir {
23: struct rpm_dir *next; /* next in list */
1.14 veillard 24: char *color; /* The bgcolor for the pages :-) */
25: char *dir; /* where to store the HTML files */
1.21 veillard 26: char *subdir; /* subdirectory for multiple archive */
1.8 veillard 27: char *ftp; /* The host URL it's mirrored from */
28: char *ftpsrc; /* The host URL where src.rpm can be found */
1.14 veillard 29: char *host; /* Hostname for the server */
30: char *mail; /* mail contact for this directory */
31: char *maint; /* Maintainer name for this directory */
32: char *name; /* Name for this repository */
33: char *rpmdir; /* The local repository */
1.6 veillard 34: char *trust; /* Confidences in the files */
1.14 veillard 35: char *url; /* The output URL */
36: int files; /* number of files */
37: int installbase; /* Is this from an installed base */
38: int size; /* aggregated size of files */
39: int nb_mirrors; /* numbers of mirrors */
40: char *mirrors[MAX_URLS]; /* Urls for download */
1.6 veillard 41: } rpmDir, *rpmDirPtr;
42:
43: /*
1.22 ! veillard 44: * Structure associated to a local directory containing HTML files.
! 45: * We build a tree providing an actual map of the generated site.
! 46: */
! 47:
! 48: #define MAX_SUB_DIRECTORIES 50
! 49: typedef struct rpm_subdir {
! 50: struct rpm_subdir *parent; /* Parent directory ususally .. */
! 51: char *name; /* subdirectory name */
! 52: char *color; /* Color for the HTML output */
! 53: char *htmlpath; /* full path w.r.t. rpm2html_url */
! 54: char *rpmpath; /* full path w.r.t. rpm2html_dir */
! 55: int nb_subdirs; /* number of subdirectories */
! 56: /* list of the subdirectories */
! 57: struct rpm_subdir *subdirs[MAX_SUB_DIRECTORIES];
! 58: } rpmSubdir, *rpmSubdirPtr;
! 59:
! 60: /*
1.13 veillard 61: * structure associated with an architecture.
62: */
63:
64: typedef struct rpm_arch {
65: struct rpm_arch *next; /* next in the list */
66: char *os; /* the Operating System name */
67: char *arch; /* the CPU architecture */
68: } rpmArch, *rpmArchPtr;
69:
70: /*
1.1 veillard 71: * structure associated with an rpm
72: */
73:
1.20 veillard 74: #define MAX_RES 64
75: #define MAX_REQU 64
1.1 veillard 76:
77: typedef struct rpm_data {
1.16 veillard 78: struct rpm_data *next; /* next in the full list of RPMs */
79: struct rpm_data *nextSoft; /* next software */
80: struct rpm_data *nextArch; /* RPM for same software on other archs */
81: struct rpm_data *nextHash; /* next in the hash list */
1.6 veillard 82: rpmDirPtr dir; /* directory infos */
1.18 veillard 83: char *subdir; /* subdirectory holding the rpm */
1.2 veillard 84: char *filename; /* name of the file */
1.1 veillard 85: char *name; /* name of the software */
86: char *version; /* version of the software */
87: char *release; /* software release */
1.8 veillard 88: char *url; /* URL for the software */
1.16 veillard 89: char *arch; /* the architecture system */
1.8 veillard 90: char *os; /* the target system */
1.1 veillard 91: char *distribution; /* general OS distribution */
92: char *vendor; /* general OS vendor */
1.8 veillard 93: char *packager; /* the packager */
1.1 veillard 94: char *group; /* type of software */
1.2 veillard 95: char *summary; /* 1 line summary */
96: char *description; /* short description */
1.8 veillard 97: char *copyright; /* software copyright */
1.20 veillard 98: char *changelog; /* changelog */
1.2 veillard 99: char *srcrpm; /* source RPM */
100: time_t date; /* date of packaging */
1.17 veillard 101: time_t stamp; /* modification file of the archive */
1.1 veillard 102: int_32 size; /* size of the software */
103: char *host; /* build host */
1.19 veillard 104: int nb_resources; /* #of resources provided */
105: struct rpm_resource *
106: resources[MAX_RES + 1];/* list of them */
107: int nb_requires; /* #of resources required */
108: struct rpm_resource *
1.4 veillard 109: requires[MAX_REQU]; /* list of them */
1.5 veillard 110: char *filelist; /* the filelist */
1.1 veillard 111: } rpmData, *rpmDataPtr;
112:
113: /*
114: * structure associated with a resource
115: */
116:
1.15 veillard 117: #define MAX_PROVIDE 75
1.1 veillard 118:
1.19 veillard 119: typedef struct rpm_resource {
120: struct rpm_resource *next; /* next in the list */
121: char *name; /* name of the resource */
122: int nb_provider; /* #of resources provided */
1.17 veillard 123: time_t stamp; /* max stamp of the provider */
1.1 veillard 124: struct rpm_data *
125: provider[MAX_PROVIDE];/* list of them */
126: } rpmRess, *rpmRessPtr;
127:
128:
1.16 veillard 129: extern const char *archNames[MAX_ARCHS];
130: extern int nbArchs;
131:
1.1 veillard 132: extern rpmDataPtr rpmList;
1.16 veillard 133: extern rpmDataPtr rpmSoftwareList; /* avoid different archs clash */
1.1 veillard 134: extern rpmRessPtr ressList;
1.13 veillard 135: extern rpmArchPtr archList;
1.12 veillard 136: extern rpmDataPtr rpmInstalledList;
137: extern rpmRessPtr ressInstalledList;
1.6 veillard 138: extern rpmDirPtr dirList;
1.22 ! veillard 139: extern rpmSubdirPtr dirTree;
! 140:
! 141: extern rpmSubdirPtr rpmNewSubdir(rpmSubdirPtr dir, const char *name,
! 142: const char *htmlpath, const char *rpmpath, const char *color);
! 143: extern void rpmRemoveSubdir(rpmSubdirPtr tree);
! 144: extern void rpmFreeSubdir(rpmSubdirPtr tree);
1.1 veillard 145:
1.16 veillard 146: extern void rpmAddSoftware(rpmDataPtr rpm);
1.1 veillard 147: extern void rpmDataPrint(rpmDataPtr rpm);
1.8 veillard 148: /* extern void rpmDataPrintAll(void); */
1.12 veillard 149: extern rpmRessPtr rpmRessAdd(char *ress, rpmDataPtr rpm, int installed);
150: extern rpmRessPtr rpmRequAdd(char *requ, rpmDataPtr rpm, int installed);
1.13 veillard 151: extern rpmArchPtr rpmArchAdd(char *os, char *arch);
1.22 ! veillard 152: extern rpmDataPtr rpmOpen(char *nameRpm, rpmDirPtr dir, rpmSubdirPtr tree);
1.21 veillard 153: extern rpmDataPtr rpmDirScanAll(void);
1.8 veillard 154: extern char *extractEMail(char *string);
1.3 veillard 155:
1.21 veillard 156: extern rpmDataPtr rpmAddList(rpmDataPtr old, rpmDataPtr newlist);
157:
158: extern rpmDataPtr rpmGroupSort(rpmDataPtr list, int installed);
159: extern rpmDataPtr rpmDistribSort(rpmDataPtr list, int installed);
160: extern rpmDataPtr rpmVendorSort(rpmDataPtr list, int installed);
161: extern rpmDataPtr rpmDateSort(rpmDataPtr list, int installed);
162: extern rpmDataPtr rpmNameSort(rpmDataPtr list, int installed);
1.1 veillard 163:
164: #endif /* __RPMDATA_H__ */
Webmaster