Use _GNU_SOURCE so we can use easy basename() function
authorJonathan Dieter <jdieter@gmail.com>
Thu, 26 Jul 2018 13:54:58 +0000 (14:54 +0100)
committerJonathan Dieter <jdieter@gmail.com>
Thu, 26 Jul 2018 13:54:58 +0000 (14:54 +0100)
Signed-off-by: Jonathan Dieter <jdieter@gmail.com>
src/unzck.c
src/zck.c
src/zck_dl.c

index ee71f5e7a628630bf1d7fa6e98978c40f6bb86c5..efafb53623e90dfdde3c8762f6d9d9fa0710b326 100644 (file)
@@ -24,6 +24,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#define _GNU_SOURCE
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -111,9 +113,9 @@ int main (int argc, char *argv[]) {
         perror("");
         exit(1);
     }
-
-    char *out_name = malloc(strlen(arguments.args[0]) - 3);
-    snprintf(out_name, strlen(arguments.args[0]) - 3, "%s", arguments.args[0]);
+    char *base_name = basename(arguments.args[0]);
+    char *out_name = malloc(strlen(base_name) - 3);
+    snprintf(out_name, strlen(base_name) - 3, "%s", base_name);
 
     int dst_fd = STDOUT_FILENO;
     if(!arguments.stdout) {
index cf48ab97bf6d6ffe29b2d614fc07f1e61a21df7a..92a0e2a087d2c53eed73bbbe642da6af3775c768 100644 (file)
--- a/src/zck.c
+++ b/src/zck.c
@@ -24,6 +24,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#define _GNU_SOURCE
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -118,10 +120,9 @@ int main (int argc, char *argv[]) {
 
     zck_set_log_level(arguments.log_level);
 
-    char *out_name;
-    out_name = malloc(strlen(arguments.args[0]) + 5);
-    snprintf(out_name, strlen(arguments.args[0]) + 5, "%s.zck",
-             arguments.args[0]);
+    char *base_name = basename(arguments.args[0]);
+    char *out_name = malloc(strlen(base_name) + 5);
+    snprintf(out_name, strlen(base_name) + 5, "%s.zck", base_name);
 
     /* Set dictionary if available */
     char *dict = NULL;
index d2bc20fb23369b57be0218b35a3c62cf0c407991..93bdc5af84edc7bd9cdb0fb2f892e1d2af8f336f 100644 (file)
@@ -24,6 +24,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#define _GNU_SOURCE
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -32,7 +34,6 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
-#include <libgen.h>
 #include <errno.h>
 #include <argp.h>
 #include <zck.h>
@@ -300,13 +301,10 @@ int main (int argc, char *argv[]) {
         exit(10);
     }
 
-    char *outname_full = calloc(1, strlen(arguments.args[0])+1);
-    memcpy(outname_full, arguments.args[0], strlen(arguments.args[0]));
-    char *outname = basename(outname_full);
+    char *outname = basename(arguments.args[0]);
     int dst_fd = open(outname, O_RDWR | O_CREAT, 0644);
     if(dst_fd < 0) {
         printf("Unable to open %s: %s\n", outname, strerror(errno));
-        free(outname_full);
         exit(10);
     }
     zckCtx *zck_tgt = zck_create();
@@ -447,7 +445,6 @@ int main (int argc, char *argv[]) {
             break;
     }
 out:
-    free(outname_full);
     zck_dl_free(&dl);
     zck_free(&zck_tgt);
     zck_free(&zck_src);