X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Fpath.cc;h=3a2e5dfbc0abf56648f251c70ffe53af1f57c49b;hb=refs%2Ftags%2Frelease%2F0.0.59;hp=2737d1cd154173d19d293971d493af9d0bb75f07;hpb=89e80b41fb745ed7ebc2ba3ee4f183a740f305be;p=lilypond.git diff --git a/flower/path.cc b/flower/path.cc index 2737d1cd15..3a2e5dfbc0 100644 --- a/flower/path.cc +++ b/flower/path.cc @@ -3,44 +3,44 @@ */ #include #include "path.hh" +#include "flower-debug.hh" #ifndef PATHSEP #define PATHSEP '/' #endif /** - INPUT: path the original full filename - OUTPUT: 4 components of the path. They can be empty + @param path the original full filename + @return 4 components of the path. They can be empty */ void split_path(String path, String &drive, String &dirs, String &filebase, String &extension) { // peel off components, one by one. - int di = path.pos(':'); - if (di) + int di = path.index_i(':'); + if (di >= 0) { - drive = path.left(di); - path = path.right(path.len() - di); + drive = path.left_str(di + 1); + path = path.right_str(path.len() - di -1); } else drive = ""; - di = path.lastPos(PATHSEP); - if (di) + di = path.index_last_i(PATHSEP); + if (di >=0) { - dirs = path.left(di); - path = path.right(path.len()-di); + dirs = path.left_str(di + 1); + path = path.right_str(path.len()-di -1); } else dirs = ""; - di = path.lastPos('.'); - if (di) + di = path.index_last_i('.'); + if (di >= 0) { - di --; // don't forget '.' - filebase = path.left(di); - extension =path.right(path.len()-di); + filebase = path.left_str(di); + extension =path.right_str(path.len()-di); } else { @@ -56,24 +56,30 @@ File_path::File_path(String pref) } -///find a file -/** +/** find a file. It will search in the current dir, in the construction-arg, and in any other added path, in this order. */ String -File_path::find(String nm) +File_path::find(String nm)const + { - for (int i=0; i < size(); i++) { + fdebug << "looking for " << nm ; + if ( !nm.length_i() || ( nm == "-" ) ) + return nm; + for (int i=0; i < size(); i++) { + String path = (*this)[i]; path+= "/"+nm; - + fdebug << path << "? "; FILE *f = fopen(path, "r"); // ugh! if (f) { + fdebug << "found\n"; fclose(f); return path; } } - return ""; + fdebug << "\n"; + return ""; }