X-Git-Url: http://git.tdb.fi/?p=pmount-gui.git;a=blobdiff_plain;f=main.c;h=76632ab3d50b056063beea31e4a9061c7ea9609e;hp=dd6957dc22f3c41a723fea0c9ff12e7e6035c149;hb=14e76463c6431e7d3f5aca988c283e5cb65c1190;hpb=55a7d4e8fe6b4cc1d02637f19e7245afbcbdb41b diff --git a/main.c b/main.c index dd6957d..76632ab 100644 --- a/main.c +++ b/main.c @@ -83,6 +83,7 @@ the array. */ Property *get_device_properties(char *node) { + static const char *udevadm_path = NULL; int pid; int pipe_fd[2]; char *buf; @@ -92,6 +93,21 @@ Property *get_device_properties(char *node) Property *props = NULL; int n_props = 0; + if(!udevadm_path) + { + udevadm_path = "/bin/udevadm"; + if(access(udevadm_path, X_OK)<0) + { + udevadm_path = "/sbin/udevadm"; + if(access(udevadm_path, X_OK)<0) + { + udevadm_path = NULL; + perror("Unable to find udevadm"); + return NULL; + } + } + } + pipe(pipe_fd); pid = fork(); @@ -104,7 +120,9 @@ Property *get_device_properties(char *node) close(pipe_fd[0]); dup2(pipe_fd[1], 1); - execl("/sbin/udevadm", "udevadm", "info", "-q", "property", "-n", node, NULL); + if(execl(udevadm_path, "udevadm", "info", "-q", "property", "-n", node, NULL)<0) + fprintf(stderr, "Unable to execute %s: %s\n", udevadm_path, strerror(errno)); + _exit(1); } else if(pid<0) @@ -524,7 +542,6 @@ Device *get_devices(void) char **nodes = NULL; Device *devices = NULL; int n_devices = 0; - char **mounted = NULL; char **fstab = NULL; int i; @@ -543,6 +560,7 @@ Device *get_devices(void) { if(verbosity>=2) printf(" No properties\n"); + free(nodes[i]); continue; } @@ -608,7 +626,7 @@ Device *get_devices(void) } free(nodes); - free_string_array(mounted); + free_string_array(fstab); if(devices) { @@ -1023,7 +1041,7 @@ gboolean inotify_event_available(GIOChannel *source, GIOCondition condition, gpo void show_help(void) { printf("pmount-gui\n" - "Copyright (c) 2011-2015 Mikko Rasa, Mikkosoft Productions\n\n" + "Copyright (c) 2011-2016 Mikko Rasa, Mikkosoft Productions\n\n" "Usage: pmount-gui [-v] [-u] [-r ] [-m|-M] [-h] [-- ]\n\n" "Options:\n" " -v Increase verbosity\n" @@ -1045,6 +1063,7 @@ int main(int argc, char **argv) int opt; int umount = 0; int n_listed; + int i; context.manager = 0; context.autohide = 0;