Merge "docs: Update install and release docs for DPDK migration support"
[samplevnf.git] / VNFs / DPPD-PROX / tools / flow_extract / csvfilereader.cpp
1 /*
2 // Copyright (c) 2010-2017 Intel Corporation
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 */
16
17 #include <iostream>
18 #include <cstdlib>
19 #include <cstring>
20 #include <stdint.h>
21
22 #include "csvfilereader.hpp"
23
24 int CsvFileReader::open(const string& str)
25 {
26         char *resolved_path = new char[1024];
27
28         memset(resolved_path, 0, 1024);
29         realpath(str.c_str(), resolved_path);
30         file.open(resolved_path);
31
32         delete []resolved_path;
33         return file.is_open();
34 }
35
36 vector<string> CsvFileReader::read()
37 {
38         vector<string> ret;
39         size_t prev = 0, cur = 0;
40         string line;
41
42         if (file.eof())
43                 return vector<string>();
44
45         std::getline(file, line);
46         if (line.empty())
47                 return vector<string>();
48
49         while (true) {
50                 cur = line.find_first_of(',', prev);
51
52                 if (cur != SIZE_MAX) {
53                         ret.push_back(line.substr(prev, cur - prev));
54                         prev = cur + 1;
55                 }
56                 else {
57                         ret.push_back(line.substr(prev, line.size() - prev));
58                         break;
59                 }
60         }
61         return ret;
62 }
63
64 void CsvFileReader::close()
65 {
66         file.close();
67 }