blob: a7568631e96e75e1163f10798f6419312080666c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#include <iostream>
#include "libskrewt.h"
using namespace std;
void parse_content(const string type_spec_line,
string &maintype, string &boundary) {
//xxx cerr << "parser called with: " << type_spec_line << endl;
string get_type(type_spec_line);
size_t where = get_type.find_first_of(" \t;\n");
string rest;
if (where == string::npos) {
// keep whole string
}
else {
rest = get_type.substr(where+1);
get_type = get_type.substr(0,where);
}
where = get_type.find("/");
if (where == string::npos){
maintype = "";
cerr << "could not find / in " << get_type << endl;
} else {
maintype = get_type.substr(0, where);
}
// now need to find boundary
string srch = "boundary=";
where = rest.find(srch);
if (where != string::npos) {
where += srch.length();
boundary = rest.substr(where);
if (boundary[0] == '"') {
boundary = boundary.substr(1);
where = boundary.find_first_of("\"");
} else {
where = boundary.find_first_of(" \t;\n");
}
if (where == string::npos) {
/* do nothing, boundary=boundary as a whole */
} else {
boundary = boundary.substr(0, where);
}
} else {
//xxxxxxx cerr << "boundary= not found in " << type_spec_line << endl;
}
}
|