-/* Copyright (C) 2018 Federico klez Culloca
+/* Copyright (C) 2018-2026 Federico klez Culloca
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
if(argc > 1) {
*message_rows = calloc(1, sizeof(char));
for(int i = 1; i < argc; i++) {
- *message_rows = realloc(*message_rows, sizeof(char) * ( strlen(*message_rows)
- + strlen(*(argv + i))
- + (i == 1 ? 0 : 1)));
+ size_t message_rows_length = strlen(*message_rows)
+ + strlen(*(argv+i))
+ + (i == 1 ? 0 : 1);
+ *message_rows = realloc(*message_rows, message_rows_length);
if(i != 1) {
- *message_rows = strcat(*message_rows, " ");
+ strlcat(*message_rows, " ", message_rows_length);
}
- *message_rows = strcat(*message_rows, *(argv + i));
+ strlcat(*message_rows, *(argv + i), message_rows_length);
}
rows = 1;
longest_line_size = strlen(*message_rows);
} else {
size_t line_length = 0;
- ssize_t nread;
char* line = NULL;
- while((nread = getline(&line, &line_length, stdin)) != -1) {
+ while(getline(&line, &line_length, stdin) != -1) {
if(rows + 1 >= buffer_size) {
buffer_size *= 2;
message_rows = realloc(message_rows, sizeof(char*) * buffer_size);
}
char *untabbed_line = tabstospaces(line, 4);
size_t untabbed_line_length = strlen(untabbed_line);
- message_rows[rows] = calloc(1 + untabbed_line_length, sizeof(char));
- strcpy(message_rows[rows], untabbed_line);
+ message_rows[rows] = calloc(untabbed_line_length + 1, sizeof(char));
+ strlcpy(message_rows[rows], untabbed_line, untabbed_line_length + 1);
message_rows[rows][strcspn(untabbed_line, "\n")] = 0;
rows++;
if(untabbed_line_length > longest_line_size) {
printline(longest_line_size + 2);
for (size_t i = 0; i < rows; i++) {
- printf("| %s%*s |\n", message_rows[i], longest_line_size - strlen(message_rows[i]), "");
+ printf("| %s%*s |\n", message_rows[i], longest_line_size - (u_int)strlen(message_rows[i]), "");
free(message_rows[i]);
}