mirror of
https://github.com/clearlinux/clr-debug-info.git
synced 2026-09-06 13:51:38 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
efeed3e83f | ||
|
|
f5542e7fbb | ||
|
|
be8a99da53 | ||
|
|
c9304402e2 | ||
|
|
6e202f13f7 | ||
|
|
6735f8f6ed | ||
|
|
8b3777ab99 | ||
|
|
84350939ef | ||
|
|
72b1120a40 | ||
|
|
d3d5fab301 | ||
|
|
e377433a9d | ||
|
|
afa92c77b1 | ||
|
|
a01ce4c329 |
@@ -4,6 +4,7 @@ Description=Clear Linux debuginfo daemon
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/clr_debug_daemon
|
||||
DefaultDependencies=no
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
@@ -5,6 +5,7 @@ After=clr_debug_daemon.service
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/clr_debug_fuse
|
||||
DefaultDependencies=no
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ([2.66])
|
||||
AC_INIT(clr-debug-info, 32, arjan@linux.intel.com)
|
||||
AC_INIT(clr-debug-info, 42, arjan@linux.intel.com)
|
||||
AM_INIT_AUTOMAKE([foreign -Wall -W subdir-objects])
|
||||
AM_SILENT_RULES([yes])
|
||||
AC_PROG_CC
|
||||
|
||||
@@ -85,6 +85,7 @@ void try_to_get(const char *path, int pid, time_t timestamp)
|
||||
if (ret == 0 && cred.pid == pid) {
|
||||
printf("Recursion\n");
|
||||
close(sockfd);
|
||||
return;
|
||||
}
|
||||
|
||||
command = NULL;
|
||||
|
||||
+1
-1
@@ -113,7 +113,7 @@ bool nc_copy_file(const char *src, const char *dst, mode_t mode, bool remove_tar
|
||||
while (true) {
|
||||
if ((r = read(src_fd, &buffer, sizeof(buffer))) < 0) {
|
||||
ret = false;
|
||||
break;
|
||||
goto end;
|
||||
}
|
||||
if (write(dest_fd, buffer, sizeof(buffer)) != r) {
|
||||
break;
|
||||
|
||||
+7
-5
@@ -123,8 +123,8 @@ static inline unsigned nc_hashmap_get_hash(NcHashmap *self, const void *key)
|
||||
return hash;
|
||||
}
|
||||
|
||||
static bool nc_hashmap_insert_bucket(NcHashmap *self, NcHashmapEntry *buckets, int n_buckets,
|
||||
unsigned hash, const void *key, void *value)
|
||||
static int nc_hashmap_insert_bucket(NcHashmap *self, NcHashmapEntry *buckets, int n_buckets,
|
||||
unsigned hash, const void *key, void *value)
|
||||
{
|
||||
NcHashmapEntry *row = &(buckets[hash % n_buckets]);
|
||||
NcHashmapEntry *head = NULL;
|
||||
@@ -458,10 +458,12 @@ bool nc_hashmap_iter_next(NcHashmapIter *citer, void **key, void **value)
|
||||
}
|
||||
item = &(map->buckets[iter->bucket]);
|
||||
}
|
||||
if (item && item->occ) {
|
||||
goto success;
|
||||
if (item) {
|
||||
if (item->occ) {
|
||||
goto success;
|
||||
}
|
||||
item = item->next;
|
||||
}
|
||||
item = item->next;
|
||||
}
|
||||
return false;
|
||||
|
||||
|
||||
+28
-3
@@ -162,6 +162,7 @@ static int curl_get_file(const char *url, const char *prefix, time_t timestamp)
|
||||
{
|
||||
CURLcode code;
|
||||
long ret;
|
||||
long changed;
|
||||
int fd;
|
||||
char filename[PATH_MAX];
|
||||
CURL *curl = NULL;
|
||||
@@ -190,7 +191,21 @@ static int curl_get_file(const char *url, const char *prefix, time_t timestamp)
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);
|
||||
curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
|
||||
curl_easy_setopt(curl, CURLOPT_PIPEWAIT, 1);
|
||||
|
||||
/*
|
||||
* Some sane timeout values to prevent stalls
|
||||
*
|
||||
* Connect timeout is for first connection to the server.
|
||||
* The low speed timeout is for slow downloads. Since many
|
||||
* files are several mB large, we want to prevent them from
|
||||
* taking forever. (1kB/sec avg over 30secs).
|
||||
*/
|
||||
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 30);
|
||||
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 30);
|
||||
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1024);
|
||||
|
||||
/* request timestamp of files from server */
|
||||
curl_easy_setopt(curl, CURLOPT_FILETIME, 1);
|
||||
|
||||
if (timestamp) {
|
||||
curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
|
||||
@@ -219,6 +234,17 @@ static int curl_get_file(const char *url, const char *prefix, time_t timestamp)
|
||||
}
|
||||
|
||||
if (ret == 200) {
|
||||
/* get timestamp, if any */
|
||||
curl_easy_getinfo(curl, CURLINFO_FILETIME, &changed);
|
||||
if (changed >= 0) {
|
||||
struct timespec times[2];
|
||||
times[0].tv_sec = (time_t)changed;
|
||||
times[0].tv_nsec = 0;
|
||||
times[1].tv_sec = (time_t)changed;
|
||||
times[1].tv_nsec = 0;
|
||||
futimens(fd, times);
|
||||
}
|
||||
|
||||
autofree(char) *command = NULL;
|
||||
// printf("Filename is %s\n", filename);
|
||||
|
||||
@@ -226,7 +252,7 @@ static int curl_get_file(const char *url, const char *prefix, time_t timestamp)
|
||||
stat(filename, &statbuf);
|
||||
if (statbuf.st_size > 0 &&
|
||||
asprintf(&command,
|
||||
"tar -C /var/cache/debuginfo/%s --no-same-owner -xf %s",
|
||||
"tar -C /var/cache/debuginfo/%s --no-same-owner --no-same-permissions -xf %s",
|
||||
prefix,
|
||||
filename) >= 0) {
|
||||
if (system(command) != 0) {
|
||||
@@ -271,7 +297,6 @@ static void *server_thread(void *arg)
|
||||
if (ret < 0) {
|
||||
goto thread_end;
|
||||
}
|
||||
prefix = buf;
|
||||
c = strchr(buf, ':');
|
||||
if (!c) {
|
||||
goto thread_end;
|
||||
|
||||
Reference in New Issue
Block a user