Fixes for GCC 4.3.
[ardour.git] / libs / midi++2 / fd_midiport.cc
index ef387e7c49745cf477baf06ebd7bbd11ea5267f2..6e4a8e9b7ce92f9f3f4011e273d096b6946f8477 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <fcntl.h>
 #include <cerrno>
+#include <cstring>
 
 #include <pbd/error.h>
 #include <pbd/pathscanner.h>
 
 using namespace std;
 using namespace MIDI;
+using namespace PBD;
 
 string *FD_MidiPort::midi_dirpath = 0;
 string *FD_MidiPort::midi_filename_pattern = 0;
 
-FD_MidiPort::FD_MidiPort (PortRequest &req, 
+FD_MidiPort::FD_MidiPort (const XMLNode& node,
                          const string &dirpath,
                          const string &pattern) 
-       : Port (req)
+       : Port (node)
 {      
-       open (req);
+       Descriptor desc (node);
+
+       open (desc);
 
        if (_fd < 0) {
                switch (errno) {
                case EBUSY:
                        error << "MIDI: port device in use" << endmsg;
-                       req.status = PortRequest::Busy;
                        break;
                case ENOENT:
                        error << "MIDI: no such port device" << endmsg;
-                       req.status = PortRequest::NoSuchFile;
                        break;
                case EACCES:
                        error << "MIDI: access to port denied" << endmsg;
-                       req.status = PortRequest::NotAllowed;
                        break;
                default:
-                       req.status = PortRequest::Unknown;
+                       break;
                } 
        } else {
                _ok = true;
-               req.status = PortRequest::OK;
 
                if (midi_dirpath == 0) {
                        midi_dirpath = new string (dirpath);
                        midi_filename_pattern = new string (pattern);
                }
 
-               if (req.mode & O_NONBLOCK == 0) {
+               if ((desc.mode & O_NONBLOCK) == 0) {
                        /* we unconditionally set O_NONBLOCK during
                           open, but the request didn't ask for it,
                           so remove it.
@@ -79,11 +79,11 @@ FD_MidiPort::FD_MidiPort (PortRequest &req,
 }
 
 void
-FD_MidiPort::open (PortRequest &req)
+FD_MidiPort::open (const Descriptor& desc)
 
 {
-       int mode = req.mode | O_NONBLOCK;
-       _fd = ::open (req.devname, mode);
+       int mode = desc.mode | O_NONBLOCK;
+       _fd = ::open (desc.device.c_str(), mode);
 }
 
 vector<string *> *
@@ -151,7 +151,7 @@ FD_MidiPort::do_slow_write (byte *msg, unsigned int msglen)
 }
 
 int
-FD_MidiPort::read (byte* buf, size_t max, timestamp_t timestamp)
+FD_MidiPort::read (byte* buf, size_t max)
 {
        int nread;