I have a command-line tool written in Cocoa. Let’s call it processFile. So if I am in the terminal and I type in the command ./processFile foo, it looks for a file named foo.html in the same directory as the executable of processFile. If it finds one, it reads it and does some stuff to create fooProcessed.html.
Now I want to modify my tool so that it looks for foo.html in the directory from which it was launched. So if I am in the terminal with current directory ~/documents/html, and processFile executable is in usr/bin, and I type in
processFile foo
it will find and process the file ~/documents/foo.html.
The problem is that I don’t know how to get the directory from which the tool was invoked. How can I do that?
That’s the current working directory. First of all, any attempt to access the file just using its name and no path will automatically use the working directory. So, if you simply take “foo”, append “.html”, and attempt to open the file, that will work. If the user specified a relative path, like “subdir/foo”, that would also work. It would resolve the relative path starting from the current working directory.
You can also query the working directory using the getcwd() routine.