author | Rich Burridge <rich.burridge@oracle.com> |
Thu, 08 Sep 2016 09:15:40 -0700 | |
changeset 6861 | 6110892450ff |
parent 5309 | aa644d83002b |
permissions | -rw-r--r-- |
5309
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
1 |
flock system call is not available on Solaris but it can be |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
2 |
replaced by calling fcntl. This patch will be sent upstream |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
3 |
after being reworked into a format that will be acceptable. |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
4 |
|
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
5 |
--- wget-1.17.1/src/hsts.c.orig Tue Jan 12 09:14:54 2016 |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
6 |
+++ wget-1.17.1/src/hsts.c Tue Jan 12 09:16:55 2016 |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
7 |
@@ -49,6 +49,7 @@ |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
8 |
#include <string.h> |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
9 |
#include <stdio.h> |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
10 |
#include <sys/file.h> |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
11 |
+#include <fcntl.h> |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
12 |
|
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
13 |
struct hsts_store { |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
14 |
struct hash_table *table; |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
15 |
@@ -498,6 +499,7 @@ |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
16 |
struct_stat st; |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
17 |
FILE *fp = NULL; |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
18 |
int fd = 0; |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
19 |
+ struct flock lock_data; |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
20 |
|
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
21 |
if (filename && hash_table_count (store->table) > 0) |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
22 |
{ |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
23 |
@@ -506,7 +508,11 @@ |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
24 |
{ |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
25 |
/* Lock the file to avoid potential race conditions */ |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
26 |
fd = fileno (fp); |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
27 |
- flock (fd, LOCK_EX); |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
28 |
+ lock_data.l_start = 0; |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
29 |
+ lock_data.l_len = 0; |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
30 |
+ lock_data.l_whence = SEEK_SET; |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
31 |
+ lock_data.l_type = F_WRLCK; |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
32 |
+ fcntl(fd, F_SETLKW, &lock_data); |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
33 |
|
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
34 |
/* If the file has changed, merge the changes with our in-memory data |
aa644d83002b
22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff
changeset
|
35 |
before dumping them to the file. |