summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/acl/AclReader.cpp
diff options
context:
space:
mode:
authorKim van der Riet <kpvdr@apache.org>2008-08-01 21:07:20 +0000
committerKim van der Riet <kpvdr@apache.org>2008-08-01 21:07:20 +0000
commit8ce6a530df25eae7ebf28b9897e0c6a922a7b3a4 (patch)
treeb5630846706d191bab69f3d48e41139b9d79dd1c /cpp/src/qpid/acl/AclReader.cpp
parent2511200dc9f3e75d2f6979b33fd94301e9b117cd (diff)
downloadqpid-python-8ce6a530df25eae7ebf28b9897e0c6a922a7b3a4.tar.gz
Initial framework for ACL reader
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@681824 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/acl/AclReader.cpp')
-rw-r--r--cpp/src/qpid/acl/AclReader.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/cpp/src/qpid/acl/AclReader.cpp b/cpp/src/qpid/acl/AclReader.cpp
new file mode 100644
index 0000000000..0a9517bc76
--- /dev/null
+++ b/cpp/src/qpid/acl/AclReader.cpp
@@ -0,0 +1,73 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "qpid/acl/AclReader.h"
+
+#include <cstring>
+//#include <iostream> // debug
+#include <fstream>
+
+namespace qpid {
+namespace acl {
+
+int AclReader::read(const std::string& fn, boost::shared_ptr<AclData> d) {
+//std::cout << "AclReader::read(" << fn << ")" << std::endl << std::flush;
+ char buff[1024];
+ std::ifstream ifs(fn.c_str(), std::ios_base::in);
+ if (!ifs.good()) {
+ // error/exception - file open error
+ return -1;
+ }
+ try {
+ while (ifs.good()) {
+ ifs.getline(buff, 1024);
+ processLine(buff, d);
+ }
+ ifs.close();
+ } catch (...) {
+ // error/exception - file read/processing error
+ ifs.close();
+ return -2;
+ }
+ return 0;
+}
+
+
+void AclReader::processLine(char* line, boost::shared_ptr<AclData> /*d*/) {
+ std::vector<std::string> toks;
+ int numToks = tokenizeLine(line, toks);
+ for (int i=0; i<numToks; i++) {
+// DO MAGIC STUFF HERE
+//std::cout << "tok " << i << ": " << toks[i] << std::endl << std::flush;
+ }
+}
+
+int AclReader::tokenizeLine(char* line, std::vector<std::string>& toks) {
+ const char* tokChars = " \t\n";
+ int cnt = 0;
+ char* cp = std::strtok(line, tokChars);
+ while (cp != 0) {
+ toks.push_back(std::string(cp));
+ cnt++;
+ cp = std::strtok(0, tokChars);
+ }
+ return cnt;
+}
+
+
+}} // namespace qpid::acl