+ texinputs_prefix.append(sep + abslpath);
+ }
+
+ if (os::shell() == os::UNIX)
+ return "env TEXINPUTS=\"." + sep + texinputs_prefix
+ + sep + texinputs + "\" "
+ + "BIBINPUTS=\"." + sep + allother_prefix
+ + sep + bibinputs + "\" "
+ + "BSTINPUTS=\"." + sep + allother_prefix
+ + sep + bstinputs + "\" "
+ + "TEXFONTS=\"." + sep + allother_prefix
+ + sep + texfonts + "\" ";
+ else
+ // NOTE: the dummy blank dirs are necessary to force the
+ // QProcess parser to quote the argument (see bug 9453)
+ return "cmd /d /c set \"TEXINPUTS=." + sep + " "
+ + sep + texinputs_prefix
+ + sep + texinputs + "\" & "
+ + "set \"BIBINPUTS=." + sep + " "
+ + sep + allother_prefix
+ + sep + bibinputs + "\" & "
+ + "set \"BSTINPUTS=." + sep + " "
+ + sep + allother_prefix
+ + sep + bstinputs + "\" & "
+ + "set \"TEXFONTS=." + sep + " "
+ + sep + allother_prefix
+ + sep + texfonts + "\" & ";
+}
+
+
+// Replace current directory in all elements of a path list with a given path.
+string const replaceCurdirPath(string const & path, string const & pathlist)
+{
+ string const oldpathlist = replaceEnvironmentPath(pathlist);
+ char const sep = os::path_separator();
+ string newpathlist;
+
+ for (size_t i = 0, k = 0; i != string::npos; k = i) {
+ i = oldpathlist.find(sep, i);
+ string p = oldpathlist.substr(k, i - k);
+ if (FileName::isAbsolute(p)) {
+ newpathlist += p;
+ } else if (i > k) {
+ size_t offset = 0;
+ if (p == ".") {
+ offset = 1;
+ } else if (prefixIs(p, "./")) {
+ offset = 2;
+ while (p[offset] == '/')
+ ++offset;
+ }
+ newpathlist += addPath(path, p.substr(offset));
+ if (suffixIs(p, "//"))
+ newpathlist += '/';
+ }
+ if (i != string::npos) {
+ newpathlist += sep;
+ // Stop here if the last element is empty
+ if (++i == oldpathlist.length())
+ break;
+ }