DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C (http://www.daniweb.com/forums/forum118.html)
-   -   Need help with expanding a unix path correctly. (http://www.daniweb.com/forums/thread96633.html)

Ratte Nov 13th, 2007 6:56 pm
Need help with expanding a unix path correctly.
 
I am writing client and server programs for a simple FTP.

I am allowed to use chdir, getcwd and getenv.

What would be a correct procedure to expand a user provided path correctly using these functions, assuming of course the user supplied path is stored in a c-string?

Thank you.

Duoas Nov 14th, 2007 12:02 am
Re: Need help with expanding a unix path correctly.
 
User supplied file names must be either absolute or relative to the application. If the file starts with '/' then it must be absolute. Otherwise, it is relative. Just tack it on to the end of the current working directory name, then collapse instances of "./" and "../".

You didn't say whether you are working on Unix or Windows, so you should be able to handle paths that start with a drive letter ("D:/foo/bar" is absolute, but "D:foo/bar" is relative) and that use '\\' and/or '/' as separators.

Personally, I would be inclined to split the path into a deque, manipulate its parts, then join it back together when done.

Hope this helps.

Ratte Nov 14th, 2007 12:11 am
Re: Need help with expanding a unix path correctly.
 
Thanks again, Duoas. Both the server and the client will be on a Solaris (Unix) machine.

The object of this socket/network programming class is to keep things as barebone/simple as possible, so I don't think a deque is an option. Shouldn't the unix chdir function be able to handle both a relative and an absolute path?

Duoas Nov 14th, 2007 1:04 am
Re: Need help with expanding a unix path correctly.
 
Sorry, I had just answered some questions in the C++ forum and forgot that this was the C forum, so a deque is unavailable in C...

Yes, the chdir() function can take both relative and absolute paths.

For parsing the paths I recommend you to the strpbrk() or strchr() functions (both defined in <string.h>).

Good luck.


All times are GMT -4. The time now is 1:57 am.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC