gcontini
2019-10-19 497745ad31c90545b288e2845049e0ce474bcbe2
src/library/locate/ApplicationFolder.cpp
New file
@@ -0,0 +1,56 @@
/*
 * ApplicationFolder.cpp
 *
 *  Created on: Oct 12, 2019
 *      Author: Gabriele Contini
 */
#include <fstream>
#include <sstream>
#include <string>
#include <build_properties.h>
#include "../base/logger.h"
#include "../api/datatypes.h"
#include "../base/base.h"
#include "../base/EventRegistry.h"
#include "../base/FileUtils.hpp"
#include "../os/os.h"
#include "ApplicationFolder.hpp"
#include <iostream>
namespace license {
namespace locate {
using namespace std;
ApplicationFolder::ApplicationFolder() :
      LocatorStrategy("ApplicationFolder") {
}
ApplicationFolder::~ApplicationFolder() {
}
const vector<string> ApplicationFolder::license_locations(
      EventRegistry &eventRegistry) {
   vector<string> diskFiles;
   char fname[MAX_PATH] = { 0 };
   const FUNCTION_RETURN fret = getModuleName(fname);
   if (fret == FUNC_RET_OK) {
      const string module_name = remove_extension(fname);
      const string temptativeLicense = string(module_name) + ".lic";
      ifstream f(temptativeLicense.c_str());
      if (f.good()) {
         diskFiles.push_back(temptativeLicense);
         eventRegistry.addEvent(LICENSE_FOUND, temptativeLicense.c_str());
      } else {
         eventRegistry.addEvent(LICENSE_FILE_NOT_FOUND, temptativeLicense.c_str());
      }
      f.close();
   } else {
      LOG_WARN("Error determining module name.");
   }
   return diskFiles;
}
}
} /* namespace license */