url get_from_web (url name) { if (!is_rooted_web (name)) return url_none (); url res= get_cache (name); if (!is_none (res)) return res; #ifdef OS_WIN32 string urlString = as_string (name); url tmp = url_temp(); if (starts (urlString, "www.")) urlString = "http://" * urlString; else if (starts (urlString, "ftp.")) urlString = "ftp://" * urlString; else if (starts (urlString, "ftp://")) urlPath = NULL; else if (starts (urlString, "http://")) urlPath = NULL; else urlString = "http://" * urlString; urlString= web_encode (urlString); c_string urlPath (urlString); c_string tempFilePath (as_string (tmp)); if(!URL_Get(urlPath, tempFilePath)) return url_none(); else return set_cache (name, tmp); #else string test= var_eval_system ("which wget"); if (!ends (test, "wget")) return url_none (); url tmp= url_temp (); string tmp_s= escape_sh (concretize (tmp)); string cmd= "wget --header='User-Agent: TeXmacs-" TEXMACS_VERSION "' -q"; cmd << " -O " << tmp_s << " " << escape_sh (web_encode (as_string (name))); // cout << cmd << "\n"; system (cmd); // cout << "got " << name << " as " << tmp << "\n"; if (var_eval_system ("cat " * tmp_s * " 2> /dev/null") == "") { remove (tmp); return url_none (); } else return set_cache (name, tmp); #endif }
int unix_system (string cmd, string& result) { url temp= url_temp (); string temp_s= escape_sh (concretize (temp)); c_string _cmd (cmd * " > " * temp_s * " 2>&1"); int ret= system (_cmd); bool flag= load_string (temp, result, false); remove (temp); if (flag) result= ""; return ret; }
url resolve_in_path (url u) { if (use_which) { string name = escape_sh (as_string (u)); string which= var_eval_system ("which " * name * " 2> /dev/null"); if (ends (which, name)) return which; else if ((which != "") && (!starts (which, "which: ")) && (!starts (which, "no "))) cout << "TeXmacs] " << which << "\n"; } return resolve (url_path ("$PATH") * u, "x"); }
inline string eval_system (string which, url u1, url u2) { return eval_system (which * " " * escape_sh (concretize (u1)) * " " * escape_sh (concretize (u2))); }
inline string sys_concretize (url u1) { return escape_sh (concretize (u1)); }