Overview
Comment: | OFFileURLHandler: Add support for setting mtime |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | set-mtime |
Files: | files | file ages | folders |
SHA3-256: |
1273a3a39ae35b6a1f03071e8dd33da6 |
User & Date: | js on 2020-06-01 17:16:15 |
Other Links: | branch diff | manifest | tags |
Context
2020-06-01
| ||
17:55 | OFFileURLHandler: Support setting mtime on Windows check-in: 05da423cc9 user: js tags: set-mtime | |
17:16 | OFFileURLHandler: Add support for setting mtime check-in: 1273a3a39a user: js tags: set-mtime | |
00:17 | README.md: Add documentation section check-in: 1d627ae293 user: js tags: trunk | |
Changes
Modified src/OFFileURLHandler.m from [b6ef19d4e0] to [1c67864bc7].
︙ | ︙ | |||
23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # include <dirent.h> #endif #include "unistd_wrapper.h" #ifdef HAVE_SYS_STAT_H # include <sys/stat.h> #endif #ifdef HAVE_PWD_H # include <pwd.h> #endif #ifdef HAVE_GRP_H # include <grp.h> #endif | > | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # include <dirent.h> #endif #include "unistd_wrapper.h" #ifdef HAVE_SYS_STAT_H # include <sys/stat.h> #endif #include <sys/time.h> #ifdef HAVE_PWD_H # include <pwd.h> #endif #ifdef HAVE_GRP_H # include <grp.h> #endif |
︙ | ︙ | |||
593 594 595 596 597 598 599 600 601 602 603 604 605 606 | setSymbolicLinkDestinationAttribute(ret, URL); #endif objc_autoreleasePoolPop(pool); return ret; } - (void)of_setPOSIXPermissions: (OFNumber *)permissions ofItemAtURL: (OFURL *)URL attributes: (of_file_attributes_t)attributes { #ifdef OF_FILE_MANAGER_SUPPORTS_PERMISSIONS uint16_t mode = permissions.uInt16Value & 0777; | > > > > > > > > > > > > > > > > > > > > > > > | 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 | setSymbolicLinkDestinationAttribute(ret, URL); #endif objc_autoreleasePoolPop(pool); return ret; } - (void)of_setModificationDate: (OFDate *)date ofItemAtURL: (OFURL *)URL attributes: (of_file_attributes_t)attributes { of_time_interval_t timeInterval = date.timeIntervalSince1970; OFString *path = URL.fileSystemRepresentation; struct timeval times[2] = { { .tv_sec = (time_t)timeInterval, .tv_usec = (int)((timeInterval - times[0].tv_sec) * 1000) }, times[0] }; if (utimes([path cStringWithEncoding: [OFLocale encoding]], times) != 0) @throw [OFSetItemAttributesFailedException exceptionWithURL: URL attributes: attributes failedAttribute: of_file_attribute_key_modification_date errNo: errno]; } - (void)of_setPOSIXPermissions: (OFNumber *)permissions ofItemAtURL: (OFURL *)URL attributes: (of_file_attributes_t)attributes { #ifdef OF_FILE_MANAGER_SUPPORTS_PERMISSIONS uint16_t mode = permissions.uInt16Value & 0777; |
︙ | ︙ | |||
707 708 709 710 711 712 713 | @throw [OFInvalidArgumentException exception]; keyEnumerator = [attributes keyEnumerator]; objectEnumerator = [attributes objectEnumerator]; while ((key = [keyEnumerator nextObject]) != nil && (object = [objectEnumerator nextObject]) != nil) { | | > > > > | 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 | @throw [OFInvalidArgumentException exception]; keyEnumerator = [attributes keyEnumerator]; objectEnumerator = [attributes objectEnumerator]; while ((key = [keyEnumerator nextObject]) != nil && (object = [objectEnumerator nextObject]) != nil) { if ([key isEqual: of_file_attribute_key_modification_date]) [self of_setModificationDate: object ofItemAtURL: URL attributes: attributes]; else if ([key isEqual: of_file_attribute_key_posix_permissions]) [self of_setPOSIXPermissions: object ofItemAtURL: URL attributes: attributes]; else if ([key isEqual: of_file_attribute_key_owner]) [self of_setOwner: object andGroup: nil ofItemAtURL: URL |
︙ | ︙ |