summaryrefslogtreecommitdiffstats
path: root/common/readline.c
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2016-01-28 07:56:46 -0500
committerLibravatar Drew DeVault <sir@cmpwn.com>2016-01-28 07:57:07 -0500
commite5bb08cc185a28d3e96bfddc7e9a0d837f89b2b8 (patch)
tree9ff398260021962995dfcab5afbb082f4b23a9ba /common/readline.c
parentMerge pull request #480 from crondog/swaylocktrans2 (diff)
downloadsway-e5bb08cc185a28d3e96bfddc7e9a0d837f89b2b8.tar.gz
sway-e5bb08cc185a28d3e96bfddc7e9a0d837f89b2b8.tar.zst
sway-e5bb08cc185a28d3e96bfddc7e9a0d837f89b2b8.zip
Print /proc/<pid>/maps on segfault
Diffstat (limited to 'common/readline.c')
-rw-r--r--common/readline.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/common/readline.c b/common/readline.c
index e75b183f..76ed6926 100644
--- a/common/readline.c
+++ b/common/readline.c
@@ -3,7 +3,7 @@
3#include <stdio.h> 3#include <stdio.h>
4 4
5char *read_line(FILE *file) { 5char *read_line(FILE *file) {
6 int length = 0, size = 128; 6 size_t length = 0, size = 128;
7 char *string = malloc(size); 7 char *string = malloc(size);
8 if (!string) { 8 if (!string) {
9 return NULL; 9 return NULL;
@@ -37,3 +37,28 @@ char *read_line(FILE *file) {
37 string[length] = '\0'; 37 string[length] = '\0';
38 return string; 38 return string;
39} 39}
40
41char *read_line_buffer(FILE *file, char *string, size_t string_len) {
42 size_t length = 0;
43 if (!string) {
44 return NULL;
45 }
46 while (1) {
47 int c = getc(file);
48 if (c == EOF || c == '\n' || c == '\0') {
49 break;
50 }
51 if (c == '\r') {
52 continue;
53 }
54 string[length++] = c;
55 if (string_len <= length) {
56 return NULL;
57 }
58 }
59 if (length + 1 == string_len) {
60 return NULL;
61 }
62 string[length] = '\0';
63 return string;
64}