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:
John Lindgren 2024-04-14 14:20:57 -04:00 committed by Johan Malm
parent 343918dee0
commit 0573f16693
12 changed files with 122 additions and 90 deletions

View file

@ -8,11 +8,13 @@
#ifndef LABWC_GRAB_FILE_H
#define LABWC_GRAB_FILE_H
#include "common/buf.h"
/**
* grab_file - read file into memory buffer
* @filename: file to read
* Returns pointer to buffer. Free with free().
* Free returned buffer with buf_reset().
*/
char *grab_file(const char *filename);
struct buf grab_file(const char *filename);
#endif /* LABWC_GRAB_FILE_H */