#include "hostname-util.h"
#include "log.h"
#include "macro.h"
+#include "memstream-util.h"
#include "netif-naming-scheme.h"
#include "network-generator.h"
#include "parse-util.h"
}
int network_format(Network *network, char **ret) {
- _cleanup_free_ char *s = NULL;
- size_t sz = 0;
- int r;
+ _cleanup_(memstream_done) MemStream m = {};
+ FILE *f;
assert(network);
assert(ret);
- {
- _cleanup_fclose_ FILE *f = NULL;
-
- f = open_memstream_unlocked(&s, &sz);
- if (!f)
- return -ENOMEM;
-
- network_dump(network, f);
-
- /* Add terminating 0, so that the output buffer is a valid string. */
- fputc('\0', f);
+ f = memstream_init(&m);
+ if (!f)
+ return -ENOMEM;
- r = fflush_and_check(f);
- }
- if (r < 0)
- return r;
+ network_dump(network, f);
- assert(s);
- *ret = TAKE_PTR(s);
- assert(sz > 0);
- return (int) sz - 1;
+ return memstream_finalize(&m, ret, NULL);
}
int netdev_format(NetDev *netdev, char **ret) {
- _cleanup_free_ char *s = NULL;
- size_t sz = 0;
- int r;
+ _cleanup_(memstream_done) MemStream m = {};
+ FILE *f;
assert(netdev);
assert(ret);
- {
- _cleanup_fclose_ FILE *f = NULL;
-
- f = open_memstream_unlocked(&s, &sz);
- if (!f)
- return -ENOMEM;
-
- netdev_dump(netdev, f);
-
- /* Add terminating 0, so that the output buffer is a valid string. */
- fputc('\0', f);
+ f = memstream_init(&m);
+ if (!f)
+ return -ENOMEM;
- r = fflush_and_check(f);
- }
- if (r < 0)
- return r;
+ netdev_dump(netdev, f);
- assert(s);
- *ret = TAKE_PTR(s);
- assert(sz > 0);
- return (int) sz - 1;
+ return memstream_finalize(&m, ret, NULL);
}
int link_format(Link *link, char **ret) {
- _cleanup_free_ char *s = NULL;
- size_t sz = 0;
- int r;
+ _cleanup_(memstream_done) MemStream m = {};
+ FILE *f;
assert(link);
assert(ret);
- {
- _cleanup_fclose_ FILE *f = NULL;
-
- f = open_memstream_unlocked(&s, &sz);
- if (!f)
- return -ENOMEM;
-
- link_dump(link, f);
-
- /* Add terminating 0, so that the output buffer is a valid string. */
- fputc('\0', f);
+ f = memstream_init(&m);
+ if (!f)
+ return -ENOMEM;
- r = fflush_and_check(f);
- }
- if (r < 0)
- return r;
+ link_dump(link, f);
- assert(s);
- *ret = TAKE_PTR(s);
- assert(sz > 0);
- return (int) sz - 1;
+ return memstream_finalize(&m, ret, NULL);
}