#include "alloc-util.h"
#include "escape.h"
#include "extract-word.h"
+#include "fd-util.h"
#include "fileio.h"
#include "gunicode.h"
#include "locale-util.h"
STATE_CSI,
STATE_CSO,
} state = STATE_OTHER;
- char *obuf = NULL;
+ _cleanup_free_ char *obuf = NULL;
+ _cleanup_fclose_ FILE *f = NULL;
size_t osz = 0, isz, shift[2] = {}, n_carriage_returns = 0;
- FILE *f;
assert(ibuf);
assert(*ibuf);
}
}
- if (fflush_and_check(f) < 0) {
- fclose(f);
- return mfree(obuf);
- }
- fclose(f);
+ if (fflush_and_check(f) < 0)
+ return NULL;
+
+ f = safe_fclose(f);
+
+ if (!obuf)
+ return NULL;
free_and_replace(*ibuf, obuf);
mf = safe_fclose(mf);
+ if (!buf)
+ return bus_log_parse_error(ENOMEM);
+
z = set_get(members, &((Member) {
.type = "property",
.interface = m->interface,
f = safe_fclose(f);
+ if (!dump)
+ return -ENOMEM;
+
*ret = TAKE_PTR(dump);
return 0;
if (errno > 0)
return -errno;
+ if (!buffer)
+ return -ENOMEM;
+
*open_fds = TAKE_PTR(buffer);
return 0;
return r;
f = safe_fclose(f);
+
+ if (!url)
+ return -ENOMEM;
+
*ret_url = TAKE_PTR(url);
return 0;
}
return r;
i->f = safe_fclose(i->f);
+
+ if (!i->introspection)
+ return -ENOMEM;
+
*ret = TAKE_PTR(i->introspection);
return 0;
char *bus_match_to_string(struct bus_match_component *components, size_t n_components) {
_cleanup_free_ char *buffer = NULL;
+ _cleanup_fclose_ FILE *f = NULL;
size_t size = 0;
int r;
assert(components);
- FILE *f = open_memstream_unlocked(&buffer, &size);
+ f = open_memstream_unlocked(&buffer, &size);
if (!f)
return NULL;
}
r = fflush_and_check(f);
- safe_fclose(f);
if (r < 0)
return NULL;
+
+ f = safe_fclose(f);
+
return TAKE_PTR(buffer);
}
int network_format(Network *network, char **ret) {
_cleanup_free_ char *s = NULL;
+ _cleanup_fclose_ FILE *f = NULL;
size_t sz = 0;
int r;
assert(network);
assert(ret);
- {
- _cleanup_fclose_ FILE *f = NULL;
-
- f = open_memstream_unlocked(&s, &sz);
- if (!f)
- return -ENOMEM;
+ f = open_memstream_unlocked(&s, &sz);
+ if (!f)
+ return -ENOMEM;
- network_dump(network, f);
+ network_dump(network, f);
- /* Add terminating 0, so that the output buffer is a valid string. */
- fputc('\0', f);
+ /* Add terminating 0, so that the output buffer is a valid string. */
+ fputc('\0', f);
- r = fflush_and_check(f);
- }
+ r = fflush_and_check(f);
if (r < 0)
return r;
- assert(s);
+ f = safe_fclose(f);
+
+ if (!s)
+ return -ENOMEM;
+
*ret = TAKE_PTR(s);
assert(sz > 0);
return (int) sz - 1;
int netdev_format(NetDev *netdev, char **ret) {
_cleanup_free_ char *s = NULL;
+ _cleanup_fclose_ FILE *f = NULL;
size_t sz = 0;
int r;
assert(netdev);
assert(ret);
- {
- _cleanup_fclose_ FILE *f = NULL;
-
- f = open_memstream_unlocked(&s, &sz);
- if (!f)
- return -ENOMEM;
+ f = open_memstream_unlocked(&s, &sz);
+ if (!f)
+ return -ENOMEM;
- netdev_dump(netdev, f);
+ netdev_dump(netdev, f);
- /* Add terminating 0, so that the output buffer is a valid string. */
- fputc('\0', f);
+ /* Add terminating 0, so that the output buffer is a valid string. */
+ fputc('\0', f);
- r = fflush_and_check(f);
- }
+ r = fflush_and_check(f);
if (r < 0)
return r;
- assert(s);
+ f = safe_fclose(f);
+
+ if (!s)
+ return -ENOMEM;
+
*ret = TAKE_PTR(s);
assert(sz > 0);
return (int) sz - 1;
int link_format(Link *link, char **ret) {
_cleanup_free_ char *s = NULL;
+ _cleanup_fclose_ FILE *f = NULL;
size_t sz = 0;
int r;
assert(link);
assert(ret);
- {
- _cleanup_fclose_ FILE *f = NULL;
-
- f = open_memstream_unlocked(&s, &sz);
- if (!f)
- return -ENOMEM;
+ f = open_memstream_unlocked(&s, &sz);
+ if (!f)
+ return -ENOMEM;
- link_dump(link, f);
+ link_dump(link, f);
- /* Add terminating 0, so that the output buffer is a valid string. */
- fputc('\0', f);
+ /* Add terminating 0, so that the output buffer is a valid string. */
+ fputc('\0', f);
- r = fflush_and_check(f);
- }
+ r = fflush_and_check(f);
if (r < 0)
return r;
- assert(s);
+ f = safe_fclose(f);
+
+ if (!s)
+ return -ENOMEM;
+
*ret = TAKE_PTR(s);
assert(sz > 0);
return (int) sz - 1;
f = safe_fclose(f);
+ if (!dump)
+ return -ENOMEM;
+
*ret = TAKE_PTR(dump);
return 0;
}
if (r < 0)
return r;
+ f = safe_fclose(f);
+
+ if (!dump)
+ return -ENOMEM;
+
return log_dump(LOG_INFO, dump);
}
}
r = fflush_and_check(f);
- f = safe_fclose(f); /* sig_data may be reallocated when f is closed. */
if (r < 0)
return r;
+ f = safe_fclose(f); /* sig_data may be reallocated when f is closed. */
+
+ if (!sig_data)
+ return -ENOMEM;
+
*ret_sig_data = TAKE_PTR(sig_data);
*ret_sig_size = sig_size;
return 0;
if (fflush_and_check(f) < 0)
return log_oom();
+ f = safe_fclose(f);
+
+ if (!buffer)
+ return -ENOMEM;
+
log_dump(LOG_INFO, buffer);
return 0;
}
dump_file = safe_fclose(dump_file);
+ if (!dump)
+ return -ENOMEM;
+
fd = acquire_data_fd(dump, dump_size, 0);
if (fd < 0)
return fd;
#include "alloc-util.h"
#include "calendarspec.h"
#include "errno-util.h"
+#include "fd-util.h"
#include "fileio.h"
#include "macro.h"
#include "parse-util.h"
}
int calendar_spec_to_string(const CalendarSpec *c, char **p) {
- char *buf = NULL;
+ _cleanup_free_ char *buf = NULL;
+ _cleanup_fclose_ FILE *f = NULL;
size_t sz = 0;
- FILE *f;
int r;
assert(c);
}
r = fflush_and_check(f);
- fclose(f);
-
- if (r < 0) {
- free(buf);
+ if (r < 0)
return r;
- }
- *p = buf;
+ f = safe_fclose(f);
+
+ if (!buf)
+ return -ENOMEM;
+
+ *p = TAKE_PTR(buf);
return 0;
}
return log_warning_errno(r, "Could not parse core file, flushing file buffer failed: %m");
c.f = safe_fclose(c.f);
+
+ if (!buf)
+ return log_oom();
+
*ret = TAKE_PTR(buf);
}
+
if (ret_package_metadata)
*ret_package_metadata = TAKE_PTR(package_metadata);
return log_warning_errno(r, "Could not parse ELF file, flushing file buffer failed: %m");
c.f = safe_fclose(c.f);
+
+ if (!buf)
+ return log_oom();
+
*ret = TAKE_PTR(buf);
}
+
if (ret_package_metadata)
*ret_package_metadata = TAKE_PTR(elf_metadata);
f = safe_fclose(f);
+ if (!buf)
+ return -ENOMEM;
+
*ret = TAKE_PTR(buf);
return 0;
int json_variant_format(JsonVariant *v, JsonFormatFlags flags, char **ret) {
_cleanup_free_ char *s = NULL;
+ _cleanup_fclose_ FILE *f = NULL;
size_t sz = 0;
int r;
if (flags & JSON_FORMAT_OFF)
return -ENOEXEC;
- {
- _cleanup_fclose_ FILE *f = NULL;
-
- f = open_memstream_unlocked(&s, &sz);
- if (!f)
- return -ENOMEM;
+ f = open_memstream_unlocked(&s, &sz);
+ if (!f)
+ return -ENOMEM;
- r = json_variant_dump(v, flags, f, NULL);
- if (r < 0)
- return r;
+ r = json_variant_dump(v, flags, f, NULL);
+ if (r < 0)
+ return r;
- /* Add terminating 0, so that the output buffer is a valid string. */
- fputc('\0', f);
+ /* Add terminating 0, so that the output buffer is a valid string. */
+ fputc('\0', f);
- r = fflush_and_check(f);
- }
+ r = fflush_and_check(f);
if (r < 0)
return r;
- assert(s);
+ f = safe_fclose(f);
+
+ if (!s)
+ return -ENOMEM;
+
*ret = TAKE_PTR(s);
assert(sz > 0);
return (int) sz - 1;