#include <fcntl.h>
#include <cerrno>
+#include <cstring>
-#include <pbd/error.h>
-#include <pbd/pathscanner.h>
+#include "pbd/error.h"
+#include "pbd/pathscanner.h"
-#include <midi++/types.h>
-#include <midi++/fd_midiport.h>
+#include "midi++/types.h"
+#include "midi++/fd_midiport.h"
using namespace std;
using namespace MIDI;
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.
}
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 *> *
{
PathScanner scanner;
- return scanner (*midi_dirpath, *midi_filename_pattern, false, true);
+ return scanner (*midi_dirpath, *midi_filename_pattern, false, true, false);
}
int
}
bytes_written++;
- for (i = 0; i < slowdown * 10000; i++);
+ for (i = 0; i < slowdown * 10000; i++) {}
}