CoreUtils/IMFHeaderField.cpp

33 lines
820 B
C++

#include "IMFHeaderField.h"
#include "Exception.h"
#include "Log.h"
#include <unistd.h>
#include <fcntl.h>
namespace coreutils {
IMFHeaderField::IMFHeaderField(char &ch, int fd) {
int rc = 0;
while(((ch >= 'A') && (ch <= 'Z')) ||
((ch >= 'a') && (ch <= 'z')) ||
((ch >= '0') && (ch <= '9')) ||
(ch == '-') || (ch == '_')) {
key.write(ch);
rc = ::read(fd, &ch, 1);
}
if(ch != ':')
throw coreutils::Exception("expecting ':' in data stream.");
rc = ::read(fd, &ch, 1);
while(ch == ' ')
rc = ::read(fd, &ch, 1);
while(ch != '\r') {
value.write(ch);
rc = ::read(fd, &ch, 1);
}
rc = ::read(fd, &ch, 1);
if(ch != '\n')
throw coreutils::Exception("expecting '\n' in data stream.");
rc = ::read(fd, &ch, 1);
}
}