[ovs-dev] [PATCH 10/13] log: Support multiple magic.
Justin Pettit
jpettit at ovn.org
Sat Dec 23 23:41:50 UTC 2017
> On Dec 7, 2017, at 5:12 PM, Ben Pfaff <blp at ovn.org> wrote:
>
> diff --git a/ovsdb/log.c b/ovsdb/log.c
> index d25f766474dc..dd641884a2ee 100644
> --- a/ovsdb/log.c
> +++ b/ovsdb/log.c
>
> + /* Read the magic from the first log record. */
> + char header[128];
> + const char *actual_magic;
> + if (!fgets(header, sizeof header, stream)) {
> + if (ferror(stream)) {
> + error = ovsdb_io_error(errno, "%s: read error", name);
> + goto error_fclose;
> + }
> +
> + /* We need to be able to report what kind of file this is but we can't
> + * if it's empty and we accept more than one. */
> + if (strchr(magic, '|')) {
> + error = ovsdb_error(NULL, "%s: unexpected end of file", name);
An error message indicating that multiple magic values were provided to a new file seems like it might be more helpful.
> void
> ovsdb_log_close(struct ovsdb_log *file)
> {
> if (file) {
> ovsdb_error_destroy(file->error);
> free(file->name);
> + free(file->magic);
I think this should be added in the first patch of the series.
> static bool
> +parse_header(char *header, const char **magicp,
> + unsigned long int *length, uint8_t sha1[SHA1_DIGEST_SIZE])
Do you think it's worth pointing out that 'magic' is a pointer into 'header', so it shouldn't be freed? Also, it looks to be making modifications to 'header'.
> diff --git a/ovsdb/log.h b/ovsdb/log.h
> index cc8469c01e57..4b74ca11ce6a 100644
> --- a/ovsdb/log.h
> +++ b/ovsdb/log.h
>
> @@ -31,7 +31,7 @@ enum ovsdb_log_open_mode {
> OVSDB_LOG_CREATE /* Create or open file, read/write. */
> };
>
> -#define OVSDB_MAGIC "OVSDB JSON"
> +#define OVSDB_MAGIC "JSON"
It might be worth mentioning that "OVSDB " will be added to the definition.
--Justin
More information about the dev
mailing list