Annotation of rpm2html/rpmdata.h, revision 1.26

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.26    ! httpng      7:  * $Id: rpmdata.h,v 1.25 1998/03/28 19:28:41 veillard Exp $
1.1       veillard    8:  */
                      9: 
                     10: #ifndef __RPMDATA_H__
                     11: #define __RPMDATA_H__
                     12: 
1.26    ! httpng     13: #include <sys/types.h>
1.1       veillard   14: #include <rpm/header.h>
                     15: 
                     16: /*
1.6       veillard   17:  * Structure associated to a local directory containing RPM files.
                     18:  */
                     19: 
1.20      veillard   20: #define MAX_URLS       256
1.16      veillard   21: #define MAX_ARCHS      (sizeof(int) * 8)
1.6       veillard   22: 
                     23: typedef struct rpm_dir {
                     24:     struct rpm_dir *next;      /* next in list */
1.14      veillard   25:     char *color;               /* The bgcolor for the pages :-) */
                     26:     char *dir;                 /* where to store the HTML files */
1.21      veillard   27:     char *subdir;              /* subdirectory for multiple archive */
1.8       veillard   28:     char *ftp;                 /* The host URL it's mirrored from */
                     29:     char *ftpsrc;              /* The host URL where src.rpm can be found */
1.14      veillard   30:     char *host;                 /* Hostname for the server */
                     31:     char *mail;                        /* mail contact for this directory */
                     32:     char *maint;               /* Maintainer name for this directory */
                     33:     char *name;                        /* Name for this repository */
                     34:     char *rpmdir;               /* The local repository */
1.6       veillard   35:     char *trust;               /* Confidences in the files */
1.14      veillard   36:     char *url;                 /* The output URL */
                     37:     int   files;               /* number of files */
                     38:     int   installbase;         /* Is this from an installed base */
                     39:     int   size;                        /* aggregated size of files */
                     40:     int   nb_mirrors;          /* numbers of mirrors */
                     41:     char *mirrors[MAX_URLS];    /* Urls for download */
1.23      veillard   42:     int   build_tree;          /* Should we build the filesystem tree */
                     43:     struct rpm_realdir *root;  /* The corresponding filesystem tree */
1.6       veillard   44: } rpmDir, *rpmDirPtr;
                     45: 
                     46: /*
1.22      veillard   47:  * Structure associated to a local directory containing HTML files.
                     48:  * We build a tree providing an actual map of the generated site.
                     49:  */
                     50: 
                     51: #define MAX_SUB_DIRECTORIES    50
                     52: typedef struct rpm_subdir {
                     53:     struct rpm_subdir *parent; /* Parent directory ususally .. */
                     54:     char  *name;               /* subdirectory name */
                     55:     char  *color;              /* Color for the HTML output */
                     56:     char  *htmlpath;           /* full path w.r.t. rpm2html_url */
                     57:     char  *rpmpath;            /* full path w.r.t. rpm2html_dir */
                     58:     int    nb_subdirs;         /* number of subdirectories */
                     59:                                 /* list of the subdirectories */ 
                     60:     struct rpm_subdir *subdirs[MAX_SUB_DIRECTORIES];
                     61: } rpmSubdir, *rpmSubdirPtr;
                     62: 
                     63: /*
1.23      veillard   64:  * Structure associated to a real directory containing files owned
                     65:  * by RPM packages. It reflect the content of user's filesystem if
                     66:  * it installed the packages.
                     67:  */
                     68: 
                     69: #define RPM_ELEM_DIRECTORY     0x1   /* File or directory ? */
                     70: 
                     71: typedef struct rpm_realdir {
                     72:     struct rpm_realdir *parent;        /* Parent directory */
                     73:     char  *name;               /* directory name */
                     74:     int    nb_elem;            /* number of files (and subdirs)  */
                     75:     int    max_elem;           /* size of allocated arrays       */
                     76:                                 /* pointers to an array of either */
                     77:     void **elems;               /* filename or subdir rpm_realdir */
                     78:     char **names;               /* pointer to the array of names  */
                     79:     char  *flags;               /* pointer to array of flags      */
                     80: } rpmRealDir, *rpmRealDirPtr;
                     81: 
                     82: /*
1.13      veillard   83:  * structure associated with an architecture.
                     84:  */
                     85: 
                     86: typedef struct rpm_arch {
                     87:     struct rpm_arch *next;     /* next in the list */
                     88:     char *os;                  /* the Operating System name */
                     89:     char *arch;                        /* the CPU architecture */
                     90: } rpmArch, *rpmArchPtr;
                     91: 
                     92: /*
1.1       veillard   93:  * structure associated with an rpm
                     94:  */
                     95: 
1.20      veillard   96: #define MAX_RES                64
                     97: #define MAX_REQU       64
1.1       veillard   98: 
                     99: typedef struct rpm_data {
1.16      veillard  100:     struct rpm_data *next;     /* next in the full list of RPMs */
                    101:     struct rpm_data *nextSoft; /* next software */
                    102:     struct rpm_data *nextArch; /* RPM for same software on other archs */
                    103:     struct rpm_data *nextHash; /* next in the hash list */
1.6       veillard  104:     rpmDirPtr dir;             /* directory infos */
1.18      veillard  105:     char *subdir;              /* subdirectory holding the rpm */
1.2       veillard  106:     char *filename;            /* name of the file */
1.1       veillard  107:     char *name;                        /* name of the software */
                    108:     char *version;             /* version of the software */
                    109:     char *release;             /* software release */
1.8       veillard  110:     char *url;                  /* URL for the software */
1.16      veillard  111:     char *arch;                 /* the architecture system */
1.8       veillard  112:     char *os;                   /* the target system */
1.1       veillard  113:     char *distribution;                /* general OS distribution */
                    114:     char *vendor;              /* general OS vendor */
1.8       veillard  115:     char *packager;            /* the packager */
1.1       veillard  116:     char *group;               /* type of software */
1.2       veillard  117:     char *summary;             /* 1 line summary */
                    118:     char *description;          /* short description */
1.8       veillard  119:     char *copyright;            /* software copyright */
1.20      veillard  120:     char *changelog;            /* changelog */
1.2       veillard  121:     char *srcrpm;              /* source RPM */
                    122:     time_t date;               /* date of packaging */
1.17      veillard  123:     time_t stamp;              /* modification file of the archive */
1.1       veillard  124:     int_32 size;               /* size of the software */
                    125:     char *host;                        /* build host */
1.19      veillard  126:     int   nb_resources;        /* #of resources provided */
                    127:     struct rpm_resource *
                    128:        resources[MAX_RES + 1];/* list of them */
                    129:     int   nb_requires;         /* #of resources required */
                    130:     struct rpm_resource *
1.4       veillard  131:           requires[MAX_REQU];  /* list of them */
1.5       veillard  132:     char *filelist;             /* the filelist */
1.1       veillard  133: } rpmData, *rpmDataPtr;
                    134: 
                    135: /*
                    136:  * structure associated with a resource
                    137:  */
                    138: 
1.15      veillard  139: #define MAX_PROVIDE 75
1.1       veillard  140: 
1.19      veillard  141: typedef struct rpm_resource {
                    142:     struct rpm_resource *next; /* next in the list */
                    143:     char *name;                        /* name of the resource */
                    144:     int   nb_provider;         /* #of resources provided */
1.17      veillard  145:     time_t stamp;              /* max stamp of the provider */
1.1       veillard  146:     struct rpm_data *
                    147:           provider[MAX_PROVIDE];/* list of them */
                    148: } rpmRess, *rpmRessPtr;
                    149: 
                    150: 
1.16      veillard  151: extern const char *archNames[MAX_ARCHS];
                    152: extern int nbArchs;
                    153: 
1.1       veillard  154: extern rpmDataPtr rpmList;
1.16      veillard  155: extern rpmDataPtr rpmSoftwareList; /* avoid different archs clash */
1.1       veillard  156: extern rpmRessPtr ressList;
1.13      veillard  157: extern rpmArchPtr archList;
1.12      veillard  158: extern rpmDataPtr rpmInstalledList;
                    159: extern rpmRessPtr ressInstalledList;
1.6       veillard  160: extern rpmDirPtr dirList;
1.22      veillard  161: extern rpmSubdirPtr dirTree;
1.23      veillard  162: extern rpmRealDirPtr treeRoot;
1.22      veillard  163: 
                    164: extern rpmSubdirPtr rpmNewSubdir(rpmSubdirPtr dir, const char *name,
                    165:      const char *htmlpath, const char *rpmpath, const char *color);
                    166: extern void rpmRemoveSubdir(rpmSubdirPtr tree);
                    167: extern void rpmFreeSubdir(rpmSubdirPtr tree);
1.1       veillard  168: 
1.16      veillard  169: extern void rpmAddSoftware(rpmDataPtr rpm);
1.1       veillard  170: extern void rpmDataPrint(rpmDataPtr rpm);
1.8       veillard  171: /* extern void rpmDataPrintAll(void); */
1.12      veillard  172: extern rpmRessPtr rpmRessAdd(char *ress, rpmDataPtr rpm, int installed);
                    173: extern rpmRessPtr rpmRequAdd(char *requ, rpmDataPtr rpm, int installed);
1.13      veillard  174: extern rpmArchPtr rpmArchAdd(char *os, char *arch);
1.22      veillard  175: extern rpmDataPtr rpmOpen(char *nameRpm, rpmDirPtr dir, rpmSubdirPtr tree);
1.21      veillard  176: extern rpmDataPtr rpmDirScanAll(void);
1.8       veillard  177: extern char *extractEMail(char *string);
1.3       veillard  178: 
1.21      veillard  179: extern rpmDataPtr rpmAddList(rpmDataPtr old, rpmDataPtr newlist);
                    180: 
                    181: extern rpmDataPtr rpmGroupSort(rpmDataPtr list, int installed);
                    182: extern rpmDataPtr rpmDistribSort(rpmDataPtr list, int installed);
                    183: extern rpmDataPtr rpmVendorSort(rpmDataPtr list, int installed);
                    184: extern rpmDataPtr rpmDateSort(rpmDataPtr list, int installed);
                    185: extern rpmDataPtr rpmNameSort(rpmDataPtr list, int installed);
1.1       veillard  186: 
1.24      veillard  187: extern rpmRealDirPtr rpmCreateRealRoot(void);
1.25      veillard  188: extern void rpmDestroyRealRoot(rpmRealDirPtr dir);
1.24      veillard  189: extern void rpmAddRealFile(rpmRealDirPtr root, const char *file,
                    190:                            rpmDataPtr rpm);
                    191: extern rpmRealDirPtr rpmMergeRealRoots(rpmRealDirPtr root1,
                    192:                                        rpmRealDirPtr root2);
1.1       veillard  193: #endif /* __RPMDATA_H__ */

Webmaster