diff -Nuar --exclude '*~' --exclude '*.orig' --exclude Makefile cancd-0.1.0/cancd.c cancd-0.1.0.new/cancd.c
--- cancd-0.1.0/cancd.c	2005-08-18 11:47:48.000000000 -0700
+++ cancd-0.1.0.new/cancd.c	2006-03-17 17:09:46.402025517 -0800
@@ -199,7 +199,7 @@
     char *path;
 };
 
-static int make_tree(const char *path, int mode)
+static int make_tree(const char *path, mode_t mode)
 {
     struct stat stat_buf;
     char *ptr, *tmp;
@@ -319,7 +319,7 @@
 static int open_socket()
 {
     int rc;
-    struct sockaddr_in servaddr = {0, };
+    struct sockaddr_in servaddr;
 
     sock_fd = socket(PF_INET, SOCK_DGRAM, 0);
     if (sock_fd < 0)
@@ -438,7 +438,7 @@
     int rc;
     static int block = 1;
 
-    rc = recvfrom(sock_fd, buf, bufsize, 0,
+    rc = recvfrom(fd, buf, bufsize, 0,
                   (struct sockaddr *)from, fromlen);
     if (rc < 0)
     {
@@ -569,7 +569,7 @@
 
 static int valid_format()
 {
-    struct in_addr addr = {0, };
+    struct in_addr addr;
     char *name;
     int rc;
 
@@ -599,9 +599,11 @@
     exit(rc);
 }
 
+/*
 extern char *optarg;
 extern int optopt;
 extern int opterr;
+*/
 static int parse_options(int argc, char *argv[])
 {
     int c;
@@ -641,11 +643,11 @@
                             optarg);
                     print_usage(-EINVAL);
                 }
-                log_prefix = optarg;
+                log_prefix = strdup(optarg);
                 break;
 
             case 'o':
-                log_format = optarg;
+                log_format = strdup(optarg);
                 if (!log_format || !*log_format || !valid_format())
                 {
                     fprintf(stderr,
