mirror of
https://github.com/labwc/labwc.git
synced 2026-04-09 08:21:18 -04:00
common: remove buf_init(), add BUF_INIT and buf_move()
Add a BUF_INIT macro, which makes it easier to initialize a struct buf to an empty string (without a heap allocation). Add buf_move() to move the contents of one struct buf to another (the source is reset to BUF_INIT, analogous to C++ move-assignment). Use buf_reset() instead of directly calling `free(s->buf)` since the internal buf may not always be allocated by malloc() now.
This commit is contained in:
parent
343918dee0
commit
0573f16693
12 changed files with 122 additions and 90 deletions
|
|
@ -10,18 +10,19 @@
|
|||
#include "common/buf.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
char *
|
||||
struct buf
|
||||
grab_file(const char *filename)
|
||||
{
|
||||
char *line = NULL;
|
||||
size_t len = 0;
|
||||
FILE *stream = fopen(filename, "r");
|
||||
if (!stream) {
|
||||
return NULL;
|
||||
return BUF_INIT;
|
||||
}
|
||||
struct buf buffer;
|
||||
buf_init(&buffer);
|
||||
struct buf buffer = BUF_INIT;
|
||||
while ((getline(&line, &len, stream) != -1)) {
|
||||
char *p = strrchr(line, '\n');
|
||||
if (p) {
|
||||
|
|
@ -31,5 +32,5 @@ grab_file(const char *filename)
|
|||
}
|
||||
free(line);
|
||||
fclose(stream);
|
||||
return buffer.buf;
|
||||
return buffer;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue