| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #ifndef PKGLIB_CDROM_H
- #define PKGLIB_CDROM_H
- #include<apt-pkg/init.h>
- #include<string>
- #include<vector>
- using namespace std;
- class pkgCdromStatus /*{{{*/
- {
- protected:
- int totalSteps;
- public:
- pkgCdromStatus() {};
- virtual ~pkgCdromStatus() {};
- // total steps
- virtual void SetTotal(int total) { totalSteps = total; };
- // update steps, will be called regularly as a "pulse"
- virtual void Update(string text="", int current=0) = 0;
-
- // ask for cdrom insert
- virtual bool ChangeCdrom() = 0;
- // ask for cdrom name
- virtual bool AskCdromName(string &Name) = 0;
- // Progress indicator for the Index rewriter
- virtual OpProgress* GetOpProgress() {return NULL; };
- };
- /*}}}*/
- class pkgCdrom /*{{{*/
- {
- protected:
- enum {
- STEP_PREPARE = 1,
- STEP_UNMOUNT,
- STEP_WAIT,
- STEP_MOUNT,
- STEP_IDENT,
- STEP_SCAN,
- STEP_COPY,
- STEP_WRITE,
- STEP_UNMOUNT3,
- STEP_LAST
- };
- bool FindPackages(string CD,
- vector<string> &List,
- vector<string> &SList,
- vector<string> &SigList,
- vector<string> &TransList,
- string &InfoDir, pkgCdromStatus *log,
- unsigned int Depth = 0);
- bool DropBinaryArch(vector<string> &List);
- bool DropRepeats(vector<string> &List,const char *Name);
- void ReduceSourcelist(string CD,vector<string> &List);
- bool WriteDatabase(Configuration &Cnf);
- bool WriteSourceList(string Name,vector<string> &List,bool Source);
- int Score(string Path);
- public:
- bool Ident(string &ident, pkgCdromStatus *log);
- bool Add(pkgCdromStatus *log);
- };
- /*}}}*/
- // class that uses libudev to find cdrom devices dynamically
- struct CdromDevice /*{{{*/
- {
- string DeviceName;
- bool Mounted;
- string MountPath;
- };
- /*}}}*/
- class pkgUdevCdromDevices /*{{{*/
- {
- protected:
- // libudev dlopen stucture
- void *libudev_handle;
- struct udev* (*udev_new)(void);
- int (*udev_enumerate_add_match_property)(struct udev_enumerate *udev_enumerate, const char *property, const char *value);
- int (*udev_enumerate_scan_devices)(struct udev_enumerate *udev_enumerate);
- struct udev_list_entry* (*udev_enumerate_get_list_entry)(struct udev_enumerate *udev_enumerate);
- struct udev_device* (*udev_device_new_from_syspath)(struct udev *udev, const char *syspath);
- struct udev* (*udev_enumerate_get_udev)(struct udev_enumerate *udev_enumerate);
- const char* (*udev_list_entry_get_name)(struct udev_list_entry *list_entry);
- const char* (*udev_device_get_devnode)(struct udev_device *udev_device);
- struct udev_enumerate *(*udev_enumerate_new) (struct udev *udev);
- struct udev_list_entry *(*udev_list_entry_get_next)(struct udev_list_entry *list_entry);
- const char* (*udev_device_get_property_value)(struct udev_device *udev_device, const char *key);
- // end libudev dlopen
-
- public:
- pkgUdevCdromDevices();
- virtual ~pkgUdevCdromDevices();
- // try to open
- bool Dlopen();
- vector<CdromDevice> Scan();
- };
- /*}}}*/
- #endif
|