954,136 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

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.

Ratte
Light Poster
38 posts since Oct 2007
Reputation Points: 10
Solved Threads: 0
 

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.

Duoas
Postaholic
2,043 posts since Oct 2007
Reputation Points: 1,140
Solved Threads: 229
 

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?

Ratte
Light Poster
38 posts since Oct 2007
Reputation Points: 10
Solved Threads: 0
 

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 ).

Good luck.

Duoas
Postaholic
2,043 posts since Oct 2007
Reputation Points: 1,140
Solved Threads: 229
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You