]> pd.if.org Git - zpackage/blobdiff - elf/soname.c
remove stray debug fprintf
[zpackage] / elf / soname.c
index 72d465ade86ba66398fd209251b80e9ad7055151..8618152402d38c69c4240526d9b96a39f0162771 100644 (file)
@@ -9,7 +9,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <elf.h>
+
+#include "elf.h"
 
 int main(int ac, char **av) {
        void *elfbase;
@@ -22,6 +23,11 @@ int main(int ac, char **av) {
        char *name, *dynname;
        Elf64_Dyn *dent;
 
+       if (ac < 2) {
+               fprintf(stderr, "usage: soname <file>\n");
+               exit(EXIT_FAILURE);
+       }
+
        if (lstat(av[1], &sbuf) == -1) {
                exit(1);
        }
@@ -41,7 +47,7 @@ int main(int ac, char **av) {
                exit(1);
        }
        /* not at least the size of the elf header? */
-       if (sbuf.st_size < sizeof(Elf64_Ehdr)) {
+       if ((size_t)sbuf.st_size < sizeof(Elf64_Ehdr)) {
                exit(1);
        }
 
@@ -112,9 +118,10 @@ int main(int ac, char **av) {
        for (dent = (Elf64_Dyn *)((char *)elfbase + dynsect->sh_offset); dent->d_tag != DT_NULL; dent++) {
                if (dent->d_tag == DT_SONAME) {
                        printf("%s\n", dynname + dent->d_un.d_val);
-                       break;
+                       /* TODO can there be more than one? */
+                       exit(0);
                }
        }
 
-       return 0;
+       return 11;
 }