]> git.saurik.com Git - apt.git/blobdiff - methods/rsh.h
tests: don't do boundless string compares with data()
[apt.git] / methods / rsh.h
index c81396b5fd0bb0b5b4d3bd1179f4cc424c12d7d2..dee4ad647fff45afa8adc2e77ab06c753e1e2c35 100644 (file)
 #define APT_RSH_H
 
 #include <string>
+#include <time.h>
+
 #include <apt-pkg/strutl.h>
-#include <apt-pkg/hashes.h>
-#include <apt-pkg/acquire-method.h>
-#include <apt-pkg/fileutl.h>
+
+class Hashes;
+class FileFd;
 
 class RSHConn
 {
@@ -23,17 +25,19 @@ class RSHConn
    int WriteFd;
    int ReadFd;
    URI ServerName;
+   std::string const Prog;
 
    // Private helper functions
-   bool ReadLine(string &Text);
+   bool ReadLine(std::string &Text);
 
    public:
 
    pid_t Process;
 
    // Raw connection IO
-   bool WriteMsg(string &Text,bool Sync,const char *Fmt,...);
-   bool Connect(string Host, string User);
+   bool WriteMsg(std::string &Text,bool Sync,const char *Fmt,...);
+   bool Connect(std::string Host, std::string User);
+   bool Connect(std::string Host, unsigned int Port, std::string User);
    bool Comp(URI Other) const {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;};
 
    // Connection control
@@ -46,25 +50,27 @@ class RSHConn
    bool Get(const char *Path,FileFd &To,unsigned long long Resume,
             Hashes &Hash,bool &Missing, unsigned long long Size);
 
-   RSHConn(URI Srv);
+   RSHConn(std::string const &Prog, URI Srv);
    ~RSHConn();
 };
 
-class RSHMethod : public pkgAcqMethod
+#include "aptmethod.h"
+
+class RSHMethod : public aptMethod
 {
-   virtual bool Fetch(FetchItem *Itm);
-   virtual bool Configuration(string Message);
+   virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+   virtual bool Configuration(std::string Message) APT_OVERRIDE;
 
    RSHConn *Server;
 
-   static string FailFile;
+   static std::string FailFile;
    static int FailFd;
    static time_t FailTime;
-   static void SigTerm(int);
+   static APT_NORETURN void SigTerm(int);
 
    public:
 
-   RSHMethod();
+   explicit RSHMethod(std::string &&Prog);
 };
 
 #endif