aboutsummaryrefslogtreecommitdiffstats
path: root/swaynag
diff options
context:
space:
mode:
authorLibravatar Ian Fan <ianfan0@gmail.com>2018-12-09 12:09:11 +0000
committerLibravatar Ian Fan <ianfan0@gmail.com>2019-01-01 09:01:25 +0000
commita82b8a3c14e45697708e57f8cb27a8fc6cf31839 (patch)
tree5e30327566fb6f30bd6d319f7b8a96226683e986 /swaynag
parentstringop.c: rewrite strip_whitespace (diff)
downloadsway-a82b8a3c14e45697708e57f8cb27a8fc6cf31839.tar.gz
sway-a82b8a3c14e45697708e57f8cb27a8fc6cf31839.tar.zst
sway-a82b8a3c14e45697708e57f8cb27a8fc6cf31839.zip
Remove readline.c
All occurrences of read_line have been replaced by getline. peek_line has been absorbed into detect_brace.
Diffstat (limited to 'swaynag')
-rw-r--r--swaynag/config.c62
1 files changed, 24 insertions, 38 deletions
diff --git a/swaynag/config.c b/swaynag/config.c
index e724aa0c..85aa380a 100644
--- a/swaynag/config.c
+++ b/swaynag/config.c
@@ -1,10 +1,10 @@
1#define _POSIX_C_SOURCE 200809L 1#define _POSIX_C_SOURCE 200809L
2#include <getopt.h> 2#include <getopt.h>
3#include <stdio.h>
3#include <stdlib.h> 4#include <stdlib.h>
4#include <wordexp.h> 5#include <wordexp.h>
5#include "log.h" 6#include "log.h"
6#include "list.h" 7#include "list.h"
7#include "readline.h"
8#include "swaynag/swaynag.h" 8#include "swaynag/swaynag.h"
9#include "swaynag/types.h" 9#include "swaynag/types.h"
10#include "util.h" 10#include "util.h"
@@ -12,21 +12,19 @@
12 12
13static char *read_from_stdin(void) { 13static char *read_from_stdin(void) {
14 char *buffer = NULL; 14 char *buffer = NULL;
15 while (!feof(stdin)) { 15 size_t buffer_len = 0;
16 char *line = read_line(stdin); 16 char *line = NULL;
17 if (!line) { 17 size_t line_size = 0;
18 continue; 18 ssize_t nread;
19 } 19 while ((nread = getline(&line, &line_size, stdin)) != -1) {
20 20 buffer = realloc(buffer, buffer_len + nread);
21 size_t curlen = buffer ? strlen(buffer) : 0; 21 snprintf(&buffer[buffer_len], nread + 1, "%s", line);
22 buffer = realloc(buffer, curlen + strlen(line) + 2); 22 buffer_len += nread;
23 snprintf(buffer + curlen, strlen(line) + 2, "%s\n", line);
24
25 free(line);
26 } 23 }
24 free(line);
27 25
28 while (buffer && buffer[strlen(buffer) - 1] == '\n') { 26 while (buffer && buffer[buffer_len - 1] == '\n') {
29 buffer[strlen(buffer) - 1] = '\0'; 27 buffer[--buffer_len] = '\0';
30 } 28 }
31 29
32 return buffer; 30 return buffer;
@@ -348,32 +346,24 @@ int swaynag_load_config(char *path, struct swaynag *swaynag, list_t *types) {
348 type->name = strdup("<config>"); 346 type->name = strdup("<config>");
349 list_add(types, type); 347 list_add(types, type);
350 348
351 char *line; 349 char *line = NULL;
350 size_t line_size = 0;
351 ssize_t nread;
352 int line_number = 0; 352 int line_number = 0;
353 while (!feof(config)) { 353 int result = 0;
354 line = read_line(config); 354 while ((nread = getline(&line, &line_size, config)) != -1) {
355 if (!line) {
356 continue;
357 }
358
359 line_number++; 355 line_number++;
360 if (line[0] == '#') { 356 if (!*line || line[0] == '\n' || line[0] == '#') {
361 free(line);
362 continue;
363 }
364 if (strlen(line) == 0) {
365 free(line);
366 continue; 357 continue;
367 } 358 }
368 359
369 if (line[0] == '[') { 360 if (line[0] == '[') {
370 char *close = strchr(line, ']'); 361 char *close = strchr(line, ']');
371 if (!close) { 362 if (!close) {
372 free(line);
373 fclose(config);
374 fprintf(stderr, "Closing bracket not found on line %d\n", 363 fprintf(stderr, "Closing bracket not found on line %d\n",
375 line_number); 364 line_number);
376 return 1; 365 result = 1;
366 break;
377 } 367 }
378 char *name = calloc(1, close - line); 368 char *name = calloc(1, close - line);
379 strncat(name, line + 1, close - line - 1); 369 strncat(name, line + 1, close - line - 1);
@@ -385,21 +375,17 @@ int swaynag_load_config(char *path, struct swaynag *swaynag, list_t *types) {
385 } 375 }
386 free(name); 376 free(name);
387 } else { 377 } else {
388 char flag[strlen(line) + 3]; 378 char flag[nread + 3];
389 sprintf(flag, "--%s", line); 379 sprintf(flag, "--%s", line);
390 char *argv[] = {"swaynag", flag}; 380 char *argv[] = {"swaynag", flag};
391 int result;
392 result = swaynag_parse_options(2, argv, swaynag, types, type, 381 result = swaynag_parse_options(2, argv, swaynag, types, type,
393 NULL, NULL); 382 NULL, NULL);
394 if (result != 0) { 383 if (result != 0) {
395 free(line); 384 break;
396 fclose(config);
397 return result;
398 } 385 }
399 } 386 }
400
401 free(line);
402 } 387 }
388 free(line);
403 fclose(config); 389 fclose(config);
404 return 0; 390 return result;
405} 391}