From 62212f7c0a9e27ca7fcbf39ec1605419d463ccfd Mon Sep 17 00:00:00 2001 From: guy luz Date: Tue, 11 Sep 2018 19:06:14 +0300 Subject: [PATCH 1/8] indent Indenting using sublime --- .travis.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index 29bfa52..f7c926d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,17 +1,17 @@ os: - - linux - - osx + - linux + - osx -language: c + language: c -compiler: - - gcc - - clang + compiler: + - gcc + - clang -script: make + script: make -notifications: - email: - on_success: never - on_failure: always + notifications: + email: + on_success: never + on_failure: always From b6bc733fce797d53441a5fb426b7d5d2fd24a6c3 Mon Sep 17 00:00:00 2001 From: guy luz Date: Tue, 11 Sep 2018 19:09:01 +0300 Subject: [PATCH 2/8] Indent Indenting using sublime --- hlist.c | 94 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/hlist.c b/hlist.c index c57eb91..5dfc8be 100644 --- a/hlist.c +++ b/hlist.c @@ -24,64 +24,64 @@ static int max_hlist_size = 2; void set_hlist_size(double throughput_wait_secs) { -int new_size; + int new_size; -new_size = ceil(10.0 / throughput_wait_secs); -if (new_size > 1) - max_hlist_size = new_size; + new_size = ceil(10.0 / throughput_wait_secs); + if (new_size > 1) + max_hlist_size = new_size; } int add_to_hlist(hlist **begin, hlist **end, int size, int value) { -int ret; + int ret; -if (*begin == NULL) { - if ((*begin = malloc(sizeof(hlist))) == NULL) - return 0; - *end = *begin; - (*begin)->next = NULL; - (*begin)->prev = NULL; - ret = 1; -} -else if (size == max_hlist_size) { - hlist *tmp = (*end)->prev; - tmp->next = NULL; - (*end)->next = *begin; - (*end)->prev = NULL; - *begin = *end; - *end = tmp; - (*begin)->next->prev = *begin; - ret = 0; -} -else { - hlist *new = malloc(sizeof(hlist)); - if (!new) - return 0; - new->next = *begin; - new->prev = NULL; - *begin = new; - (*begin)->next->prev = *begin; - ret = 1; -} -(*begin)->value = value; -return ret; + if (*begin == NULL) { + if ((*begin = malloc(sizeof(hlist))) == NULL) + return 0; + *end = *begin; + (*begin)->next = NULL; + (*begin)->prev = NULL; + ret = 1; + } + else if (size == max_hlist_size) { + hlist *tmp = (*end)->prev; + tmp->next = NULL; + (*end)->next = *begin; + (*end)->prev = NULL; + *begin = *end; + *end = tmp; + (*begin)->next->prev = *begin; + ret = 0; + } + else { + hlist *new = malloc(sizeof(hlist)); + if (!new) + return 0; + new->next = *begin; + new->prev = NULL; + *begin = new; + (*begin)->next->prev = *begin; + ret = 1; + } + (*begin)->value = value; + return ret; } void free_hlist(hlist *begin) { -hlist *tmp = begin; + hlist *tmp = begin; -while (begin) { - tmp = begin->next; - free(begin); - begin = tmp; -} + while (begin) { + tmp = begin->next; + free(begin); + begin = tmp; + } } int get_hlist_average(hlist *begin, int size) { -unsigned long long avg = 0; + unsigned long long avg = 0; -while (begin) { - avg += begin->value; - begin = begin->next; -} -return avg / size; + while (begin) { + avg += begin->value; + begin = begin->next; + } + return avg / size; } From 421e267f9c230b8212ace7ebd39ab9769da33a1f Mon Sep 17 00:00:00 2001 From: guy luz Date: Tue, 11 Sep 2018 19:09:54 +0300 Subject: [PATCH 3/8] Indent Indenting using sublime --- hlist.h | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/hlist.h b/hlist.h index eec6bb3..0a4fde0 100644 --- a/hlist.h +++ b/hlist.h @@ -1,27 +1,27 @@ /* - Copyright (C) 2016 Xfennec, CQFD Corp. + Copyright (C) 2016 Xfennec, CQFD Corp. - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see . + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ #ifndef PROGRESS_HLIST_H #define PROGRESS_HLIST_H typedef struct hlist { - struct hlist *prev; - struct hlist *next; - int value; + struct hlist *prev; + struct hlist *next; + int value; } hlist; void set_hlist_size(double throughput_wait_secs); From 40864371cbaf27a74e7031d3554a42ab329765f1 Mon Sep 17 00:00:00 2001 From: guy luz Date: Tue, 11 Sep 2018 19:10:29 +0300 Subject: [PATCH 4/8] Indent Indenting using sublime --- progress.c | 1356 ++++++++++++++++++++++++++-------------------------- 1 file changed, 678 insertions(+), 678 deletions(-) diff --git a/progress.c b/progress.c index ae7019c..2810f37 100644 --- a/progress.c +++ b/progress.c @@ -58,13 +58,13 @@ static int proc_names_cnt; static char **proc_names; char *default_proc_names[] = {"cp", "mv", "dd", "tar", "cat", "rsync", - "grep", "fgrep", "egrep", "cut", "sort", "md5sum", "sha1sum", - "sha224sum", "sha256sum", "sha384sum", "sha512sum", "adb", - "gzip", "gunzip", "bzip2", "bunzip2", "xz", "unxz", "lzma", "unlzma", "7z", "7za", - "zcat", "bzcat", "lzcat", - "split", - "gpg", - NULL +"grep", "fgrep", "egrep", "cut", "sort", "md5sum", "sha1sum", +"sha224sum", "sha256sum", "sha384sum", "sha512sum", "adb", +"gzip", "gunzip", "bzip2", "bunzip2", "xz", "unxz", "lzma", "unlzma", "7z", "7za", +"zcat", "bzcat", "lzcat", +"split", +"gpg", +NULL }; // static means initialized to 0/NULL (C standard, ยง6.7.8/10) @@ -87,717 +87,717 @@ WINDOW *mainwin; signed char is_numeric(char *str) { -while (*str) { - if(!isdigit(*str)) - return 0; - str++; -} -return 1; + while (*str) { + if(!isdigit(*str)) + return 0; + str++; + } + return 1; } void nprintf(char *format, ...) { -va_list args; - -va_start(args, format); -if (flag_monitor || flag_monitor_continuous) - vw_printw(mainwin, format, args); -else - vprintf(format, args); -va_end(args); + va_list args; + + va_start(args, format); + if (flag_monitor || flag_monitor_continuous) + vw_printw(mainwin, format, args); + else + vprintf(format, args); + va_end(args); } void nfprintf(FILE *file, char *format, ...) { -va_list args; - -va_start(args, format); -if (flag_monitor || flag_monitor_continuous) - vw_printw(mainwin, format, args); -else - vfprintf(file, format, args); -va_end(args); + va_list args; + + va_start(args, format); + if (flag_monitor || flag_monitor_continuous) + vw_printw(mainwin, format, args); + else + vfprintf(file, format, args); + va_end(args); } void nperror(const char *s) { -if (flag_monitor || flag_monitor_continuous) - printw("%s:%s", s, strerror(errno)); -else - perror(s); + if (flag_monitor || flag_monitor_continuous) + printw("%s:%s", s, strerror(errno)); + else + perror(s); } signed char is_ignored_file(char *str) { -int i; -for (i = 0 ; i < ignore_file_list_cnt ; i++) - if (!strcmp(ignore_file_list[i], str)) - return 1; -return 0; -} + int i; + for (i = 0 ; i < ignore_file_list_cnt; i++) + if (!strcmp(ignore_file_list[i], str)) + return 1; + return 0; + } #ifdef __APPLE__ -int find_pid_by_id(pid_t pid, pidinfo_t *pid_list) -{ -char exe[MAXPATHLEN + 1]; - -exe[0] = '\0'; -proc_name(pid, exe, sizeof(exe)); -if (exe[0] == '\0') - return 0; - -pid_list[0].pid = pid; -strcpy(pid_list[0].name, exe); -return 1; -} - -int find_pids_by_binary_name(char *bin_name, pidinfo_t *pid_list, int max_pids) -{ -int pid_count=0; -int nb_processes = proc_listpids(PROC_ALL_PIDS, 0, NULL, 0); -char exe[1024]; -pid_t *pids; -int i; - -pids = malloc(nb_processes * sizeof(pid_t)); -assert(pids != NULL); - -proc_listpids(PROC_ALL_PIDS, 0, pids, nb_processes); -for(i = 0; i < nb_processes; ++i) { - if (pids[i] == 0) { - continue; - } - proc_name(pids[i], exe, sizeof(exe)); - if(!strcmp(exe, bin_name)) { - pid_list[pid_count].pid=pids[i]; - strcpy(pid_list[pid_count].name, bin_name); - pid_count++; - if(pid_count==max_pids) - break; - } -} -free(pids); -return pid_count; -} + int find_pid_by_id(pid_t pid, pidinfo_t *pid_list) + { + char exe[MAXPATHLEN + 1]; + + exe[0] = '\0'; + proc_name(pid, exe, sizeof(exe)); + if (exe[0] == '\0') + return 0; + + pid_list[0].pid = pid; + strcpy(pid_list[0].name, exe); + return 1; + } + + int find_pids_by_binary_name(char *bin_name, pidinfo_t *pid_list, int max_pids) + { + int pid_count=0; + int nb_processes = proc_listpids(PROC_ALL_PIDS, 0, NULL, 0); + char exe[1024]; + pid_t *pids; + int i; + + pids = malloc(nb_processes * sizeof(pid_t)); + assert(pids != NULL); + + proc_listpids(PROC_ALL_PIDS, 0, pids, nb_processes); + for(i = 0; i < nb_processes; ++i) { + if (pids[i] == 0) { + continue; + } + proc_name(pids[i], exe, sizeof(exe)); + if(!strcmp(exe, bin_name)) { + pid_list[pid_count].pid=pids[i]; + strcpy(pid_list[pid_count].name, bin_name); + pid_count++; + if(pid_count==max_pids) + break; + } + } + free(pids); + return pid_count; + } #else -int find_pid_by_id(pid_t pid, pidinfo_t *pid_list) -{ -char fullpath_exe[MAXPATHLEN + 1]; -char exe[MAXPATHLEN + 1]; -ssize_t len; - -snprintf(fullpath_exe, MAXPATHLEN, "%s/%i/exe", PROC_PATH, pid); - -len=readlink(fullpath_exe, exe, MAXPATHLEN); -if (len != -1) - exe[len] = 0; -else - return 0; - -pid_list[0].pid = pid; -strcpy(pid_list[0].name, basename(exe)); -return 1; -} - -int find_pids_by_binary_name(char *bin_name, pidinfo_t *pid_list, int max_pids) -{ -DIR *proc; -struct dirent *direntp; -struct stat stat_buf; -char fullpath_dir[MAXPATHLEN + 1]; -char fullpath_exe[MAXPATHLEN + 1]; -char exe[MAXPATHLEN + 1]; -ssize_t len; -int pid_count=0; - -proc=opendir(PROC_PATH); -if (!proc) { - nperror("opendir"); - nfprintf(stderr,"Can't open %s\n",PROC_PATH); - exit(EXIT_FAILURE); -} - -while ((direntp = readdir(proc)) != NULL) { - snprintf(fullpath_dir, MAXPATHLEN, "%s/%s", PROC_PATH, direntp->d_name); - - if (stat(fullpath_dir, &stat_buf) == -1) { - if (flag_debug) - nperror("stat (find_pids_by_binary_name)"); - continue; - } - - if ((S_ISDIR(stat_buf.st_mode) && is_numeric(direntp->d_name))) { - snprintf(fullpath_exe, MAXPATHLEN, "%s/exe", fullpath_dir); - len=readlink(fullpath_exe, exe, MAXPATHLEN); - if (len != -1) - exe[len] = 0; - else { + int find_pid_by_id(pid_t pid, pidinfo_t *pid_list) + { + char fullpath_exe[MAXPATHLEN + 1]; + char exe[MAXPATHLEN + 1]; + ssize_t len; + + snprintf(fullpath_exe, MAXPATHLEN, "%s/%i/exe", PROC_PATH, pid); + + len=readlink(fullpath_exe, exe, MAXPATHLEN); + if (len != -1) + exe[len] = 0; + else + return 0; + + pid_list[0].pid = pid; + strcpy(pid_list[0].name, basename(exe)); + return 1; + } + + int find_pids_by_binary_name(char *bin_name, pidinfo_t *pid_list, int max_pids) + { + DIR *proc; + struct dirent *direntp; + struct stat stat_buf; + char fullpath_dir[MAXPATHLEN + 1]; + char fullpath_exe[MAXPATHLEN + 1]; + char exe[MAXPATHLEN + 1]; + ssize_t len; + int pid_count=0; + + proc=opendir(PROC_PATH); + if (!proc) { + nperror("opendir"); + nfprintf(stderr,"Can't open %s\n",PROC_PATH); + exit(EXIT_FAILURE); + } + + while ((direntp = readdir(proc)) != NULL) { + snprintf(fullpath_dir, MAXPATHLEN, "%s/%s", PROC_PATH, direntp->d_name); + + if (stat(fullpath_dir, &stat_buf) == -1) { + if (flag_debug) + nperror("stat (find_pids_by_binary_name)"); + continue; + } + + if ((S_ISDIR(stat_buf.st_mode) && is_numeric(direntp->d_name))) { + snprintf(fullpath_exe, MAXPATHLEN, "%s/exe", fullpath_dir); + len=readlink(fullpath_exe, exe, MAXPATHLEN); + if (len != -1) + exe[len] = 0; + else { // Will be mostly "Permission denied" //~ nperror("readlink"); - continue; - } - - if (!strcmp(basename(exe), bin_name)) { - pid_list[pid_count].pid = atol(direntp->d_name); - strcpy(pid_list[pid_count].name, bin_name); - pid_count++; - if(pid_count == max_pids) - break; - } - } -} - -closedir(proc); -return pid_count; -} + continue; + } + + if (!strcmp(basename(exe), bin_name)) { + pid_list[pid_count].pid = atol(direntp->d_name); + strcpy(pid_list[pid_count].name, bin_name); + pid_count++; + if(pid_count == max_pids) + break; + } + } + } + + closedir(proc); + return pid_count; + } #endif #ifdef __APPLE__ -int find_fd_for_pid(pid_t pid, int *fd_list, int max_fd) -{ -int count = 0; -int bufferSize = proc_pidinfo(pid, PROC_PIDLISTFDS, 0, 0, 0); -struct stat stat_buf; - -if (bufferSize < 0) { - printf("Error :/, cannot proc_pidinfo\n"); - return 0; -} -struct proc_fdinfo *procFDInfo = (struct proc_fdinfo *)malloc(bufferSize); -assert(procFDInfo != NULL); -proc_pidinfo(pid, PROC_PIDLISTFDS, 0, procFDInfo, bufferSize); -int numberOfProcFDs = bufferSize / PROC_PIDLISTFD_SIZE; -int i; - -for(i = 0; i < numberOfProcFDs; i++) { - if(procFDInfo[i].proc_fdtype == PROX_FDTYPE_VNODE) { - struct vnode_fdinfowithpath vnodeInfo; - proc_pidfdinfo(pid, procFDInfo[i].proc_fd, PROC_PIDFDVNODEPATHINFO, &vnodeInfo, PROC_PIDFDVNODEPATHINFO_SIZE); - if (stat(vnodeInfo.pvip.vip_path, &stat_buf) < 0) { - if (flag_debug) - perror("sstat"); - continue; - } - if (!S_ISREG(stat_buf.st_mode) && !S_ISBLK(stat_buf.st_mode)) - continue; - - if (is_ignored_file(vnodeInfo.pvip.vip_path)) - continue; + int find_fd_for_pid(pid_t pid, int *fd_list, int max_fd) + { + int count = 0; + int bufferSize = proc_pidinfo(pid, PROC_PIDLISTFDS, 0, 0, 0); + struct stat stat_buf; + + if (bufferSize < 0) { + printf("Error :/, cannot proc_pidinfo\n"); + return 0; + } + struct proc_fdinfo *procFDInfo = (struct proc_fdinfo *)malloc(bufferSize); + assert(procFDInfo != NULL); + proc_pidinfo(pid, PROC_PIDLISTFDS, 0, procFDInfo, bufferSize); + int numberOfProcFDs = bufferSize / PROC_PIDLISTFD_SIZE; + int i; + + for(i = 0; i < numberOfProcFDs; i++) { + if(procFDInfo[i].proc_fdtype == PROX_FDTYPE_VNODE) { + struct vnode_fdinfowithpath vnodeInfo; + proc_pidfdinfo(pid, procFDInfo[i].proc_fd, PROC_PIDFDVNODEPATHINFO, &vnodeInfo, PROC_PIDFDVNODEPATHINFO_SIZE); + if (stat(vnodeInfo.pvip.vip_path, &stat_buf) < 0) { + if (flag_debug) + perror("sstat"); + continue; + } + if (!S_ISREG(stat_buf.st_mode) && !S_ISBLK(stat_buf.st_mode)) + continue; + + if (is_ignored_file(vnodeInfo.pvip.vip_path)) + continue; // OK, we've found a potential interesting file. - fd_list[count++] = procFDInfo[i].proc_fd; + fd_list[count++] = procFDInfo[i].proc_fd; //~ printf("[debug] %s\n",vnodeInfo.pvip.vip_path); - if(count == max_fd) - break; - } -} -return count; -} + if(count == max_fd) + break; + } + } + return count; + } #else -int find_fd_for_pid(pid_t pid, int *fd_list, int max_fd) -{ -DIR *proc; -struct dirent *direntp; -char path_dir[MAXPATHLEN + 1]; -char fullpath[MAXPATHLEN + 1]; -char link_dest[MAXPATHLEN + 1]; -struct stat stat_buf; -int count = 0; -ssize_t len; - -snprintf(path_dir, MAXPATHLEN, "%s/%d/fd", PROC_PATH, pid); - -proc = opendir(path_dir); -if (!proc) { - nperror("opendir"); - nfprintf(stderr,"Can't open %s\n",path_dir); - return 0; -} - -while ((direntp = readdir(proc)) != NULL) { - snprintf(fullpath, MAXPATHLEN, "%s/%s", path_dir, direntp->d_name); - if (stat(fullpath, &stat_buf) == -1) { - if (flag_debug) - nperror("stat (find_fd_for_pid)"); - continue; - } + int find_fd_for_pid(pid_t pid, int *fd_list, int max_fd) + { + DIR *proc; + struct dirent *direntp; + char path_dir[MAXPATHLEN + 1]; + char fullpath[MAXPATHLEN + 1]; + char link_dest[MAXPATHLEN + 1]; + struct stat stat_buf; + int count = 0; + ssize_t len; + + snprintf(path_dir, MAXPATHLEN, "%s/%d/fd", PROC_PATH, pid); + + proc = opendir(path_dir); + if (!proc) { + nperror("opendir"); + nfprintf(stderr,"Can't open %s\n",path_dir); + return 0; + } + + while ((direntp = readdir(proc)) != NULL) { + snprintf(fullpath, MAXPATHLEN, "%s/%s", path_dir, direntp->d_name); + if (stat(fullpath, &stat_buf) == -1) { + if (flag_debug) + nperror("stat (find_fd_for_pid)"); + continue; + } // if not a regular file or a block device - if(!S_ISREG(stat_buf.st_mode) && !S_ISBLK(stat_buf.st_mode)) - continue; + if(!S_ISREG(stat_buf.st_mode) && !S_ISBLK(stat_buf.st_mode)) + continue; // try to read link ... - len = readlink(fullpath, link_dest, MAXPATHLEN); - if (len != -1) - link_dest[len] = 0; - else - continue; + len = readlink(fullpath, link_dest, MAXPATHLEN); + if (len != -1) + link_dest[len] = 0; + else + continue; // try to stat link target (invalid link ?) - if (stat(link_dest, &stat_buf) == -1) - continue; + if (stat(link_dest, &stat_buf) == -1) + continue; - if (is_ignored_file(fullpath) || is_ignored_file(link_dest)) - continue; + if (is_ignored_file(fullpath) || is_ignored_file(link_dest)) + continue; // OK, we've found a potential interesting file. - fd_list[count++] = atoi(direntp->d_name); + fd_list[count++] = atoi(direntp->d_name); //~ printf("[debug] %s\n",fullpath); - if (count == max_fd) - break; -} + if (count == max_fd) + break; + } -closedir(proc); -return count; -} + closedir(proc); + return count; + } #endif -signed char get_fdinfo(pid_t pid, int fdnum, fdinfo_t *fd_info) -{ -struct stat stat_buf; + signed char get_fdinfo(pid_t pid, int fdnum, fdinfo_t *fd_info) + { + struct stat stat_buf; #ifndef __APPLE__ -char fdpath[MAXPATHLEN + 1]; -char line[LINE_LEN]; -FILE *fp; -int flags; + char fdpath[MAXPATHLEN + 1]; + char line[LINE_LEN]; + FILE *fp; + int flags; #endif -struct timezone tz; + struct timezone tz; -fd_info->num = fdnum; -fd_info->mode = PM_NONE; + fd_info->num = fdnum; + fd_info->mode = PM_NONE; #ifdef __APPLE__ -struct vnode_fdinfowithpath vnodeInfo; -if (proc_pidfdinfo(pid, fdnum, PROC_PIDFDVNODEPATHINFO, &vnodeInfo, PROC_PIDFDVNODEPATHINFO_SIZE) <= 0) - return 0; -strncpy(fd_info->name, vnodeInfo.pvip.vip_path, MAXPATHLEN); + struct vnode_fdinfowithpath vnodeInfo; + if (proc_pidfdinfo(pid, fdnum, PROC_PIDFDVNODEPATHINFO, &vnodeInfo, PROC_PIDFDVNODEPATHINFO_SIZE) <= 0) + return 0; + strncpy(fd_info->name, vnodeInfo.pvip.vip_path, MAXPATHLEN); #else -ssize_t len; -snprintf(fdpath, MAXPATHLEN, "%s/%d/fd/%d", PROC_PATH, pid, fdnum); + ssize_t len; + snprintf(fdpath, MAXPATHLEN, "%s/%d/fd/%d", PROC_PATH, pid, fdnum); -len=readlink(fdpath, fd_info->name, MAXPATHLEN); -if (len != -1) - fd_info->name[len] = 0; -else { + len=readlink(fdpath, fd_info->name, MAXPATHLEN); + if (len != -1) + fd_info->name[len] = 0; + else { //~ nperror("readlink"); - return 0; -} + return 0; + } #endif -if (stat(fd_info->name, &stat_buf) == -1) { + if (stat(fd_info->name, &stat_buf) == -1) { //~ printf("[debug] %i - %s\n",pid,fd_info->name); - if (flag_debug) - nperror("stat (get_fdinfo)"); - return 0; -} + if (flag_debug) + nperror("stat (get_fdinfo)"); + return 0; + } -if (S_ISBLK(stat_buf.st_mode)) { - int fd; + if (S_ISBLK(stat_buf.st_mode)) { + int fd; - fd = open(fd_info->name, O_RDONLY); + fd = open(fd_info->name, O_RDONLY); - if (fd < 0) { - if (flag_debug) - nperror("open (get_fdinfo)"); - return 0; - } + if (fd < 0) { + if (flag_debug) + nperror("open (get_fdinfo)"); + return 0; + } #ifdef __APPLE__ - uint64_t bc; - uint32_t bs; - - bs = 0; - bc = 0; - if (ioctl(fd, DKIOCGETBLOCKSIZE, &bs) < 0 || ioctl(fd, DKIOCGETBLOCKCOUNT, &bc) < 0) { - if (flag_debug) - perror("ioctl (get_fdinfo)"); - return 0; - } - fd_info->size = bc*bs; - printf("Size: %lld\n", fd_info->size); + uint64_t bc; + uint32_t bs; + + bs = 0; + bc = 0; + if (ioctl(fd, DKIOCGETBLOCKSIZE, &bs) < 0 || ioctl(fd, DKIOCGETBLOCKCOUNT, &bc) < 0) { + if (flag_debug) + perror("ioctl (get_fdinfo)"); + return 0; + } + fd_info->size = bc*bs; + printf("Size: %lld\n", fd_info->size); #else - if (ioctl(fd, BLKGETSIZE64, &fd_info->size) < 0) { - if (flag_debug) - nperror("ioctl (get_fdinfo)"); - close(fd); - return 0; - } + if (ioctl(fd, BLKGETSIZE64, &fd_info->size) < 0) { + if (flag_debug) + nperror("ioctl (get_fdinfo)"); + close(fd); + return 0; + } #endif - close(fd); -} else { - fd_info->size = stat_buf.st_size; -} + close(fd); + } else { + fd_info->size = stat_buf.st_size; + } #ifdef __APPLE__ -fd_info->pos = vnodeInfo.pfi.fi_offset; -gettimeofday(&fd_info->tv, &tz); -if (vnodeInfo.pfi.fi_openflags & FREAD) - fd_info->mode = PM_READ; -if (vnodeInfo.pfi.fi_openflags & FWRITE) - fd_info->mode = PM_WRITE; -if (vnodeInfo.pfi.fi_openflags & FREAD && vnodeInfo.pfi.fi_openflags & FWRITE) - fd_info->mode = PM_READWRITE; + fd_info->pos = vnodeInfo.pfi.fi_offset; + gettimeofday(&fd_info->tv, &tz); + if (vnodeInfo.pfi.fi_openflags & FREAD) + fd_info->mode = PM_READ; + if (vnodeInfo.pfi.fi_openflags & FWRITE) + fd_info->mode = PM_WRITE; + if (vnodeInfo.pfi.fi_openflags & FREAD && vnodeInfo.pfi.fi_openflags & FWRITE) + fd_info->mode = PM_READWRITE; #else -flags = 0; -fd_info->pos = 0; - -snprintf(fdpath, MAXPATHLEN, "%s/%d/fdinfo/%d", PROC_PATH, pid, fdnum); -fp = fopen(fdpath, "rt"); -gettimeofday(&fd_info->tv, &tz); - -if (!fp) { - if (flag_debug) - nperror("fopen (get_fdinfo)"); - return 0; -} - -while (fgets(line, LINE_LEN - 1, fp) != NULL) { - if (!strncmp(line, "pos:", 4)) - fd_info->pos = atoll(line + 5); - if (!strncmp(line, "flags:", 6)) - flags = atoll(line + 7); -} - -if ((flags & O_ACCMODE) == O_RDONLY) - fd_info->mode = PM_READ; -if ((flags & O_ACCMODE) == O_WRONLY) - fd_info->mode = PM_WRITE; -if ((flags & O_ACCMODE) == O_RDWR) - fd_info->mode = PM_READWRITE; - -fclose(fp); + flags = 0; + fd_info->pos = 0; + + snprintf(fdpath, MAXPATHLEN, "%s/%d/fdinfo/%d", PROC_PATH, pid, fdnum); + fp = fopen(fdpath, "rt"); + gettimeofday(&fd_info->tv, &tz); + + if (!fp) { + if (flag_debug) + nperror("fopen (get_fdinfo)"); + return 0; + } + + while (fgets(line, LINE_LEN - 1, fp) != NULL) { + if (!strncmp(line, "pos:", 4)) + fd_info->pos = atoll(line + 5); + if (!strncmp(line, "flags:", 6)) + flags = atoll(line + 7); + } + + if ((flags & O_ACCMODE) == O_RDONLY) + fd_info->mode = PM_READ; + if ((flags & O_ACCMODE) == O_WRONLY) + fd_info->mode = PM_WRITE; + if ((flags & O_ACCMODE) == O_RDWR) + fd_info->mode = PM_READWRITE; + + fclose(fp); #endif -return 1; -} - -void print_bar(float perc, int char_available) -{ -int i; -int num; - -num = (char_available / 100.0) * perc; - -for (i = 0 ; i < num-1 ; i++) { - putchar('='); -} -putchar('>'); -i++; - -for ( ; i < char_available ; i++) - putchar(' '); - -} - - -void parse_options(int argc, char *argv[]) -{ -static struct option long_options[] = { - {"version", no_argument, 0, 'v'}, - {"quiet", no_argument, 0, 'q'}, - {"debug", no_argument, 0, 'd'}, - {"wait", no_argument, 0, 'w'}, - {"wait-delay", required_argument, 0, 'W'}, - {"monitor", no_argument, 0, 'm'}, - {"monitor-continuously", no_argument, 0, 'M'}, - {"help", no_argument, 0, 'h'}, - {"additional-command", required_argument, 0, 'a'}, - {"command", required_argument, 0, 'c'}, - {"pid", required_argument, 0, 'p'}, - {"ignore-file", required_argument, 0, 'i'}, - {"open-mode", required_argument, 0, 'o'}, - {0, 0, 0, 0} -}; - -static char *options_string = "vqdwmMha:c:p:W:i:o:"; -int c,i; -int option_index = 0; -char *rp; + return 1; + } + + void print_bar(float perc, int char_available) + { + int i; + int num; + + num = (char_available / 100.0) * perc; + + for (i = 0 ; i < num-1 ; i++) { + putchar('='); + } + putchar('>'); + i++; + + for ( ; i < char_available ; i++) + putchar(' '); + + } + + + void parse_options(int argc, char *argv[]) + { + static struct option long_options[] = { + {"version", no_argument, 0, 'v'}, + {"quiet", no_argument, 0, 'q'}, + {"debug", no_argument, 0, 'd'}, + {"wait", no_argument, 0, 'w'}, + {"wait-delay", required_argument, 0, 'W'}, + {"monitor", no_argument, 0, 'm'}, + {"monitor-continuously", no_argument, 0, 'M'}, + {"help", no_argument, 0, 'h'}, + {"additional-command", required_argument, 0, 'a'}, + {"command", required_argument, 0, 'c'}, + {"pid", required_argument, 0, 'p'}, + {"ignore-file", required_argument, 0, 'i'}, + {"open-mode", required_argument, 0, 'o'}, + {0, 0, 0, 0} + }; + + static char *options_string = "vqdwmMha:c:p:W:i:o:"; + int c,i; + int option_index = 0; + char *rp; optind = 1; // reset getopt while(1) { - c = getopt_long (argc, argv, options_string, long_options, &option_index); + c = getopt_long (argc, argv, options_string, long_options, &option_index); // no more options - if (c == -1) - break; - - switch (c) { - case 'v': - printf("progress version %s\n",PROGRESS_VERSION); - exit(EXIT_SUCCESS); - break; - - case 'h': - printf("progress - Coreutils Viewer\n"); - printf("---------------------\n"); - printf("Shows progress on file manipulations (cp, mv, dd, ...)\n\n"); - printf("Monitored commands (default):\n"); - for(i = 0 ; i < proc_names_cnt ; i++) - printf("%s ", proc_names[i]); - printf("\n\n"); - printf("Usage: %s [-qdwmM] [-W secs] [-c command] [-p pid]\n",argv[0]); - printf(" -q --quiet hides all messages\n"); - printf(" -d --debug shows all warning/error messages\n"); - printf(" -w --wait estimate I/O throughput and ETA (slower display)\n"); - printf(" -W --wait-delay secs wait 'secs' seconds for I/O estimation (implies -w, default=%.1f)\n", throughput_wait_secs); - printf(" -m --monitor loop while monitored processes are still running\n"); - printf(" -M --monitor-continuously like monitor but never stop (similar to watch %s)\n", argv[0]); - printf(" -a --additional-command cmd add additional command to default command list\n"); - printf(" -c --command cmd monitor only this command name (ex: firefox)\n"); - printf(" -p --pid id monitor only this process ID (ex: `pidof firefox`)\n"); - printf(" -i --ignore-file file do not report process if using file\n"); - printf(" -o --open-mode {r|w} report only files opened for read or write\n"); - printf(" -v --version show program version and exit\n"); - printf(" -h --help display this help and exit\n"); - printf("\n\n"); - printf("Multiple options allowed for: -a -c -p -i. Use PROGRESS_ARGS for permanent arguments.\n"); - exit(EXIT_SUCCESS); - break; - - case 'q': - flag_quiet = 1; - break; - - case 'd': - flag_debug = 1; - break; - - case 'i': - rp = realpath(optarg, NULL); - ignore_file_list_cnt++; - ignore_file_list = realloc(ignore_file_list, ignore_file_list_cnt * sizeof(char *)); - assert(ignore_file_list != NULL); - if (rp) - ignore_file_list[ignore_file_list_cnt - 1] = rp; - else + if (c == -1) + break; + + switch (c) { + case 'v': + printf("progress version %s\n",PROGRESS_VERSION); + exit(EXIT_SUCCESS); + break; + + case 'h': + printf("progress - Coreutils Viewer\n"); + printf("---------------------\n"); + printf("Shows progress on file manipulations (cp, mv, dd, ...)\n\n"); + printf("Monitored commands (default):\n"); + for(i = 0 ; i < proc_names_cnt ; i++) + printf("%s ", proc_names[i]); + printf("\n\n"); + printf("Usage: %s [-qdwmM] [-W secs] [-c command] [-p pid]\n",argv[0]); + printf(" -q --quiet hides all messages\n"); + printf(" -d --debug shows all warning/error messages\n"); + printf(" -w --wait estimate I/O throughput and ETA (slower display)\n"); + printf(" -W --wait-delay secs wait 'secs' seconds for I/O estimation (implies -w, default=%.1f)\n", throughput_wait_secs); + printf(" -m --monitor loop while monitored processes are still running\n"); + printf(" -M --monitor-continuously like monitor but never stop (similar to watch %s)\n", argv[0]); + printf(" -a --additional-command cmd add additional command to default command list\n"); + printf(" -c --command cmd monitor only this command name (ex: firefox)\n"); + printf(" -p --pid id monitor only this process ID (ex: `pidof firefox`)\n"); + printf(" -i --ignore-file file do not report process if using file\n"); + printf(" -o --open-mode {r|w} report only files opened for read or write\n"); + printf(" -v --version show program version and exit\n"); + printf(" -h --help display this help and exit\n"); + printf("\n\n"); + printf("Multiple options allowed for: -a -c -p -i. Use PROGRESS_ARGS for permanent arguments.\n"); + exit(EXIT_SUCCESS); + break; + + case 'q': + flag_quiet = 1; + break; + + case 'd': + flag_debug = 1; + break; + + case 'i': + rp = realpath(optarg, NULL); + ignore_file_list_cnt++; + ignore_file_list = realloc(ignore_file_list, ignore_file_list_cnt * sizeof(char *)); + assert(ignore_file_list != NULL); + if (rp) + ignore_file_list[ignore_file_list_cnt - 1] = rp; + else ignore_file_list[ignore_file_list_cnt - 1] = strdup(optarg); // file does not exist yet, it seems break; - case 'a': + case 'a': proc_names_cnt++; proc_names = realloc(proc_names, proc_names_cnt * sizeof(char *)); assert(proc_names != NULL); proc_names[proc_names_cnt - 1] = strdup(optarg); break; - case 'c': + case 'c': proc_specifiq_name_cnt++; proc_specifiq_name = realloc(proc_specifiq_name, proc_specifiq_name_cnt * sizeof(char *)); assert(proc_specifiq_name != NULL); proc_specifiq_name[proc_specifiq_name_cnt - 1] = strdup(optarg); break; - case 'p': + case 'p': proc_specifiq_pid_cnt++; proc_specifiq_pid = realloc(proc_specifiq_pid, proc_specifiq_pid_cnt * sizeof(pid_t)); assert(proc_specifiq_pid != NULL); proc_specifiq_pid[proc_specifiq_pid_cnt - 1] = atof(optarg); break; - case 'w': + case 'w': flag_throughput = 1; break; - case 'm': + case 'm': flag_monitor = 1; break; - case 'M': + case 'M': flag_monitor_continuous = 1; break; - case 'W': + case 'W': flag_throughput = 1; throughput_wait_secs = atof(optarg); break; - case 'o': + case 'o': if (!strcmp("r", optarg)) - flag_open_mode = PM_READ; + flag_open_mode = PM_READ; else if (!strcmp("w", optarg)) - flag_open_mode = PM_WRITE; + flag_open_mode = PM_WRITE; else { - fprintf(stderr,"Invalid --open-mode option value '%s'.\n", optarg); - exit(EXIT_FAILURE); + fprintf(stderr,"Invalid --open-mode option value '%s'.\n", optarg); + exit(EXIT_FAILURE); } break; - case '?': - default: + case '?': + default: exit(EXIT_FAILURE); + } } -} -if (optind < argc) { - fprintf(stderr,"Invalid arguments.\n"); - exit(EXIT_FAILURE); -} + if (optind < argc) { + fprintf(stderr,"Invalid arguments.\n"); + exit(EXIT_FAILURE); + } } void print_eta(time_t seconds) { -struct tm *p; + struct tm *p; -if (!seconds) - return; + if (!seconds) + return; -p = gmtime(&seconds); + p = gmtime(&seconds); -nprintf(" remaining "); -if (p->tm_yday) - nprintf("%d day%s ", p->tm_yday, p->tm_yday > 1 ? "s" : ""); -nprintf("%d:%02d:%02d", p->tm_hour, p->tm_min, p->tm_sec); + nprintf(" remaining "); + if (p->tm_yday) + nprintf("%d day%s ", p->tm_yday, p->tm_yday > 1 ? "s" : ""); + nprintf("%d:%02d:%02d", p->tm_hour, p->tm_min, p->tm_sec); } void copy_and_clean_results(result_t *results, int result_count, char copy) { -static result_t old_results[MAX_RESULTS]; -static int old_result_count = 0; - -if (copy) { - int i; - for (i = 0; i < old_result_count; ++i) { - int j; - char found = 0; - for (j = 0; j < result_count; ++j) { - if (results[j].pid.pid == old_results[i].pid.pid) { - found = 1; - results[j].hbegin = old_results[i].hbegin; - results[j].hend = old_results[i].hend; - results[j].hsize = old_results[i].hsize; - break; - } - } - if (!found) - free_hlist(old_results[i].hbegin); - } -} -else { - memcpy(old_results, results, sizeof(old_results)); - old_result_count = result_count; - } + static result_t old_results[MAX_RESULTS]; + static int old_result_count = 0; + + if (copy) { + int i; + for (i = 0; i < old_result_count; ++i) { + int j; + char found = 0; + for (j = 0; j < result_count; ++j) { + if (results[j].pid.pid == old_results[i].pid.pid) { + found = 1; + results[j].hbegin = old_results[i].hbegin; + results[j].hend = old_results[i].hend; + results[j].hsize = old_results[i].hsize; + break; + } + } + if (!found) + free_hlist(old_results[i].hbegin); + } + } + else { + memcpy(old_results, results, sizeof(old_results)); + old_result_count = result_count; + } } int monitor_processes(int *nb_pid) { -int pid_count, fd_count, result_count; -int i,j; -pidinfo_t pidinfo_list[MAX_PIDS]; -fdinfo_t fdinfo; -fdinfo_t biggest_fd; -int fdnum_list[MAX_FD_PER_PID]; -off_t max_size; -char fsize[64]; -char fpos[64]; -char ftroughput[64]; -float perc; -result_t results[MAX_RESULTS]; -signed char still_there; -signed char search_all = 1; -static signed char first_pass = 1; - -pid_count = 0; - -if (!flag_monitor && !flag_monitor_continuous) - first_pass = 0; - - -if (proc_specifiq_name_cnt) { - search_all = 0; - for (i = 0 ; i < proc_specifiq_name_cnt ; ++i) { - pid_count += find_pids_by_binary_name(proc_specifiq_name[i], - pidinfo_list + pid_count, - MAX_PIDS - pid_count); - if(pid_count >= MAX_PIDS) { - nfprintf(stderr, "Found too much procs (max = %d)\n",MAX_PIDS); - return 0; - } - } -} - -if (proc_specifiq_pid) { - search_all = 0; - for (i = 0 ; i < proc_specifiq_pid_cnt ; ++i) { - pid_count += find_pid_by_id(proc_specifiq_pid[i], - pidinfo_list + pid_count); - - if(pid_count >= MAX_PIDS) { - nfprintf(stderr, "Found too much procs (max = %d)\n",MAX_PIDS); - return 0; - } - } -} - -if (search_all) { - for (i = 0 ; i < proc_names_cnt ; i++) { - pid_count += find_pids_by_binary_name(proc_names[i], - pidinfo_list + pid_count, - MAX_PIDS - pid_count); - if(pid_count >= MAX_PIDS) { - nfprintf(stderr, "Found too much procs (max = %d)\n",MAX_PIDS); - return 0; - } - } -} - -*nb_pid = pid_count; - -if (!pid_count) { - if (flag_quiet) - return 0; - if (flag_monitor || flag_monitor_continuous) { - clear(); - refresh(); - } - if (proc_specifiq_pid_cnt) { - nfprintf(stderr, "No such pid: "); - for (i = 0 ; i < proc_specifiq_pid_cnt; ++i) { - nfprintf(stderr, "%d, ", proc_specifiq_pid[i]); - } - } - if (proc_specifiq_name_cnt) - { - nfprintf(stderr, "No such command(s) running: "); - for (i = 0 ; i < proc_specifiq_name_cnt; ++i) { - nfprintf(stderr, "%s, ", proc_specifiq_name[i]); - } - } - if (!proc_specifiq_pid && !proc_specifiq_name_cnt) { - nfprintf(stderr,"No command currently running: "); - for (i = 0 ; i < proc_names_cnt ; i++) { - nfprintf(stderr,"%s, ", proc_names[i]); - } - } - nfprintf(stderr,"or wrong permissions.\n"); - first_pass = 0; - return 0; -} - -result_count = 0; - -for (i = 0 ; i < pid_count ; i++) { - fd_count = find_fd_for_pid(pidinfo_list[i].pid, fdnum_list, MAX_FD_PER_PID); - - max_size = 0; + int pid_count, fd_count, result_count; + int i,j; + pidinfo_t pidinfo_list[MAX_PIDS]; + fdinfo_t fdinfo; + fdinfo_t biggest_fd; + int fdnum_list[MAX_FD_PER_PID]; + off_t max_size; + char fsize[64]; + char fpos[64]; + char ftroughput[64]; + float perc; + result_t results[MAX_RESULTS]; + signed char still_there; + signed char search_all = 1; + static signed char first_pass = 1; + + pid_count = 0; + + if (!flag_monitor && !flag_monitor_continuous) + first_pass = 0; + + + if (proc_specifiq_name_cnt) { + search_all = 0; + for (i = 0 ; i < proc_specifiq_name_cnt ; ++i) { + pid_count += find_pids_by_binary_name(proc_specifiq_name[i], + pidinfo_list + pid_count, + MAX_PIDS - pid_count); + if(pid_count >= MAX_PIDS) { + nfprintf(stderr, "Found too much procs (max = %d)\n",MAX_PIDS); + return 0; + } + } + } + + if (proc_specifiq_pid) { + search_all = 0; + for (i = 0 ; i < proc_specifiq_pid_cnt ; ++i) { + pid_count += find_pid_by_id(proc_specifiq_pid[i], + pidinfo_list + pid_count); + + if(pid_count >= MAX_PIDS) { + nfprintf(stderr, "Found too much procs (max = %d)\n",MAX_PIDS); + return 0; + } + } + } + + if (search_all) { + for (i = 0 ; i < proc_names_cnt ; i++) { + pid_count += find_pids_by_binary_name(proc_names[i], + pidinfo_list + pid_count, + MAX_PIDS - pid_count); + if(pid_count >= MAX_PIDS) { + nfprintf(stderr, "Found too much procs (max = %d)\n",MAX_PIDS); + return 0; + } + } + } + + *nb_pid = pid_count; + + if (!pid_count) { + if (flag_quiet) + return 0; + if (flag_monitor || flag_monitor_continuous) { + clear(); + refresh(); + } + if (proc_specifiq_pid_cnt) { + nfprintf(stderr, "No such pid: "); + for (i = 0 ; i < proc_specifiq_pid_cnt; ++i) { + nfprintf(stderr, "%d, ", proc_specifiq_pid[i]); + } + } + if (proc_specifiq_name_cnt) + { + nfprintf(stderr, "No such command(s) running: "); + for (i = 0 ; i < proc_specifiq_name_cnt; ++i) { + nfprintf(stderr, "%s, ", proc_specifiq_name[i]); + } + } + if (!proc_specifiq_pid && !proc_specifiq_name_cnt) { + nfprintf(stderr,"No command currently running: "); + for (i = 0 ; i < proc_names_cnt ; i++) { + nfprintf(stderr,"%s, ", proc_names[i]); + } + } + nfprintf(stderr,"or wrong permissions.\n"); + first_pass = 0; + return 0; + } + + result_count = 0; + + for (i = 0 ; i < pid_count ; i++) { + fd_count = find_fd_for_pid(pidinfo_list[i].pid, fdnum_list, MAX_FD_PER_PID); + + max_size = 0; // let's find the biggest opened file - for (j = 0 ; j < fd_count ; j++) { - get_fdinfo(pidinfo_list[i].pid, fdnum_list[j], &fdinfo); + for (j = 0 ; j < fd_count ; j++) { + get_fdinfo(pidinfo_list[i].pid, fdnum_list[j], &fdinfo); - if (flag_open_mode == PM_READ && fdinfo.mode != PM_READ && fdinfo.mode != PM_READWRITE) - continue; - if (flag_open_mode == PM_WRITE && fdinfo.mode != PM_WRITE && fdinfo.mode != PM_READWRITE) - continue; + if (flag_open_mode == PM_READ && fdinfo.mode != PM_READ && fdinfo.mode != PM_READWRITE) + continue; + if (flag_open_mode == PM_WRITE && fdinfo.mode != PM_WRITE && fdinfo.mode != PM_READWRITE) + continue; - if (fdinfo.size > max_size) { - biggest_fd = fdinfo; - max_size = fdinfo.size; - } - } + if (fdinfo.size > max_size) { + biggest_fd = fdinfo; + max_size = fdinfo.size; + } + } if (!max_size) { // nothing found // this display is the root of too many confusion for the users, let's @@ -805,7 +805,7 @@ for (i = 0 ; i < pid_count ; i++) { /* nprintf("[%5d] %s inactive/flushing/streaming/...\n", pidinfo_list[i].pid, pidinfo_list[i].name);*/ - continue; + continue; } // We've our biggest_fd now, let's store the result @@ -820,58 +820,58 @@ for (i = 0 ; i < pid_count ; i++) { // wait a bit, so we can estimate the throughput if (flag_throughput && !first_pass) - usleep(1000000 * throughput_wait_secs); + usleep(1000000 * throughput_wait_secs); if (flag_monitor || flag_monitor_continuous) { - clear(); + clear(); } copy_and_clean_results(results, result_count, 1); for (i = 0 ; i < result_count ; i++) { - if (flag_throughput && !first_pass) { - still_there = get_fdinfo(results[i].pid.pid, results[i].fd.num, &fdinfo); - if (still_there && strcmp(results[i].fd.name, fdinfo.name)) + if (flag_throughput && !first_pass) { + still_there = get_fdinfo(results[i].pid.pid, results[i].fd.num, &fdinfo); + if (still_there && strcmp(results[i].fd.name, fdinfo.name)) still_there = 0; // still there, but it's not the same file ! } else - still_there = 0; + still_there = 0; if (!still_there) { // pid is no more here (or no throughput was asked), use initial info - format_size(results[i].fd.pos, fpos); - format_size(results[i].fd.size, fsize); - perc = ((double)100 / (double)results[i].fd.size) * (double)results[i].fd.pos; + format_size(results[i].fd.pos, fpos); + format_size(results[i].fd.size, fsize); + perc = ((double)100 / (double)results[i].fd.size) * (double)results[i].fd.pos; } else { // use the newest info - format_size(fdinfo.pos, fpos); - format_size(fdinfo.size, fsize); - perc = ((double)100 / (double)fdinfo.size) * (double)fdinfo.pos; + format_size(fdinfo.pos, fpos); + format_size(fdinfo.size, fsize); + perc = ((double)100 / (double)fdinfo.size) * (double)fdinfo.pos; } nprintf("[%5d] %s %s\n\t%.1f%% (%s / %s)", - results[i].pid.pid, - results[i].pid.name, - results[i].fd.name, - perc, - fpos, - fsize); + results[i].pid.pid, + results[i].pid.name, + results[i].fd.name, + perc, + fpos, + fsize); if (flag_throughput && still_there && !first_pass) { // results[i] vs fdinfo - long long usec_diff; - off_t byte_diff; - off_t bytes_per_sec; - - usec_diff = (fdinfo.tv.tv_sec - results[i].fd.tv.tv_sec) * 1000000L - + (fdinfo.tv.tv_usec - results[i].fd.tv.tv_usec); - byte_diff = fdinfo.pos - results[i].fd.pos; - results[i].hsize += add_to_hlist(&results[i].hbegin, &results[i].hend, results[i].hsize, byte_diff / (usec_diff / 1000000.0)); - bytes_per_sec = get_hlist_average(results[i].hbegin, results[i].hsize); - - format_size(bytes_per_sec, ftroughput); - nprintf(" %s/s", ftroughput); - if (bytes_per_sec && fdinfo.size - fdinfo.pos >= 0) { - print_eta((fdinfo.size - fdinfo.pos) / bytes_per_sec); - } + long long usec_diff; + off_t byte_diff; + off_t bytes_per_sec; + + usec_diff = (fdinfo.tv.tv_sec - results[i].fd.tv.tv_sec) * 1000000L + + (fdinfo.tv.tv_usec - results[i].fd.tv.tv_usec); + byte_diff = fdinfo.pos - results[i].fd.pos; + results[i].hsize += add_to_hlist(&results[i].hbegin, &results[i].hend, results[i].hsize, byte_diff / (usec_diff / 1000000.0)); + bytes_per_sec = get_hlist_average(results[i].hbegin, results[i].hsize); + + format_size(bytes_per_sec, ftroughput); + nprintf(" %s/s", ftroughput); + if (bytes_per_sec && fdinfo.size - fdinfo.pos >= 0) { + print_eta((fdinfo.size - fdinfo.pos) / bytes_per_sec); + } } @@ -883,9 +883,9 @@ for (i = 0 ; i < result_count ; i++) { //~ printf("]\n"); } if (flag_monitor || flag_monitor_continuous) { - if (!result_count) - nprintf("No PID(s) currently monitored\n"); - refresh(); + if (!result_count) + nprintf("No PID(s) currently monitored\n"); + refresh(); } copy_and_clean_results(results, result_count, 0); first_pass = 0; @@ -894,77 +894,77 @@ return 0; void int_handler(int sig) { -if(flag_monitor || flag_monitor_continuous) - endwin(); -exit(0); + if(flag_monitor || flag_monitor_continuous) + endwin(); + exit(0); } // Setup the default commands as a dynamic list void populate_proc_names() { - int i; - for(i = 0 ; default_proc_names[i] ; i++) { - proc_names_cnt++; - proc_names = realloc(proc_names, proc_names_cnt * sizeof(char *)); - assert(proc_names != NULL); - proc_names[proc_names_cnt - 1] = default_proc_names[i]; - } + int i; + for(i = 0 ; default_proc_names[i] ; i++) { + proc_names_cnt++; + proc_names = realloc(proc_names, proc_names_cnt * sizeof(char *)); + assert(proc_names != NULL); + proc_names[proc_names_cnt - 1] = default_proc_names[i]; + } } int main(int argc, char *argv[]) { -pid_t nb_pid; -struct winsize ws; -wordexp_t env_wordexp; -char *env_progress_args; -char *env_progress_args_full; + pid_t nb_pid; + struct winsize ws; + wordexp_t env_wordexp; + char *env_progress_args; + char *env_progress_args_full; -populate_proc_names(); + populate_proc_names(); -env_progress_args = getenv("PROGRESS_ARGS"); + env_progress_args = getenv("PROGRESS_ARGS"); -if (env_progress_args) { - int full_len; + if (env_progress_args) { + int full_len; // prefix with (real) argv[0] // argv[0] + ' ' + env_progress_args + '\0' - full_len = strlen(argv[0]) + 1 + strlen(env_progress_args) + 1; - env_progress_args_full = malloc(full_len * sizeof(char)); - assert(env_progress_args_full != NULL); - sprintf(env_progress_args_full, "%s %s", argv[0], env_progress_args); - - if (wordexp(env_progress_args_full, &env_wordexp, 0)) { - fprintf(stderr,"Unable to parse PROGRESS_ARGS environment variable.\n"); - exit(EXIT_FAILURE); - } - parse_options(env_wordexp.we_wordc,env_wordexp.we_wordv); -} -parse_options(argc,argv); + full_len = strlen(argv[0]) + 1 + strlen(env_progress_args) + 1; + env_progress_args_full = malloc(full_len * sizeof(char)); + assert(env_progress_args_full != NULL); + sprintf(env_progress_args_full, "%s %s", argv[0], env_progress_args); + + if (wordexp(env_progress_args_full, &env_wordexp, 0)) { + fprintf(stderr,"Unable to parse PROGRESS_ARGS environment variable.\n"); + exit(EXIT_FAILURE); + } + parse_options(env_wordexp.we_wordc,env_wordexp.we_wordv); + } + parse_options(argc,argv); // ws.ws_row, ws.ws_col -ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws); -if (flag_monitor || flag_monitor_continuous) { - if ((mainwin = initscr()) == NULL ) { - fprintf(stderr, "Error initialising ncurses.\n"); - exit(EXIT_FAILURE); - } - if (!flag_throughput) { - flag_throughput = 1; - throughput_wait_secs = 1; - } - set_hlist_size(throughput_wait_secs); - signal(SIGINT, int_handler); - do { - monitor_processes(&nb_pid); - refresh(); - if(flag_monitor_continuous && !nb_pid) { - usleep(1000000 * throughput_wait_secs); - } - } while ((flag_monitor && nb_pid) || flag_monitor_continuous); - endwin(); -} -else { - set_hlist_size(throughput_wait_secs); - monitor_processes(&nb_pid); -} -return 0; + ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws); + if (flag_monitor || flag_monitor_continuous) { + if ((mainwin = initscr()) == NULL ) { + fprintf(stderr, "Error initialising ncurses.\n"); + exit(EXIT_FAILURE); + } + if (!flag_throughput) { + flag_throughput = 1; + throughput_wait_secs = 1; + } + set_hlist_size(throughput_wait_secs); + signal(SIGINT, int_handler); + do { + monitor_processes(&nb_pid); + refresh(); + if(flag_monitor_continuous && !nb_pid) { + usleep(1000000 * throughput_wait_secs); + } + } while ((flag_monitor && nb_pid) || flag_monitor_continuous); + endwin(); + } + else { + set_hlist_size(throughput_wait_secs); + monitor_processes(&nb_pid); + } + return 0; } From caa5f6392edb22c4c54008ee964956c636e5913d Mon Sep 17 00:00:00 2001 From: guy luz Date: Tue, 11 Sep 2018 19:10:55 +0300 Subject: [PATCH 5/8] Indent Indenting using sublime --- progress.h | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/progress.h b/progress.h index f7c565c..e6c263e 100644 --- a/progress.h +++ b/progress.h @@ -39,25 +39,25 @@ #define PM_READWRITE 4 typedef struct fdinfo_t { - int num; - off_t size; - off_t pos; - signed char mode; - char name[MAXPATHLEN + 1]; - struct timeval tv; + int num; + off_t size; + off_t pos; + signed char mode; + char name[MAXPATHLEN + 1]; + struct timeval tv; } fdinfo_t; typedef struct pidinfo_t { - pid_t pid; - char name[MAXPATHLEN + 1]; + pid_t pid; + char name[MAXPATHLEN + 1]; } pidinfo_t; typedef struct result_t { - pidinfo_t pid; - fdinfo_t fd; - hlist *hbegin; - hlist *hend; - int hsize; + pidinfo_t pid; + fdinfo_t fd; + hlist *hbegin; + hlist *hend; + int hsize; } result_t; #endif From 8ffbbb13beb90caf0b20d80e4c838aaa75c6c419 Mon Sep 17 00:00:00 2001 From: guy luz Date: Tue, 11 Sep 2018 19:11:23 +0300 Subject: [PATCH 6/8] Indent Indenting using sublime --- sizes.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/sizes.c b/sizes.c index f0a13d4..beec604 100644 --- a/sizes.c +++ b/sizes.c @@ -23,25 +23,25 @@ static const char *sizes[] = { "EiB", "PiB", "TiB", "GiB", "MiB", "KiB", "B" }; static const uint64_t exbibytes = 1024ULL * 1024ULL * 1024ULL * - 1024ULL * 1024ULL * 1024ULL; +1024ULL * 1024ULL * 1024ULL; void format_size(uint64_t size, char *result) { -uint64_t multiplier; -int i; - -multiplier = exbibytes; - -for (i = 0 ; i < DIM(sizes) ; i++, multiplier /= 1024) { - if (size < multiplier) - continue; - if (size % multiplier == 0) - sprintf(result, "%" PRIu64 " %s", size / multiplier, sizes[i]); - else - sprintf(result, "%.1f %s", (float) size / multiplier, sizes[i]); - return; -} - -strcpy(result, "0"); -return; + uint64_t multiplier; + int i; + + multiplier = exbibytes; + + for (i = 0 ; i < DIM(sizes) ; i++, multiplier /= 1024) { + if (size < multiplier) + continue; + if (size % multiplier == 0) + sprintf(result, "%" PRIu64 " %s", size / multiplier, sizes[i]); + else + sprintf(result, "%.1f %s", (float) size / multiplier, sizes[i]); + return; + } + + strcpy(result, "0"); + return; } From 7a0ea38b535f4d72b682434c07824938ff843b72 Mon Sep 17 00:00:00 2001 From: guy luz Date: Tue, 11 Sep 2018 19:11:55 +0300 Subject: [PATCH 7/8] Indent Indenting using sublime --- sizes.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/sizes.h b/sizes.h index 0408c6c..68c69b7 100644 --- a/sizes.h +++ b/sizes.h @@ -1,16 +1,13 @@ /* Copyright (C) 2016 Xfennec, CQFD Corp. - This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License along with this program. If not, see . */ From ca8715c3b448b073f38f132efb96473d202ccce4 Mon Sep 17 00:00:00 2001 From: guy luz Date: Tue, 11 Sep 2018 19:18:13 +0300 Subject: [PATCH 8/8] Indent Indenting using sublime --- progress.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/progress.c b/progress.c index 2810f37..da32ce7 100644 --- a/progress.c +++ b/progress.c @@ -133,7 +133,7 @@ signed char is_ignored_file(char *str) if (!strcmp(ignore_file_list[i], str)) return 1; return 0; - } +} #ifdef __APPLE__ int find_pid_by_id(pid_t pid, pidinfo_t *pid_list)