develooper Front page | perl.perl5.porters | Postings from September 2005

Re: Pls Review: File::System::Spec

Thread Previous | Thread Next
From:
John E. Malmberg
Date:
September 30, 2005 13:23
Subject:
Re: Pls Review: File::System::Spec
Message ID:
433D9EB2.2050605@qsl.net
Michael G Schwern wrote:
> On Fri, Sep 30, 2005 at 12:25:04PM -0400, John E. Malmberg wrote:
> 
>>>The current interface is good enough for the default filesystem, I
>>>guess, but you should  be able to ask about a specific file system,
>>>e.g.:
>>>
>>>	my $x = File::System::Spec->new(File::Spec->catfile(.. the path  
>>>	...));
>>>
>>>	$x->case_tolerant; # asks about the filesystem hosting the path
>>
>>I envisioned that this module would be for setting or reading 
>>properties, so a 'new' method does not seem to fit in with that.
> 
> A new definately fits in because there is more than one file system on a
> system, thus more than one object.  Starting out from scratch with the
> assumption that there is only one filesytem to worry about deliberately
> cripples the interface.
> 
> And if nothing else it means you don't have to write File::System::Spec
> over and over and over and over again.

I misunderstood the meaning of the new method.  I see now that it 
returns a new storage variable with the properties underneath it.

I do not know how to have vms.c override the new method because it may 
not know about properties that have been added since the last update to 
vms.c.

Would a push and pop methods also be needed to allow saving and 
restoring of the properties before a change?

>>And I expect that more methods to expose properties of file systems will 
>>end up being added to this module as the maintainers of other platforms 
>>add their contributions.
> 
> I think we need to coordinate because I already have started this module,
> too and I have a *really* good idea of the sorts of things I need to know.
> http://svn.schwern.org/svn/CPAN/File-System-Spec/trunk/lib/File/System/Spec.pm

That describes for the current values.

What is probably also needed is the ability to also get the following:

A. The values to work with any file system on the platform.

B. The values that can be changed for a specific file system / platform

C. The minimum values that can be set for a file system / platform.

D. The maximum values that can be set for a file system / platform.

E. The normal default values for a file system/platform.

For some of the properties, there needs to be a way to indicate that the 
answer is not known, or not applicable.

And of course just because a file system has those properties does not 
mean that the Perl on that platform can handle them, which is currently 
the case on VMS.

For example, the ODS-5 file system has support for hard links before 
8.2, but the 8.2 operating system is the only one that allows obtaining 
that information.

And prior to that it supported the ability to have multiple filenames 
point to the same file on the disk, but that feature was not 100% 
compliant with the expectations of POSIX program for hard links, but was 
good enough for most uses of it.

So a property of "posix_hardlinks" may be useful in addition.

The "is_versioning" also applies to the ISO-9660 file system for CD-ROMS 
even though that I am not aware of any operating system other than VMS 
that can access the older versions.


The table at the following URL shows a few other properties that Perl 
scripts may need to know about.

http://h71000.www7.hp.com/doc/82FINAL/5763/5763pro_003.html#feature_logicals_sec

Many of them are special case things that Perl on VMS is already taking 
care of, and total flexibility of supporting all the options is probably 
not needed, many of them are fine tuning on the degree of UNIX behavior.
And many of the options are mutually exclusive.  And some of them only 
exists to provide backwards compatibility with what has turned out to be 
an incorrect behavior.

My simplified list from that would be these:

   remove_open_files - Open Files can be unlinked.

   wide_file_names - 16 bit wide unicode file names supported.  (Can 
Perl even deal with these now?)

   unix_umask_behavior - Support UNIX umask behavior.

And what type of timeframe is planned for this, as it is blocking my 
getting Perl on VMS to support the current features of the ODS-5 file 
system.

-John
wb8tyw@qsl.net
Personal Opinion Only

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About