diff --git a/src/process_group.c b/src/process_group.c index 910520b..7fae2c5 100644 --- a/src/process_group.c +++ b/src/process_group.c @@ -61,25 +61,14 @@ pid_t find_process_by_name(char *process_name) struct process_iterator it; struct process proc; struct process_filter filter; - static char process_basename[PATH_MAX + 1]; - static char command_basename[PATH_MAX + 1]; - strncpy(process_basename, basename(process_name), - sizeof(process_basename) - 1); - process_basename[sizeof(process_basename) - 1] = '\0'; + const char *process_basename = basename(process_name); filter.pid = 0; filter.include_children = 0; init_process_iterator(&it, &filter); while (get_next_process(&it, &proc) != -1) { - int cmp_len; - strncpy(command_basename, basename(proc.command), - sizeof(command_basename) - 1); - command_basename[sizeof(command_basename) - 1] = '\0'; - cmp_len = proc.max_cmd_len - - (strlen(proc.command) - strlen(command_basename)); /* process found */ - if (cmp_len > 0 && command_basename[0] != '\0' && - strncmp(command_basename, process_basename, cmp_len) == 0) + if (strcmp(basename(proc.command), process_basename) == 0) { if (pid < 0) { diff --git a/src/process_iterator.h b/src/process_iterator.h index 610de6b..ba5626b 100644 --- a/src/process_iterator.h +++ b/src/process_iterator.h @@ -57,9 +57,6 @@ struct process /* Absolute path of the executable file */ char command[PATH_MAX + 1]; - - /* Maximum command length */ - int max_cmd_len; }; /** diff --git a/src/process_iterator_apple.c b/src/process_iterator_apple.c index cb07fc0..f5b5960 100644 --- a/src/process_iterator_apple.c +++ b/src/process_iterator_apple.c @@ -99,7 +99,6 @@ static void pti2proc(struct proc_taskallinfo *ti, struct process *process) process->ppid = ti->pbsd.pbi_ppid; process->cputime = ti->ptinfo.pti_total_user / 1e6 + ti->ptinfo.pti_total_system / 1e6; proc_pidpath(ti->pbsd.pbi_pid, process->command, sizeof(process->command)); - process->max_cmd_len = sizeof(process->command) - 1; } static int get_process_pti(pid_t pid, struct proc_taskallinfo *ti) diff --git a/src/process_iterator_freebsd.c b/src/process_iterator_freebsd.c index 2ec5b3e..bf63814 100644 --- a/src/process_iterator_freebsd.c +++ b/src/process_iterator_freebsd.c @@ -59,14 +59,15 @@ int init_process_iterator(struct process_iterator *it, struct process_filter *fi static void kproc2proc(kvm_t *kd, struct kinfo_proc *kproc, struct process *proc) { char **args; + size_t len_max; proc->pid = kproc->ki_pid; proc->ppid = kproc->ki_ppid; - proc->cputime = kproc->ki_runtime / 1000.0; - proc->max_cmd_len = sizeof(proc->command) - 1; - if ((args = kvm_getargv(kd, kproc, sizeof(proc->command))) != NULL) + proc->cputime = kproc->ki_runtime / 1000; + len_max = sizeof(proc->command); + if ((args = kvm_getargv(kd, kproc, len_max)) != NULL) { - strncpy(proc->command, args[0], proc->max_cmd_len); - proc->command[proc->max_cmd_len] = '\0'; + strncpy(proc->command, args[0], len_max); + proc->command[len_max] = '\0'; } else { diff --git a/src/process_iterator_linux.c b/src/process_iterator_linux.c index b674131..3841eaf 100644 --- a/src/process_iterator_linux.c +++ b/src/process_iterator_linux.c @@ -82,10 +82,6 @@ static int read_process_info(pid_t pid, struct process *p) { ret = -1; } - else - { - p->max_cmd_len = sizeof(p->command) - 1; - } fclose(fd); } else diff --git a/tests/process_iterator_test.c b/tests/process_iterator_test.c index 569ab8f..a496374 100644 --- a/tests/process_iterator_test.c +++ b/tests/process_iterator_test.c @@ -203,7 +203,6 @@ static void test_process_name(void) struct process_filter filter; static char command_basename[PATH_MAX + 1]; static char process_basename[PATH_MAX + 1]; - int cmp_len; filter.pid = getpid(); filter.include_children = 0; init_process_iterator(&it, &filter); @@ -214,8 +213,7 @@ static void test_process_name(void) command_basename[sizeof(command_basename) - 1] = '\0'; strncpy(process_basename, basename(process.command), sizeof(process_basename) - 1); process_basename[sizeof(process_basename) - 1] = '\0'; - cmp_len = process.max_cmd_len - (strlen(process.command) - strlen(process_basename)); - assert(strncmp(command_basename, process_basename, cmp_len) == 0); + assert(strcmp(command_basename, process_basename) == 0); assert(get_next_process(&it, &process) != 0); close_process_iterator(&it); }