]> git.sur5r.net Git - i3/i3/commitdiff
i3-config-wizard: use fgetln on Darwin, use strndup from FreeBSD on Darwin (Thanks...
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 17 Jul 2011 13:21:57 +0000 (15:21 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 17 Jul 2011 13:21:57 +0000 (15:21 +0200)
i3-config-wizard/main.c

index d32e6d56fb783a08f8aa9de63de0bbf9da6b147a..db4b623e4c02dd7b9c499079f17acee9c68eeb26 100644 (file)
@@ -73,6 +73,30 @@ Display *dpy;
 char *rewrite_binding(const char *bindingline);
 static void finish();
 
+#if defined(__APPLE__)
+
+/*
+ * Taken from FreeBSD
+ * Returns a pointer to a new string which is a duplicate of the
+ * string, but only copies at most n characters.
+ *
+ */
+char *strndup(const char *str, size_t n) {
+    size_t len;
+    char *copy;
+
+    for (len = 0; len < n && str[len]; len++)
+        continue;
+
+    if ((copy = malloc(len + 1)) == NULL)
+        return (NULL);
+    memcpy(copy, str, len);
+    copy[len] = '\0';
+    return (copy);
+}
+
+#endif
+
 /*
  * This function resolves ~ in pathnames.
  * It may resolve wildcards in the first part of the path, but if no match
@@ -266,7 +290,9 @@ static void finish() {
 
     char *line = NULL;
     size_t len = 0;
+#if !defined(__APPLE__)
     ssize_t read;
+#endif
     bool head_of_file = true;
 
     /* write a header about auto-generation to the output file */
@@ -277,7 +303,11 @@ static void finish() {
     fputs("# this file and re-run i3-config-wizard(1).\n", ks_config);
     fputs("#\n", ks_config);
 
+#if defined(__APPLE__)
+    while ((line = fgetln(kc_config, &len)) != NULL) {
+#else
     while ((read = getline(&line, &len, kc_config)) != -1) {
+#endif
         /* skip the warning block at the beginning of the input file */
         if (head_of_file &&
             strncmp("# WARNING", line, strlen("# WARNING")) == 0)