#include "../config.h"
-#include <cstdlib> // atexit, getenv
+#include <cstdlib> // atexit
#include <exception>
#include <functional>
#include <iostream>
#include <string>
-#include <unistd.h> // access
+
+#include <stlplus/portability/file_system.hpp>
+#include <stlplus/portability/subprocesses.hpp>
#include <moof/log.hh>
#include <moof/modal_dialog.hh>
// 1. YOINK_DATADIR (environment)
// 2. YOINK_DATADIR (configure)
- std::string path;
+ std::string path;
+ stlplus::env_vector environment;
- char* dataDir = getenv("YOINK_DATADIR");
- if (dataDir)
+ std::string datadir = environment["YOINK_DATADIR"];
+ if (!datadir.empty())
{
- path += dataDir;
+ path += datadir;
path += ":";
}
path += YOINK_DATADIR;
std::string path("yoinkrc");
moof::resource::find(path);
+ stlplus::env_vector environment;
+
#if !defined(_WIN32)
path += ":/etc/yoinkrc";
#endif
path += ":$HOME/.yoinkrc";
- char* configFile = getenv("YOINKRC");
- if (configFile)
+ std::string rc_file = environment["YOINKRC"];
+ if (!rc_file.empty())
{
path += ":";
- path += configFile;
+ path += rc_file;
}
return path;
void Main::printInfo(int argc, char* argv[])
{
- std::string assets;
- std::string datadir;
- std::string config;
+ stlplus::env_vector environment;
+ std::string assets;
assets.assign(YOINK_DATADIR);
- int accessible = access(assets.c_str(), R_OK);
- if (accessible != 0) assets += " (no access)";
+ if (!stlplus::file_readable(assets)) assets += " (no access)";
- char* temp = getenv("YOINK_DATADIR");
- if (temp)
+ std::string datadir = environment["YOINK_DATADIR"];
+ if (!datadir.empty())
{
- datadir = temp;
- accessible = access(temp, R_OK);
- if (accessible != 0) datadir += " (no access)";
+ if (!stlplus::folder_readable(datadir)) datadir += " (no access)";
}
- temp = getenv("YOINKRC");
- if (temp)
+ std::string rc_file = environment["YOINKRC"];
+ if (!rc_file.empty())
{
- config = temp;
- accessible = access(temp, R_OK);
- if (accessible != 0) config += " (no access)";
+ if (!stlplus::file_readable(rc_file)) rc_file += " (no access)";
}
std::cout << " Executable: " << argv[0] << std::endl
<< "-"
#endif
<< "threads" << std::endl
- << " YOINKRC: " << config << std::endl
+ << " YOINKRC: " << rc_file << std::endl
<< "YOINK_DATADIR: " << datadir << std::endl;
}
if (asset) asset->cool();
else moof::log_warning("no asset obtained!!");
- moof::timer reloadTimer(
- boost::bind(&moof::resource::reload_as_needed),
- SCALAR(2.0),
- moof::timer::repeat);
-
- //for (;;)
- //{
- //myAsset.get()->cool();
- //moof::resource::reload_as_needed();
- //sleep(1);
- //}
-
- //return 0;
-
- moof::resolver_task task("4950", "lappy");
- task.run();
+ //moof::timer reloadTimer(
+ //boost::bind(&moof::resource::reload_as_needed),
+ //SCALAR(2.0),
+ //moof::timer::repeat);
- int i = task.wait();
- moof::log_warning("task ended with code:", i);
-
- std::vector<moof::socket::address>::const_iterator it;
- for (it = task.addresses().begin(); it != task.addresses().end(); ++it)
+ for (;;)
{
- moof::socket::address addr = *it;
-
- moof::log_info("address:", addr, "(", addr.type(), ")");
+ if (myAsset) myAsset.get()->cool();
+ moof::resource::reload_as_needed();
+ sleep(1);
}
-
- //ASSERT(5 == 8 && "uh oh that's not right");
-
-
- std::vector<uint8_t> hi;
- for (int a = 0; a < 4000; a++)
- {
- hi.push_back(a);
- }
-
- moof::log_info("array size:", hi.size());
- moof::packet packet;
- packet << hi;
-
- //for (it = task.addresses().begin(); it != task.addresses().end(); ++it)
- //{
- //moof::socket sock(*it);
- moof::socket sock(moof::socket::address::broadcast("4950"));
- //moof::socket sock("4950", "lappy", SOCK_DGRAM);
- sock.set(SO_BROADCAST, 1);
- sock.connect();
-
- //if (sock.isConnected())
- //{
- moof::packet pack;
- pack << "hello world";
- sock.write(pack);
- //sock.write(pack, sock.address());
- moof::log_info("sent", pack.size(), "bytes");
-
- const char* data = pack.bytes();
- for (unsigned i = 0; i < pack.size(); ++i)
- {
- moof::log_warning("meh:", data[i]);
- }
-
- char data2[56];
- pack.read(data2, 13);
- for (int i = 0; i < 13; ++i)
- {
- moof::log_warning("meh:", data2[i]);
- }
- //}
- //else
- //{
- //moof::log_error("NOT CONNECTED");
- //}
- //}
-
-
- //return 0;
if (argc > 1)
#include "../config.h"
#endif
-#if USE_HOTLOADING
+#ifdef USE_HOTLOADING
#include <sys/inotify.h>
#include <sys/ioctl.h>
#endif
resource::type_lookup_ptr resource::type_lookup_;
-#if USE_HOTLOADING
+#ifdef USE_HOTLOADING
static hash<int,std::string,hash_function> monitor_lookup_;
static int monitor_fd_ = inotify_init1(IN_NONBLOCK);
#endif
{
int num_resources = 0;
-#if USE_HOTLOADING
+#ifdef USE_HOTLOADING
log_info("hotloading?");
char bytes[BUF_SIZE];
int num_bytes;
resource::~resource()
{
-#if USE_HOTLOADING
+#ifdef USE_HOTLOADING
inotify_rm_watch(monitor_fd_, wd_);
#endif
}
rsrc->set_loader(path, (*jt).second);
resource_table_[path] = rsrc;
-#if USE_HOTLOADING
+#ifdef USE_HOTLOADING
int wd = inotify_add_watch(monitor_fd_,
path.c_str(), IN_MODIFY);
rsrc->set_watch_descriptor(wd);
typeinfo_ = resource->typeinfo_;
unloader_ = resource->unloader_;
-#if USE_HOTLOADING
+#ifdef USE_HOTLOADING
int wd = inotify_add_watch(monitor_fd_,
path_.c_str(), IN_MODIFY);
set_watch_descriptor(wd);
*
**************************************************************************/
-#include <cstdlib> // getenv
+#include <stlplus/portability/file_system.hpp>
#include "log.hh"
#include "settings.hh"
{
std::string str;
script_[-1].get(str);
- log_warning << "invalid option: " << argv[i]
- << ": " << str << std::endl;
+ log_warning("invalid option", argv[i], "returned", str);
script_.clear_stack();
}
}
void settings::load_files(const std::vector<std::string>& path)
{
- std::vector<std::string> copy(path);
- std::vector<std::string>::iterator it;
-
-#if defined(_WIN32)
- char* homeDrive = getenv("HOMEDRIVE");
- char* homePath = getenv("HOMEPATH");
- std::string home(homeDrive ? homeDrive : "");
- if (homePath) home += homePath;
-#else
- char *homePath = getenv("HOME");
- std::string home(homePath ? homePath : "");
-#endif
+ std::string home = stlplus::folder_home();
+ std::vector<std::string>::iterator it;
+ std::vector<std::string> copy(path);
for (it = copy.begin(); it != copy.end(); ++it)
{
if (!home.empty())