From: Benjamin R. <Ben...@ep...> - 2004-11-08 19:24:58
|
Hi Robb, Robb Bean writes: > Now, here is my main() including some useful comments: It is still incomplete. OTOH it contains lots of stuff that obviously isn't relevant. I can reduce your code to the following, which at least compiles: >>>>>> #include <string> #include <stdio.h> #include <errno.h> #include <unistd.h> // chdir() #ifdef __WIN32__ #define DELIM "\\" #else #define DELIM "/" #endif class Pathname : public std::string { public: Pathname() : std::string() {} Pathname(const std::string &path) : std::string(path) {} Pathname directory() { return this->substr(0, M_path_pos()+1); } Pathname fileName() { return this->substr(M_path_pos()+1); } void setAsCwd() { if (::chdir(this->directory().c_str()) != 0) { fprintf(stderr, "Can't chdir to '%s'\n", this->directory().c_str()); fflush(stderr); throw errno; } } protected: const size_type M_path_pos() { return this->rfind(DELIM); } }; int main(int argc, char **argv) { Pathname tempDatei; if (NULL == argv[1]) { fprintf(stderr,"No param\n"); fflush(stderr); return 1; } Pathname datei(argv[1]); datei.setAsCwd(); datei = datei.fileName(); printf("* Starting to edit \"%s\"\n", datei.c_str()); return 0; } <<<<<< Using that code I get these results: C:\tmp> g++ -D__WIN32__ -o awl.exe -Wall -pedantic awl.cpp g++ -mno-cygwin -D__WIN32__ -o awl.exe -Wall -pedantic awl.cpp C:\tmp> awl abc awl abc Can't chdir to '' abnormal program termination C:\tmp> awl abc/def awl abc/def Can't chdir to '' abnormal program termination C:\tmp> awl abc\def awl abc\def Can't chdir to 'abc\' abnormal program termination C:\tmp> awl c:\tmp\abc awl c:\tmp\abc * Starting to edit "abc" C:\tmp> All of these results are as expected. What is it that you get differently? benny |