Re: [rt.cpan.org #47574]

[email protected] (Bill Luebkert)
Newsgroups perl.libwin32
Message-ID <[email protected]>
xrmb via RT wrote:
> Sat Jul 04 22:31:27 2009: Request 47574 was acted upon.
> Transaction: Ticket created by xrmb
>        Queue: Win32-File
>      Subject: (No subject given)
>    Broken in: 0.06
>     Severity: Critical
>        Owner: Nobody
>   Requestors: [email protected]
>       Status: new
>  Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=47574 >
> 
> 
> I'm using active state perl 5.10.1004, and when I try to use
> SetAttributes to set the compress flag I get a true return value
> (indicating ok?), but the file is not compressed.

I'd call it a lack of documentation - Set doesn't allow COMPRESS.

Note 'Remarks' section of manual page:

----------------------------------------------------------------------------------------------

The SetFileAttributes function sets a file's attributes.

BOOL SetFileAttributes (
     LPCTSTR  lpFileName,	// address of filename
     DWORD  dwFileAttributes 	// address of attributes to set
);

Parameters
     lpFileName
         Points to a string that specifies the name of the file whose attributes are to be set.
         Windows 95: This string must not exceed MAX_PATH characters.
         Windows NT: There is a default string size limit for paths of MAX_PATH characters. This
         limit is related to how the SetFileAttributes function parses paths. An application can
         transcend this limit and send in paths longer than MAX_PATH characters by calling the wide
         (W) version of SetFileAttributes and prepending "\\?\" to the path. The "\\?\" tells the
         function to turn off path parsing; it lets paths longer than MAX_PATH be used with
         SetFileAttributesW. This also works with UNC names. The "\\?\" is ignored as part of the
         path. For example, "\\?\C:\myworld\private" is seen as "C:\myworld\private", and
         "\\?\UNC\bill_g_1\hotstuff\coolapps" is seen as "\\bill_g_1\hotstuff\coolapps".

dwFileAttributes
     Specifies the file attributes to set for the file. This parameter can be a combination
     of the following values. However, all other values override FILE_ATTRIBUTE_NORMAL.

     Value	Meaning

     FILE_ATTRIBUTE_ARCHIVE      The file is an archive file. Applications use this value to mark files for backup or removal.
     FILE_ATTRIBUTE_NORMAL       The file has no other attributes set. This value is valid only if used alone.
     FILE_ATTRIBUTE_HIDDEN       The file is hidden. It is not included in an ordinary directory listing.
     FILE_ATTRIBUTE_READONLY     The file is read-only. Applications can read the file but cannot write to it or delete it.
     FILE_ATTRIBUTE_SYSTEM       The file is part of the operating system or is used exclusively by it.
     FILE_ATTRIBUTE_TEMPORARY    The file is being used for temporary storage. File systems attempt to keep all of the data
                                 in memory for quicker access rather than flushing the data back to mass storage. A temporary
                                 file should be deleted by the application as soon as it is no longer needed.

Return Value
     If the function succeeds, the return value is TRUE.
     If the function fails, the return value is FALSE. To get extended error information, call GetLastError.

Remarks
     You cannot use the SetFileAttribute function to set a file's compression state. Setting
     FILE_ATTRIBUTE_COMPRESSED in the dwFileAttributes parameter does nothing. Use the DeviceIoControl
     function and the FSCTL_SET_COMPRESSION operation to set a file's compression state.

----------------------------------------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.