[Win32utils-devel] File.basename issue
Park Heesob
phasis at nownuri.net
Fri Aug 19 21:04:58 EDT 2005
Hi Dan,
> Hi all,
>
> After a recent ruby-talk thread I decided to go back and refactor the
> File.basename method in win32-file. Sure enough, after a I added some
> more tests I discovered a couple minor bugs.
>
> After reworking it, I still can't get one test to pass. Specifically,
> multiple trailing slashes. Here's the test that shows the issue:
>
> assert_equal("bar", File.basename("C:/foo/bar\\\\"))
>
> Instead of "bar", I end up with "bar\" because I only call
> PathRemoveBackslash() once. I figured I could solve it with something
> like this:
>
> while(PathRemoveBackslash(path)){}
>
> But that doesn't work. I thought you could just call this until you hit
> NULL, but I can't seem to make it work. I suspect the answer is easy,
> I'm just not seeing it for some reason.
>
> Ideas?
>
> Dan
>
The msdn document reads
Returns the address of the NULL that replaced the backslash, or the
address of the last character if it's not a backslash.
^^^^^^^^^^^^^^^^
You should use
while(!*PathRemoveBackslash(path));
Regards,
Park Heesob
More information about the win32utils-devel
mailing list