]> git.pld-linux.org Git - packages/wget.git/blob - user.xdg.origin.url.patch
Set the 'user.xdg.origin.url' xattr for downloaded files
[packages/wget.git] / user.xdg.origin.url.patch
1 From 2c968b81d9d9c4025379242b5f560aab441e1430 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= <grawity@gmail.com>
3 Date: Sat, 7 Dec 2013 20:45:00 +0200
4 Subject: [PATCH] Set the 'user.xdg.origin.url' xattr for downloaded files
5
6 ---
7  src/ftp.c  |  2 ++
8  src/http.c |  2 ++
9  src/url.c  | 20 ++++++++++++++++++++
10  src/url.h  |  4 ++++
11  4 files changed, 28 insertions(+)
12
13 diff --git a/src/ftp.c b/src/ftp.c
14 index 1902242..eeffd88 100644
15 --- a/src/ftp.c
16 +++ b/src/ftp.c
17 @@ -1299,6 +1299,8 @@ Error in server response, closing control connection.\n"));
18    else
19      fp = output_stream;
20  
21 +  set_xa (u, fileno(fp));
22 +
23    if (passed_expected_bytes)
24      {
25        print_length (passed_expected_bytes, restval, true);
26 diff --git a/src/http.c b/src/http.c
27 index 53c9818..c99c417 100644
28 --- a/src/http.c
29 +++ b/src/http.c
30 @@ -3123,6 +3123,8 @@ read_header:
31        return err;
32      }
33  
34 +  set_xa (u, fileno(fp));
35 +
36    err = read_response_body (hs, sock, fp, contlen, contrange,
37                              chunked_transfer_encoding,
38                              u->url, warc_timestamp_str,
39 diff --git a/src/url.c b/src/url.c
40 index df63e1c..b41d5ac 100644
41 --- a/src/url.c
42 +++ b/src/url.c
43 @@ -37,6 +37,7 @@ as that of the covered work.  */
44  #include <unistd.h>
45  #include <errno.h>
46  #include <assert.h>
47 +#include <attr/xattr.h>
48  
49  #include "utils.h"
50  #include "url.h"
51 @@ -2200,6 +2201,25 @@ are_urls_equal (const char *u1, const char *u2)
52    return (*p == 0 && *q == 0 ? true : false);
53  }
54  
55 +int
56 +set_xa (const struct url *origin, int fd)
57 +{
58 +  const char *url;
59 +  int res;
60 +
61 +  url = url_string(origin, URL_AUTH_HIDE);
62 +  res = fsetxattr(fd, XA_ORIGIN, url, strlen(url), 0);
63 +  if (res != 0)
64 +    {
65 +      if (errno == ENOTSUP)
66 +        res = 0;
67 +      else
68 +        logprintf (LOG_NOTQUIET, "fsetxattr: %s\n", strerror (errno));
69 +    }
70 +
71 +  return res;
72 +}
73 +
74  #ifdef TESTING
75  /* Debugging and testing support for path_simplify. */
76  
77 diff --git a/src/url.h b/src/url.h
78 index b1c46c1..72234e9 100644
79 --- a/src/url.h
80 +++ b/src/url.h
81 @@ -132,4 +132,8 @@ bool schemes_are_similar_p (enum url_scheme a, enum url_scheme b);
82  
83  bool are_urls_equal (const char *u1, const char *u2);
84  
85 +#define XA_ORIGIN "user.xdg.origin.url"
86 +
87 +int set_xa (const struct url *, int);
88 +
89  #endif /* URL_H */
90 -- 
91 2.3.3
92
93
This page took 0.035274 seconds and 3 git commands to generate.