indexcopy.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // -*- mode: cpp; mode: fold -*-
  2. // Description /*{{{*/
  3. // $Id: indexcopy.h,v 1.3 2001/05/27 04:46:54 jgg Exp $
  4. /* ######################################################################
  5. Index Copying - Aid for copying and verifying the index files
  6. ##################################################################### */
  7. /*}}}*/
  8. #ifndef INDEXCOPY_H
  9. #define INDEXCOPY_H
  10. #include <vector>
  11. #include <string>
  12. #include <stdio.h>
  13. using std::string;
  14. using std::vector;
  15. class pkgTagSection;
  16. class FileFd;
  17. class indexRecords;
  18. class pkgCdromStatus;
  19. class IndexCopy
  20. {
  21. protected:
  22. pkgTagSection *Section;
  23. string ChopDirs(string Path,unsigned int Depth);
  24. bool ReconstructPrefix(string &Prefix,string OrigPath,string CD,
  25. string File);
  26. bool ReconstructChop(unsigned long &Chop,string Dir,string File);
  27. void ConvertToSourceList(string CD,string &Path);
  28. bool GrabFirst(string Path,string &To,unsigned int Depth);
  29. virtual bool GetFile(string &Filename,unsigned long &Size) = 0;
  30. virtual bool RewriteEntry(FILE *Target,string File) = 0;
  31. virtual const char *GetFileName() = 0;
  32. virtual const char *Type() = 0;
  33. public:
  34. bool CopyPackages(string CDROM,string Name,vector<string> &List,
  35. pkgCdromStatus *log);
  36. };
  37. class PackageCopy : public IndexCopy
  38. {
  39. protected:
  40. virtual bool GetFile(string &Filename,unsigned long &Size);
  41. virtual bool RewriteEntry(FILE *Target,string File);
  42. virtual const char *GetFileName() {return "Packages";};
  43. virtual const char *Type() {return "Package";};
  44. public:
  45. };
  46. class SourceCopy : public IndexCopy
  47. {
  48. protected:
  49. virtual bool GetFile(string &Filename,unsigned long &Size);
  50. virtual bool RewriteEntry(FILE *Target,string File);
  51. virtual const char *GetFileName() {return "Sources";};
  52. virtual const char *Type() {return "Source";};
  53. public:
  54. };
  55. class SigVerify
  56. {
  57. bool Verify(string prefix,string file, indexRecords *records);
  58. bool CopyMetaIndex(string CDROM, string CDName,
  59. string prefix, string file);
  60. public:
  61. bool CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
  62. vector<string> PkgList,vector<string> SrcList);
  63. };
  64. #endif