digitalmars.D.learn - std.path.getDirName is not working correct?
- jicman <jicman_member pathlink.com> Jul 09 2005
- "Jarrett Billingsley" <kb3ctd2 yahoo.com> Jul 09 2005
- jicman <jicman_member pathlink.com> Jul 09 2005
- "Jarrett Billingsley" <kb3ctd2 yahoo.com> Jul 09 2005
- "Walter" <newshound digitalmars.com> Jul 09 2005
- "Shawn Liu" <liuxuhong.cn gmail.com> Jul 10 2005
- Stewart Gordon <smjg_1998 yahoo.com> Jul 18 2005
- jicman <jicman_member pathlink.com> Jul 19 2005
- "Ben Hinkle" <bhinkle mathworks.com> Jul 19 2005
- jicman <jicman_member pathlink.com> Jul 19 2005
Greetings! say, char[] path = "c:\\logs\\somedir"; writef(std.path.getDirName(path)); will return "c:\logs" which is not correct. It should return "c:\logs\somedir" since somedir is the last directory. If it was std.path.getParentDir, then I would agree with the outcome. However, getDirName should return the last directory of the path. Am I correct? (Please be adviced that I have been wrong before. ;-)) thanks, josé
Jul 09 2005
"jicman" <jicman_member pathlink.com> wrote in message news:daou9m$2laq$1 digitaldaemon.com...char[] path = "c:\\logs\\somedir"; writef(std.path.getDirName(path));
try char[] path="c:\\logs\\somedir\\"; I think it's thinking that "somedir" is a filename without an extension (since that's entirely possible). Also, just as a sidenote, to make it easier to write path strings, try WYSIWYG strings: char[] path=`c:\logs\somedir\`; ;)
Jul 09 2005
Jarrett Billingsley says..."jicman" <jicman_member pathlink.com> wrote in message news:daou9m$2laq$1 digitaldaemon.com...char[] path = "c:\\logs\\somedir"; writef(std.path.getDirName(path));
try char[] path="c:\\logs\\somedir\\"; I think it's thinking that "somedir" is a filename without an extension (since that's entirely possible).
Yeah, this works, however, this will be an input from the user. I guess that's another check that I'll have to make. I would have thought that the function would check to whether the last item was a file or not.Also, just as a sidenote, to make it easier to write path strings, try WYSIWYG strings: char[] path=`c:\logs\somedir\`;
:-) Yes, I use this also. or char[] path = r"c:\logs\somedir"; :-) thanks, jic
Jul 09 2005
"jicman" <jicman_member pathlink.com> wrote in message news:dap30j$2pjc$1 digitaldaemon.com...Yeah, this works, however, this will be an input from the user. I guess that's another check that I'll have to make. I would have thought that the function would check to whether the last item was a file or not.
You could check it. Just see if the last character is a '\\' or a '/', and if not, append one.
Jul 09 2005
"jicman" <jicman_member pathlink.com> wrote in message news:dap30j$2pjc$1 digitaldaemon.com...Yeah, this works, however, this will be an input from the user. I guess
another check that I'll have to make. I would have thought that the
would check to whether the last item was a file or not.
It doesn't. It only looks at the form of the string. To test what the things are, that is what the functions in std.file are for.
Jul 09 2005
I think std.path.getDirName() should check whether the input string is directory or not. If not append "\" or "/", then get the dir name. std.file.isdir() can do a check easily. "Walter" <newshound digitalmars.com> дÈëÏûÏ¢ÐÂÎÅ:dapntc$aj4$2 digitaldaemon.com..."jicman" <jicman_member pathlink.com> wrote in message news:dap30j$2pjc$1 digitaldaemon.com...Yeah, this works, however, this will be an input from the user. I guess
another check that I'll have to make. I would have thought that the
would check to whether the last item was a file or not.
It doesn't. It only looks at the form of the string. To test what the things are, that is what the functions in std.file are for.
Jul 10 2005
Shawn Liu wrote:I think std.path.getDirName() should check whether the input string is directory or not. If not append "\" or "/", then get the dir name. std.file.isdir() can do a check easily.
That's because inspecting the local file system is part of the scope of std.file. OTOH, the scope of std.path is to be a collection of string manipulation functions. As such, they don't care about the contents of the local file system, nor whether the pathnames involved even relate to the machine you're running on. Stewart. -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/M d- s:- a->--- UB P+ L E W++ N+++ o K- w++ O? M V? PS- PE- Y? PGP- t- 5? X? R b DI? D G e++>++++ h-- r-- !y ------END GEEK CODE BLOCK------ My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.
Jul 18 2005
Stewart Gordon says...Shawn Liu wrote:I think std.path.getDirName() should check whether the input string is directory or not. If not append "\" or "/", then get the dir name. std.file.isdir() can do a check easily.
That's because inspecting the local file system is part of the scope of std.file. OTOH, the scope of std.path is to be a collection of string manipulation functions. As such, they don't care about the contents of the local file system, nor whether the pathnames involved even relate to the machine you're running on.
Yeah, that's all fine and dandy, however, the function should work properly, or should be named properly or explained properly (too many uses of properly in this sentence is not proper), or not even be written up. If it is string manupulationg functions, it should be in the string functions and explained that these functions are just simulations of what a path libraries should do and do no checking. Nonetheless, if they are made for handling paths, then, every possible properly built path should be taken into consideration. Otherwise, why make the library if they are only going to work half-way? I love libraries, but, they must work fully, otherwise they should not be out there. I am sorry that I am being such a pain with this, but I have spend too many hours trying to go through my code, thinking that it was my logic, when after figuring it out, it was the defective library functions. I still love D and I am sticking with it. I just don't like it when people defend anything without reasoning. I guess I am going to have to write my own libraries for handling paths. thanks, josé
Jul 19 2005
"jicman" <jicman_member pathlink.com> wrote in message news:dbjkel$jsq$1 digitaldaemon.com...Stewart Gordon says...Shawn Liu wrote:I think std.path.getDirName() should check whether the input string is directory or not. If not append "\" or "/", then get the dir name. std.file.isdir() can do a check easily.
That's because inspecting the local file system is part of the scope of std.file. OTOH, the scope of std.path is to be a collection of string manipulation functions. As such, they don't care about the contents of the local file system, nor whether the pathnames involved even relate to the machine you're running on.
Yeah, that's all fine and dandy, however, the function should work properly, or should be named properly or explained properly (too many uses of properly in this sentence is not proper), or not even be written up. If it is string manupulationg functions, it should be in the string functions and explained that these functions are just simulations of what a path libraries should do and do no checking. Nonetheless, if they are made for handling paths, then, every possible properly built path should be taken into consideration. Otherwise, why make the library if they are only going to work half-way? I love libraries, but, they must work fully, otherwise they should not be out there. I am sorry that I am being such a pain with this, but I have spend too many hours trying to go through my code, thinking that it was my logic, when after figuring it out, it was the defective library functions. I still love D and I am sticking with it. I just don't like it when people defend anything without reasoning. I guess I am going to have to write my own libraries for handling paths. thanks, josé
The current phobos behavior matches what I would expect from my Perl (fileparse) and MATLAB (fileparts) experience. Is there an API that you use that checks for the directory existence? Probably the doc could use some work to make it more explicit that the path functions just parse strings.
Jul 19 2005
In article <dbjlob$le8$1 digitaldaemon.com>, Ben Hinkle says..."jicman" <jicman_member pathlink.com> wrote in message news:dbjkel$jsq$1 digitaldaemon.com...Stewart Gordon says...Shawn Liu wrote:I think std.path.getDirName() should check whether the input string is directory or not. If not append "\" or "/", then get the dir name. std.file.isdir() can do a check easily.
That's because inspecting the local file system is part of the scope of std.file. OTOH, the scope of std.path is to be a collection of string manipulation functions. As such, they don't care about the contents of the local file system, nor whether the pathnames involved even relate to the machine you're running on.
Yeah, that's all fine and dandy, however, the function should work properly, or should be named properly or explained properly (too many uses of properly in this sentence is not proper), or not even be written up. If it is string manupulationg functions, it should be in the string functions and explained that these functions are just simulations of what a path libraries should do and do no checking. Nonetheless, if they are made for handling paths, then, every possible properly built path should be taken into consideration. Otherwise, why make the library if they are only going to work half-way? I love libraries, but, they must work fully, otherwise they should not be out there. I am sorry that I am being such a pain with this, but I have spend too many hours trying to go through my code, thinking that it was my logic, when after figuring it out, it was the defective library functions. I still love D and I am sticking with it. I just don't like it when people defend anything without reasoning. I guess I am going to have to write my own libraries for handling paths. thanks, josé
The current phobos behavior matches what I would expect from my Perl (fileparse) and MATLAB (fileparts) experience.
I will test this out with perl and python. I just don't have the time, right now.Is there an API that you use that checks for the directory existence?
Probably the doc could use some work to make it more explicit that the path functions just parse strings.
I wish I had the time, I would help with it. I just don't have it. thanks, josé
Jul 19 2005









"Jarrett Billingsley" <kb3ctd2 yahoo.com> 