52 lines
1.9 KiB
Plaintext
52 lines
1.9 KiB
Plaintext
$OpenBSD: patch-i3-config-wizard_main_c,v 1.4 2012/03/22 09:53:50 dcoppa Exp $
|
||
|
||
Bugfix: fix a memory leak
|
||
(upstream git commit b3e3ecf722abc6540a5a975a4e643c7d207d356f)
|
||
|
||
Bugfix: keep the indentation of config.keycodes
|
||
(upstream git commit 4f148501736d9b58c6ba113af2df82e1c7e3decb)
|
||
|
||
--- i3-config-wizard/main.c.orig Fri Jan 27 20:24:09 2012
|
||
+++ i3-config-wizard/main.c Thu Mar 22 10:10:20 2012
|
||
@@ -280,6 +280,7 @@ static void finish() {
|
||
FILE *ks_config = fopen(config_path, "w");
|
||
if (ks_config == NULL)
|
||
err(1, "Could not open output config file \"%s\"", config_path);
|
||
+ free(config_path);
|
||
|
||
char *line = NULL;
|
||
size_t len = 0;
|
||
@@ -299,7 +300,9 @@ static void finish() {
|
||
#if defined(__APPLE__)
|
||
while ((line = fgetln(kc_config, &len)) != NULL) {
|
||
#else
|
||
- while ((read = getline(&line, &len, kc_config)) != -1) {
|
||
+ size_t linecap = 0;
|
||
+ while ((read = getline(&line, &linecap, kc_config)) != -1) {
|
||
+ len = strlen(line);
|
||
#endif
|
||
/* skip the warning block at the beginning of the input file */
|
||
if (head_of_file &&
|
||
@@ -310,8 +313,11 @@ static void finish() {
|
||
|
||
/* Skip leading whitespace */
|
||
char *walk = line;
|
||
- while (isspace(*walk) && walk < (line + len))
|
||
+ while (isspace(*walk) && walk < (line + len)) {
|
||
+ /* Pre-output the skipped whitespaces to keep proper indentation */
|
||
+ fputc(*walk, ks_config);
|
||
walk++;
|
||
+ }
|
||
|
||
/* Set the modifier the user chose */
|
||
if (strncmp(walk, "set $mod ", strlen("set $mod ")) == 0) {
|
||
@@ -324,7 +330,7 @@ static void finish() {
|
||
/* Check for 'bindcode'. If it’s not a bindcode line, we
|
||
* just copy it to the output file */
|
||
if (strncmp(walk, "bindcode", strlen("bindcode")) != 0) {
|
||
- fputs(line, ks_config);
|
||
+ fputs(walk, ks_config);
|
||
continue;
|
||
}
|
||
char *result = rewrite_binding(walk);
|