Overview
Comment: | Merge trunk into 1.1 branch |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | 1.1 |
Files: | files | file ages | folders |
SHA3-256: |
69075d70827361d8c7874c45f582a1d3 |
User & Date: | js on 2024-04-22 00:02:09 |
Other Links: | branch diff | manifest | tags |
Context
2024-04-27
| ||
01:56 | GitHub Actions: Replace macos-latest with macos-12 check-in: c663f94788 user: js tags: 1.1 | |
2024-04-22
| ||
00:02 | Merge trunk into 1.1 branch check-in: 69075d7082 user: js tags: 1.1 | |
2024-04-21
| ||
19:55 | Add missing NTAPI for RtlGenRandom check-in: f61f430bfb user: js tags: trunk | |
2024-04-20
| ||
17:52 | Set version to 1.1.2 check-in: 7e94534636 user: js tags: 1.1, 1.1.2-release | |
Changes
Modified src/OFFileIRIHandler.m from [d9639e50f4] to [ae11241b71].
︙ | ︙ | |||
41 42 43 44 45 46 47 | #endif #if defined(OF_FREEBSD) || defined(OF_NETBSD) # include <sys/extattr.h> #endif #ifdef OF_HAIKU # include <kernel/fs_attr.h> #endif | < < < | 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #endif #if defined(OF_FREEBSD) || defined(OF_NETBSD) # include <sys/extattr.h> #endif #ifdef OF_HAIKU # include <kernel/fs_attr.h> #endif #ifdef OF_DJGPP # include <syslimits.h> #endif #ifdef HAVE_FCNTL_H # include <fcntl.h> #endif |
︙ | ︙ | |||
147 148 149 150 151 152 153 | releaseReaddirMutex(void) { [readdirMutex release]; } #endif #ifdef OF_WINDOWS | < > > > > > > > > > > > > > | 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | releaseReaddirMutex(void) { [readdirMutex release]; } #endif #ifdef OF_WINDOWS static WINAPI BOOLEAN (*createSymbolicLinkWFuncPtr)(LPCWSTR, LPCWSTR, DWORD); static WINAPI BOOLEAN (*createHardLinkWFuncPtr)(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); #endif #ifdef OF_FREEBSD static const char *namespaces[] = EXTATTR_NAMESPACE_NAMES; static int numNamespaces = sizeof(namespaces) / sizeof(*namespaces); #endif #ifdef OF_WINDOWS static OFTimeInterval filetimeToTimeInterval(const FILETIME *filetime) { return (double)((int64_t)filetime->dwHighDateTime << 32 | filetime->dwLowDateTime) / 10000000.0 - 11644473600.0; } static FILETIME timeIntervalToFiletime(OFTimeInterval timeInterval) { uint64_t timestamp = (uint64_t)((timeInterval + 11644473600.0) * 10000000.0); FILETIME filetime = { .dwHighDateTime = timestamp >> 32, .dwLowDateTime = timestamp & 0xFFFFFFFF }; return filetime; } static int lastError(void) { switch (GetLastError()) { case ERROR_FILE_NOT_FOUND: case ERROR_PATH_NOT_FOUND: |
︙ | ︙ | |||
777 778 779 780 781 782 783 | #endif #if defined(OF_HAVE_THREADS) && !defined(__GLIBC__) && !defined(OF_WINDOWS) readdirMutex = [[OFMutex alloc] init]; atexit(releaseReaddirMutex); #endif #ifdef OF_WINDOWS | < < < < | 786 787 788 789 790 791 792 793 794 795 796 797 798 799 | #endif #if defined(OF_HAVE_THREADS) && !defined(__GLIBC__) && !defined(OF_WINDOWS) readdirMutex = [[OFMutex alloc] init]; atexit(releaseReaddirMutex); #endif #ifdef OF_WINDOWS if ((module = GetModuleHandleA("kernel32.dll")) != NULL) { createSymbolicLinkWFuncPtr = (WINAPI BOOLEAN (*)(LPCWSTR, LPCWSTR, DWORD)) GetProcAddress(module, "CreateSymbolicLinkW"); createHardLinkWFuncPtr = (WINAPI BOOLEAN (*)(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES)) |
︙ | ︙ | |||
895 896 897 898 899 900 901 | if (lastAccessDate == nil) lastAccessDate = modificationDate; if (modificationDate == nil) modificationDate = lastAccessDate; #if defined(OF_WINDOWS) | < < | | | | > | > > > > > > > > > > > > > > > | > | < < > | | | | | | < < < < < < < < < < < < < | < < < < < < < < < < < < < | 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 | if (lastAccessDate == nil) lastAccessDate = modificationDate; if (modificationDate == nil) modificationDate = lastAccessDate; #if defined(OF_WINDOWS) FILETIME accessTime = timeIntervalToFiletime( lastAccessDate.timeIntervalSince1970); FILETIME modificationTime = timeIntervalToFiletime( modificationDate.timeIntervalSince1970); HANDLE handle; if ([OFSystemInfo isWindowsNT]) handle = CreateFileW(path.UTF16String, FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); else handle = CreateFileA( [path cStringWithEncoding: [OFLocale encoding]], FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (handle == NULL) @throw [OFSetItemAttributesFailedException exceptionWithIRI: IRI attributes: attributes failedAttribute: attributeKey errNo: lastError()]; if (!SetFileTime(handle, NULL, &accessTime, &modificationTime)) { int errNo = lastError(); CloseHandle(handle); @throw [OFSetItemAttributesFailedException exceptionWithIRI: IRI attributes: attributes failedAttribute: attributeKey errNo: errNo]; } CloseHandle(handle); #elif defined(OF_AMIGAOS) /* AmigaOS does not support access time. */ OFTimeInterval modificationTime = modificationDate.timeIntervalSince1970; struct Locale *locale; struct DateStamp date; |
︙ | ︙ |
Modified src/OFObject.m from [88eeb2453d] to [aac1ccf77b].
︙ | ︙ | |||
79 80 81 82 83 84 85 86 87 88 89 90 91 92 | #if defined(OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR) extern id OFForward(id, SEL, ...); extern struct Stret OFForward_stret(id, SEL, ...); #else # define OFForward OFMethodNotFound # define OFForward_stret OFMethodNotFound_stret #endif struct PreIvars { #ifdef OF_MSDOS ptrdiff_t offset; #endif int retainCount; #if !defined(OF_HAVE_ATOMIC_OPS) && !defined(OF_AMIGAOS) | > > > > | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | #if defined(OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR) extern id OFForward(id, SEL, ...); extern struct Stret OFForward_stret(id, SEL, ...); #else # define OFForward OFMethodNotFound # define OFForward_stret OFMethodNotFound_stret #endif #ifdef OF_WINDOWS static BOOLEAN NTAPI (*RtlGenRandomFuncPtr)(PVOID, ULONG); #endif struct PreIvars { #ifdef OF_MSDOS ptrdiff_t offset; #endif int retainCount; #if !defined(OF_HAVE_ATOMIC_OPS) && !defined(OF_AMIGAOS) |
︙ | ︙ | |||
188 189 190 191 192 193 194 | if (ptr == NULL) return; free((void *)((uintptr_t)ptr - offset)); } #endif | | > > > > > > > > > > > > | 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | if (ptr == NULL) return; free((void *)((uintptr_t)ptr - offset)); } #endif #if (!defined(HAVE_ARC4RANDOM) && !defined(HAVE_GETRANDOM)) || \ defined(OF_WINDOWS) static OFOnceControl randomOnceControl = OFOnceControlInitValue; static void initRandom(void) { struct timeval tv; # ifdef OF_WINDOWS HANDLE handle; if ((handle = GetModuleHandleA("advapi32.dll")) != NULL && (RtlGenRandomFuncPtr = (BOOLEAN NTAPI (*)(PVOID, ULONG)) GetProcAddress(handle, "SystemFunction036")) != NULL) return; # endif # ifdef HAVE_RANDOM gettimeofday(&tv, NULL); srandom((unsigned)(tv.tv_sec ^ tv.tv_usec)); # else gettimeofday(&tv, NULL); srand((unsigned)(tv.tv_sec ^ tv.tv_usec)); |
︙ | ︙ | |||
216 217 218 219 220 221 222 | #elif defined(HAVE_GETRANDOM) uint16_t buffer; OFEnsure(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer)); return buffer; #else | > | > > > > > > > | > > > > > > > > > > > > > > > > > > > > | 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 | #elif defined(HAVE_GETRANDOM) uint16_t buffer; OFEnsure(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer)); return buffer; #else OFOnce(&randomOnceControl, initRandom); # ifdef OF_WINDOWS if (RtlGenRandomFuncPtr != NULL) { uint16_t buffer; OFEnsure(RtlGenRandomFuncPtr(&buffer, sizeof(buffer))); return buffer; } # endif # ifdef HAVE_RANDOM return random() & 0xFFFF; # else return rand() & 0xFFFF; # endif #endif } uint32_t OFRandom32(void) { #if defined(HAVE_ARC4RANDOM) return arc4random(); #elif defined(HAVE_GETRANDOM) uint32_t buffer; OFEnsure(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer)); return buffer; #else # ifdef OF_WINDOWS OFOnce(&randomOnceControl, initRandom); if (RtlGenRandomFuncPtr != NULL) { uint32_t buffer; OFEnsure(RtlGenRandomFuncPtr(&buffer, sizeof(buffer))); return buffer; } # endif return ((uint32_t)OFRandom16() << 16) | OFRandom16(); #endif } uint64_t OFRandom64(void) { #if defined(HAVE_ARC4RANDOM_BUF) uint64_t buffer; arc4random_buf(&buffer, sizeof(buffer)); return buffer; #elif defined(HAVE_GETRANDOM) uint64_t buffer; OFEnsure(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer)); return buffer; #else # ifdef OF_WINDOWS OFOnce(&randomOnceControl, initRandom); if (RtlGenRandomFuncPtr != NULL) { uint64_t buffer; OFEnsure(RtlGenRandomFuncPtr(&buffer, sizeof(buffer))); return buffer; } # endif return ((uint64_t)OFRandom32() << 32) | OFRandom32(); #endif } void OFHashInit(unsigned long *hash) { |
︙ | ︙ |