X-Git-Url: https://harishankar.org/repos/?p=biaweb2.git;a=blobdiff_plain;f=biawebutil.hpp;h=279d394471fab1e2fcdb5adf3aac2d14c5afbb39;hp=ee6cd5a26e4e0771524ba2e24961d1768fc4179c;hb=HEAD;hpb=1d1f04629b04c7e7efd14d8f281e17f5e491c888 diff --git a/biawebutil.hpp b/biawebutil.hpp index ee6cd5a..279d394 100644 --- a/biawebutil.hpp +++ b/biawebutil.hpp @@ -1,6 +1,7 @@ #ifndef __BIAWEBUTIL__ #define __BIAWEBUTIL__ #include +#include // "discount" markdown library is a C library and hence requires to be wrapped in // extern "C" @@ -11,6 +12,13 @@ extern "C" { // utility functions for Biaweb that don't fit into any class and can be used by // any class namespace biaweb { + // load a string from file + std::string load_from_file (std::string filename) { + std::ifstream f (filename); + std::string r ((std::istreambuf_iterator (f)), + (std::istreambuf_iterator ())); + return r; + } // convert markdown std::string convert_to_markdown (std::string str) { @@ -23,16 +31,15 @@ namespace biaweb { // till a cleaner solution can be found. MMIOT *doc; doc = mkd_string (str.c_str(), str.size(), 0); - FILE *f = fopen (".biaweb.tmp", "w"); + char tempfile[20]; + strcpy (tempfile, "/tmp/biawebXXXXXX"); + int fd = mkstemp (tempfile); + FILE *f = fdopen (fd, "w"); markdown (doc, f, 0); fclose (f); - std::ifstream ftmp (".biaweb.tmp"); - std::string tmpl ( (std::istreambuf_iterator (ftmp)), - (std::istreambuf_iterator ()) - ); - ftmp.close (); + std::string tmpl = load_from_file (tempfile); mkd_cleanup (doc); - remove (".biaweb.tmp"); + remove (tempfile); return tmpl; }